summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Redfern <tim@gray.(none)>2012-11-01 21:10:31 +0000
committerTim Redfern <tim@gray.(none)>2012-11-01 21:10:31 +0000
commitc31a609399c2e05a50a5df8be10049903521c9e7 (patch)
tree246c2c9a67ad0fc8b7473006d0763ab8bbf22675
initial commit
-rwxr-xr-xvfg/bin/data/MIDI_DeckTheHalls_Test.1.3.xml544
-rw-r--r--vfg/bin/data/MIDI_test.xml22
-rwxr-xr-xvfg/bin/data/VODA_MUS_DeckTheHalls-Backing_v.1.3.mp3bin0 -> 3957376 bytes
-rwxr-xr-xvfg/bin/data/VODA_MUS_DeckTheHalls-Melody_v.1.3.mp3bin0 -> 3957376 bytes
-rwxr-xr-xvfg/src/main.cpp16
-rwxr-xr-xvfg/src/music.cpp91
-rwxr-xr-xvfg/src/music.h55
-rwxr-xr-xvfg/src/testApp.cpp64
-rwxr-xr-xvfg/src/testApp.h56
-rwxr-xr-xvfg/vfg.cbp96
-rw-r--r--vfg/vfg.layout4
-rwxr-xr-xvfg/vfg.workspace9
12 files changed, 957 insertions, 0 deletions
diff --git a/vfg/bin/data/MIDI_DeckTheHalls_Test.1.3.xml b/vfg/bin/data/MIDI_DeckTheHalls_Test.1.3.xml
new file mode 100755
index 0000000..668f933
--- /dev/null
+++ b/vfg/bin/data/MIDI_DeckTheHalls_Test.1.3.xml
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<MidiFile SMFType="0" TrackChunkAmount="1" DeltaTimeTicks="480" TimeStamp="01/11/2012 13:08:22">
+ <TrackChunk Size="2385">
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TrackName" Data="03 0b 43 68 69 70 20 53 6f 75 6e 64 73" MetaId="03">Chip Sounds</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="InstrumentName" Data="04 0b 43 68 69 70 20 53 6f 75 6e 64 73" MetaId="04">Chip Sounds</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TimeSignature" Data="58 04 04 02 18 08" MetaId="58"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="KeySignature" Data="59 02 00 00" MetaId="59"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="Marker" Data="06 09 4d 61 72 6b 65 72 20 23 23" MetaId="06">Marker ##</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="&lt;unknown&gt;" Data="54 05 21 00 00 00 00" MetaId="54"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 08 e3 7c" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="24 01"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="80" Label="NoteOff" Data="24 46"/>
+ <Event DeltaTimeTicks="1920" Type="MIDI" Id="90" Label="NoteOn" Data="4f 4d"/>
+ <Event DeltaTimeTicks="512" Type="MIDI" Id="80" Label="NoteOff" Data="4f 46"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="90" Label="NoteOn" Data="4d 4d"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="80" Label="NoteOff" Data="4d 31"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="90" Label="NoteOn" Data="4c 5b"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="4c 46"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 40"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="4a 31"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="48 54"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 46"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="4a 4d"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="192" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="258" Type="MIDI" Id="80" Label="NoteOff" Data="4c 36"/>
+ <Event DeltaTimeTicks="222" Type="MIDI" Id="90" Label="NoteOn" Data="48 63"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="48 40"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="80" Label="NoteOff" Data="4c 5b"/>
+ <Event DeltaTimeTicks="128" Type="MIDI" Id="90" Label="NoteOn" Data="4d 6a"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="139" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="503" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="4a 5b"/>
+ <Event DeltaTimeTicks="95" Type="MIDI" Id="80" Label="NoteOff" Data="4a 6a"/>
+ <Event DeltaTimeTicks="145" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="47 6a"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="237" Type="MIDI" Id="80" Label="NoteOff" Data="47 6a"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="55" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="442" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="02"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="420" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="90" Label="NoteOn" Data="4d 5b"/>
+ <Event DeltaTimeTicks="127" Type="MIDI" Id="80" Label="NoteOff" Data="4d 4d"/>
+ <Event DeltaTimeTicks="113" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="311" Type="MIDI" Id="80" Label="NoteOff" Data="4c 6a"/>
+ <Event DeltaTimeTicks="169" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="297" Type="MIDI" Id="80" Label="NoteOff" Data="48 4d"/>
+ <Event DeltaTimeTicks="183" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="270" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="193" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="14" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="289" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="177" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="48 5b"/>
+ <Event DeltaTimeTicks="162" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="131" Type="MIDI" Id="80" Label="NoteOff" Data="4a 54"/>
+ <Event DeltaTimeTicks="109" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4c 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="80" Label="NoteOff" Data="4d 71"/>
+ <Event DeltaTimeTicks="115" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="544" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="81" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="304" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="47 71"/>
+ <Event DeltaTimeTicks="279" Type="MIDI" Id="80" Label="NoteOff" Data="47 78"/>
+ <Event DeltaTimeTicks="201" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="518" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="442" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="120" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 08 2c a2" MetaId="51"/>
+ <Event DeltaTimeTicks="341" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="259" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="97" Type="MIDI" Id="80" Label="NoteOff" Data="4c 54"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="291" Type="MIDI" Id="80" Label="NoteOff" Data="4d 78"/>
+ <Event DeltaTimeTicks="172" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="80" Label="NoteOff" Data="4a 4d"/>
+ <Event DeltaTimeTicks="216" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="556" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7c"/>
+ <Event DeltaTimeTicks="164" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="80" Label="NoteOff" Data="4d 5b"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="287" Type="MIDI" Id="80" Label="NoteOff" Data="4f 78"/>
+ <Event DeltaTimeTicks="174" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="312" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="153" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="111" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="129" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="140" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="345" Type="MIDI" Id="80" Label="NoteOff" Data="4f 5b"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="53 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="53 54"/>
+ <Event DeltaTimeTicks="105" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="19"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="90" Label="NoteOn" Data="54 78"/>
+ <Event DeltaTimeTicks="28" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="301" Type="MIDI" Id="80" Label="NoteOff" Data="54 71"/>
+ <Event DeltaTimeTicks="151" Type="MIDI" Id="90" Label="NoteOn" Data="53 78"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="547" Type="MIDI" Id="80" Label="NoteOff" Data="53 6a"/>
+ <Event DeltaTimeTicks="158" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="94" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="140" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="444" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="48" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7f"/>
+ <Event DeltaTimeTicks="424" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="51" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="423" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="246" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="2" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="370" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="317" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="350" Type="MIDI" Id="80" Label="NoteOff" Data="48 6a"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="342" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="36" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="306" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="138" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="435" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="90" Label="NoteOn" Data="51 5b"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="80" Label="NoteOff" Data="51 5b"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="51 7f"/>
+ <Event DeltaTimeTicks="137" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="119" Type="MIDI" Id="80" Label="NoteOff" Data="51 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="51 4d"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4f 71"/>
+ <Event DeltaTimeTicks="469" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="251" Type="MIDI" Id="90" Label="NoteOn" Data="4d 63"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="80" Label="NoteOff" Data="4d 54"/>
+ <Event DeltaTimeTicks="133" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="323" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="157" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="253" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="227" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="18" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="05"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="08"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="11"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="465" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 07 a1 20" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="4f 4d"/>
+ <Event DeltaTimeTicks="512" Type="MIDI" Id="80" Label="NoteOff" Data="4f 46"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="90" Label="NoteOn" Data="4d 4d"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="80" Label="NoteOff" Data="4d 31"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="90" Label="NoteOn" Data="4c 5b"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="4c 46"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 40"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="4a 31"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="48 54"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 46"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="4a 4d"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="192" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="258" Type="MIDI" Id="80" Label="NoteOff" Data="4c 36"/>
+ <Event DeltaTimeTicks="222" Type="MIDI" Id="90" Label="NoteOn" Data="48 63"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="48 40"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="80" Label="NoteOff" Data="4c 5b"/>
+ <Event DeltaTimeTicks="128" Type="MIDI" Id="90" Label="NoteOn" Data="4d 6a"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="139" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="503" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="4a 5b"/>
+ <Event DeltaTimeTicks="95" Type="MIDI" Id="80" Label="NoteOff" Data="4a 6a"/>
+ <Event DeltaTimeTicks="145" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="47 6a"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="237" Type="MIDI" Id="80" Label="NoteOff" Data="47 6a"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="55" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="442" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="02"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="420" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="90" Label="NoteOn" Data="4d 5b"/>
+ <Event DeltaTimeTicks="127" Type="MIDI" Id="80" Label="NoteOff" Data="4d 4d"/>
+ <Event DeltaTimeTicks="113" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="311" Type="MIDI" Id="80" Label="NoteOff" Data="4c 6a"/>
+ <Event DeltaTimeTicks="169" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="297" Type="MIDI" Id="80" Label="NoteOff" Data="48 4d"/>
+ <Event DeltaTimeTicks="183" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="270" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="193" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="14" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="289" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="177" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="48 5b"/>
+ <Event DeltaTimeTicks="162" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="131" Type="MIDI" Id="80" Label="NoteOff" Data="4a 54"/>
+ <Event DeltaTimeTicks="109" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4c 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="80" Label="NoteOff" Data="4d 71"/>
+ <Event DeltaTimeTicks="115" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="544" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="81" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="304" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="47 71"/>
+ <Event DeltaTimeTicks="279" Type="MIDI" Id="80" Label="NoteOff" Data="47 78"/>
+ <Event DeltaTimeTicks="201" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="518" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="442" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="461" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="19" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 07 53 00" MetaId="51"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="97" Type="MIDI" Id="80" Label="NoteOff" Data="4c 54"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="291" Type="MIDI" Id="80" Label="NoteOff" Data="4d 78"/>
+ <Event DeltaTimeTicks="172" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="80" Label="NoteOff" Data="4a 4d"/>
+ <Event DeltaTimeTicks="216" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="556" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7c"/>
+ <Event DeltaTimeTicks="164" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="80" Label="NoteOff" Data="4d 5b"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="287" Type="MIDI" Id="80" Label="NoteOff" Data="4f 78"/>
+ <Event DeltaTimeTicks="174" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="312" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="153" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="111" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="129" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="140" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="345" Type="MIDI" Id="80" Label="NoteOff" Data="4f 5b"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="53 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="53 54"/>
+ <Event DeltaTimeTicks="105" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="19"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="90" Label="NoteOn" Data="54 78"/>
+ <Event DeltaTimeTicks="28" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="301" Type="MIDI" Id="80" Label="NoteOff" Data="54 71"/>
+ <Event DeltaTimeTicks="151" Type="MIDI" Id="90" Label="NoteOn" Data="53 78"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="547" Type="MIDI" Id="80" Label="NoteOff" Data="53 6a"/>
+ <Event DeltaTimeTicks="158" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="94" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="140" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="444" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="48" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7f"/>
+ <Event DeltaTimeTicks="424" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="51" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="423" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="246" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="2" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="370" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="317" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="350" Type="MIDI" Id="80" Label="NoteOff" Data="48 6a"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="342" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="36" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="306" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="138" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="435" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="90" Label="NoteOn" Data="51 5b"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="80" Label="NoteOff" Data="51 5b"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="51 7f"/>
+ <Event DeltaTimeTicks="137" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="119" Type="MIDI" Id="80" Label="NoteOff" Data="51 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="51 4d"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4f 71"/>
+ <Event DeltaTimeTicks="469" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="251" Type="MIDI" Id="90" Label="NoteOn" Data="4d 63"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="80" Label="NoteOff" Data="4d 54"/>
+ <Event DeltaTimeTicks="133" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="323" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="157" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="253" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="227" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="18" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="05"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="08"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="11"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="465" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 07 0a e2" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="4f 4d"/>
+ <Event DeltaTimeTicks="512" Type="MIDI" Id="80" Label="NoteOff" Data="4f 46"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="90" Label="NoteOn" Data="4d 4d"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="80" Label="NoteOff" Data="4d 31"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="90" Label="NoteOn" Data="4c 5b"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="4c 46"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 40"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="4a 31"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="48 54"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 46"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="4a 4d"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="192" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="258" Type="MIDI" Id="80" Label="NoteOff" Data="4c 36"/>
+ <Event DeltaTimeTicks="222" Type="MIDI" Id="90" Label="NoteOn" Data="48 63"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="48 40"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 46"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 63"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="80" Label="NoteOff" Data="4c 5b"/>
+ <Event DeltaTimeTicks="128" Type="MIDI" Id="90" Label="NoteOn" Data="4d 6a"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4a 54"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="139" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="503" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="4a 5b"/>
+ <Event DeltaTimeTicks="95" Type="MIDI" Id="80" Label="NoteOff" Data="4a 6a"/>
+ <Event DeltaTimeTicks="145" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="198" Type="MIDI" Id="90" Label="NoteOn" Data="47 6a"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="237" Type="MIDI" Id="80" Label="NoteOff" Data="47 6a"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="288" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="55" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="202" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 07 0a e2" MetaId="51"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="02"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="420" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="90" Label="NoteOn" Data="4d 5b"/>
+ <Event DeltaTimeTicks="127" Type="MIDI" Id="80" Label="NoteOff" Data="4d 4d"/>
+ <Event DeltaTimeTicks="113" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="311" Type="MIDI" Id="80" Label="NoteOff" Data="4c 6a"/>
+ <Event DeltaTimeTicks="169" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="217" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="297" Type="MIDI" Id="80" Label="NoteOff" Data="48 4d"/>
+ <Event DeltaTimeTicks="183" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="270" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="193" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="14" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="289" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="177" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="48 5b"/>
+ <Event DeltaTimeTicks="162" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="131" Type="MIDI" Id="80" Label="NoteOff" Data="4a 54"/>
+ <Event DeltaTimeTicks="109" Type="MIDI" Id="90" Label="NoteOn" Data="4c 78"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="4c 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="80" Label="NoteOff" Data="4d 71"/>
+ <Event DeltaTimeTicks="115" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="124" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="544" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7f"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="81" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="304" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="176" Type="MIDI" Id="90" Label="NoteOn" Data="47 71"/>
+ <Event DeltaTimeTicks="279" Type="MIDI" Id="80" Label="NoteOff" Data="47 78"/>
+ <Event DeltaTimeTicks="201" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="518" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="442" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 06 72 87" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="461" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="259" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="97" Type="MIDI" Id="80" Label="NoteOff" Data="4c 54"/>
+ <Event DeltaTimeTicks="143" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="291" Type="MIDI" Id="80" Label="NoteOff" Data="4d 78"/>
+ <Event DeltaTimeTicks="172" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="249" Type="MIDI" Id="80" Label="NoteOff" Data="4a 4d"/>
+ <Event DeltaTimeTicks="216" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="556" Type="MIDI" Id="80" Label="NoteOff" Data="4c 7c"/>
+ <Event DeltaTimeTicks="164" Type="MIDI" Id="90" Label="NoteOn" Data="4d 78"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="80" Label="NoteOff" Data="4d 5b"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="90" Label="NoteOn" Data="4f 6a"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="287" Type="MIDI" Id="80" Label="NoteOff" Data="4f 78"/>
+ <Event DeltaTimeTicks="174" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="312" Type="MIDI" Id="80" Label="NoteOff" Data="4a 63"/>
+ <Event DeltaTimeTicks="153" Type="MIDI" Id="90" Label="NoteOn" Data="4c 6a"/>
+ <Event DeltaTimeTicks="111" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="129" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="140" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="345" Type="MIDI" Id="80" Label="NoteOff" Data="4f 5b"/>
+ <Event DeltaTimeTicks="125" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="53 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="53 54"/>
+ <Event DeltaTimeTicks="105" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="19"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="90" Label="NoteOn" Data="54 78"/>
+ <Event DeltaTimeTicks="28" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="301" Type="MIDI" Id="80" Label="NoteOff" Data="54 71"/>
+ <Event DeltaTimeTicks="151" Type="MIDI" Id="90" Label="NoteOn" Data="53 78"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="547" Type="MIDI" Id="80" Label="NoteOff" Data="53 6a"/>
+ <Event DeltaTimeTicks="158" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="94" Type="MIDI" Id="80" Label="NoteOff" Data="51 6a"/>
+ <Event DeltaTimeTicks="140" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 05 f1 ea" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="444" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="48" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7f"/>
+ <Event DeltaTimeTicks="424" Type="MIDI" Id="90" Label="NoteOn" Data="4f 78"/>
+ <Event DeltaTimeTicks="51" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="423" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="246" Type="MIDI" Id="90" Label="NoteOn" Data="4d 71"/>
+ <Event DeltaTimeTicks="118" Type="MIDI" Id="80" Label="NoteOff" Data="4d 63"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="2" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="370" Type="MIDI" Id="80" Label="NoteOff" Data="4c 78"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="90" Label="NoteOn" Data="4a 6a"/>
+ <Event DeltaTimeTicks="317" Type="MIDI" Id="80" Label="NoteOff" Data="4a 5b"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="90" Label="NoteOn" Data="48 78"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="350" Type="MIDI" Id="80" Label="NoteOff" Data="48 6a"/>
+ <Event DeltaTimeTicks="122" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="342" Type="MIDI" Id="80" Label="NoteOff" Data="4a 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="4c 7c"/>
+ <Event DeltaTimeTicks="36" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="306" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="138" Type="MIDI" Id="90" Label="NoteOn" Data="48 6a"/>
+ <Event DeltaTimeTicks="435" Type="MIDI" Id="80" Label="NoteOff" Data="48 63"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="90" Label="NoteOn" Data="51 5b"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="80" Label="NoteOff" Data="51 5b"/>
+ <Event DeltaTimeTicks="123" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="51 7f"/>
+ <Event DeltaTimeTicks="137" Type="MIDI" Id="90" Label="NoteOn" Data="51 71"/>
+ <Event DeltaTimeTicks="119" Type="MIDI" Id="80" Label="NoteOff" Data="51 71"/>
+ <Event DeltaTimeTicks="121" Type="MIDI" Id="90" Label="NoteOn" Data="51 46"/>
+ <Event DeltaTimeTicks="114" Type="MIDI" Id="80" Label="NoteOff" Data="51 4d"/>
+ <Event DeltaTimeTicks="126" Type="MIDI" Id="90" Label="NoteOn" Data="4f 71"/>
+ <Event DeltaTimeTicks="469" Type="MIDI" Id="80" Label="NoteOff" Data="4f 7c"/>
+ <Event DeltaTimeTicks="251" Type="MIDI" Id="90" Label="NoteOn" Data="4d 63"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="80" Label="NoteOff" Data="4d 54"/>
+ <Event DeltaTimeTicks="133" Type="MIDI" Id="90" Label="NoteOn" Data="4c 71"/>
+ <Event DeltaTimeTicks="323" Type="MIDI" Id="80" Label="NoteOff" Data="4c 40"/>
+ <Event DeltaTimeTicks="157" Type="MIDI" Id="90" Label="NoteOn" Data="4a 71"/>
+ <Event DeltaTimeTicks="253" Type="MIDI" Id="80" Label="NoteOff" Data="4a 78"/>
+ <Event DeltaTimeTicks="227" Type="MIDI" Id="90" Label="NoteOn" Data="48 71"/>
+ <Event DeltaTimeTicks="18" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="01"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="03"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="05"/>
+ <Event DeltaTimeTicks="44" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="08"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="11"/>
+ <Event DeltaTimeTicks="45" Type="MIDI" Id="d0" Label="ChannelAftertouch" Data="00"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="80" Label="NoteOff" Data="48 7f"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="EndOfTrack" Data="2f 00" MetaId="2f"/>
+ </TrackChunk>
+</MidiFile>
diff --git a/vfg/bin/data/MIDI_test.xml b/vfg/bin/data/MIDI_test.xml
new file mode 100644
index 0000000..769d445
--- /dev/null
+++ b/vfg/bin/data/MIDI_test.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<MidiFile SMFType="0" TrackChunkAmount="1" DeltaTimeTicks="480" TimeStamp="01/11/2012 13:08:22">
+ <TrackChunk Size="2385">
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TrackName" Data="03 0b 43 68 69 70 20 53 6f 75 6e 64 73" MetaId="03">Chip Sounds</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="InstrumentName" Data="04 0b 43 68 69 70 20 53 6f 75 6e 64 73" MetaId="04">Chip Sounds</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TimeSignature" Data="58 04 04 02 18 08" MetaId="58"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="KeySignature" Data="59 02 00 00" MetaId="59"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="Marker" Data="06 09 4d 61 72 6b 65 72 20 23 23" MetaId="06">Marker ##</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="&lt;unknown&gt;" Data="54 05 21 00 00 00 00" MetaId="54"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 08 e3 7c" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="24 01"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="80" Label="NoteOff" Data="24 46"/>
+ <Event DeltaTimeTicks="1920" Type="MIDI" Id="90" Label="NoteOn" Data="4f 4d"/>
+ <Event DeltaTimeTicks="512" Type="MIDI" Id="80" Label="NoteOff" Data="4f 46"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="90" Label="NoteOn" Data="4d 4d"/>
+ <Event DeltaTimeTicks="163" Type="MIDI" Id="80" Label="NoteOff" Data="4d 31"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="90" Label="NoteOn" Data="4c 5b"/>
+ <Event DeltaTimeTicks="285" Type="MIDI" Id="80" Label="NoteOff" Data="4c 46"/>
+ <Event DeltaTimeTicks="195" Type="MIDI" Id="90" Label="NoteOn" Data="4a 40"/>
+ <Event DeltaTimeTicks="282" Type="MIDI" Id="80" Label="NoteOff" Data="4a 31"/>
+ </TrackChunk>
+</MidiFile>
diff --git a/vfg/bin/data/VODA_MUS_DeckTheHalls-Backing_v.1.3.mp3 b/vfg/bin/data/VODA_MUS_DeckTheHalls-Backing_v.1.3.mp3
new file mode 100755
index 0000000..54857e2
--- /dev/null
+++ b/vfg/bin/data/VODA_MUS_DeckTheHalls-Backing_v.1.3.mp3
Binary files differ
diff --git a/vfg/bin/data/VODA_MUS_DeckTheHalls-Melody_v.1.3.mp3 b/vfg/bin/data/VODA_MUS_DeckTheHalls-Melody_v.1.3.mp3
new file mode 100755
index 0000000..53dc57e
--- /dev/null
+++ b/vfg/bin/data/VODA_MUS_DeckTheHalls-Melody_v.1.3.mp3
Binary files differ
diff --git a/vfg/src/main.cpp b/vfg/src/main.cpp
new file mode 100755
index 0000000..6a32c6a
--- /dev/null
+++ b/vfg/src/main.cpp
@@ -0,0 +1,16 @@
+#include "ofMain.h"
+#include "testApp.h"
+#include "ofAppGlutWindow.h"
+
+//========================================================================
+int main( ){
+
+ ofAppGlutWindow window;
+ ofSetupOpenGL(&window, 1024,768, OF_WINDOW); // <-------- setup the GL context
+
+ // this kicks off the running of my app
+ // can be OF_WINDOW or OF_FULLSCREEN
+ // pass in width and height too:
+ ofRunApp( new testApp());
+
+}
diff --git a/vfg/src/music.cpp b/vfg/src/music.cpp
new file mode 100755
index 0000000..82e953e
--- /dev/null
+++ b/vfg/src/music.cpp
@@ -0,0 +1,91 @@
+#include "music.h"
+
+//event times & durations are absolute integer milliseconds
+
+note::note(int n,int v,int d){
+ num=n;
+ velocity=v;
+ duration=d;
+}
+void musicscore::parseMidi(string filename){
+ // millis = 60000 / (BPM * PPQ)
+ // BPM = 60000000 / MQPN (last 3 bytes of midi tempoSet)
+ // http://www.lastrayofhope.com/2009/12/23/midi-delta-time-ticks-to-seconds/
+ // presume no change in time signature?
+
+ //2 passes:: extract notes & set abs times, then scan for
+
+ float wt=ofGetElapsedTimef();
+
+ float BPM=120.0f;
+ //input:: MPQN :: default 500000
+ float MPQN=60000000.0f/BPM;
+ //unknown:: ticks per quarter note
+ int TPQN=96;
+ //want:: seconds per tick in float
+ float SPT =(MPQN/1000000.0f)/TPQN;
+
+ float time=0; //counts up in float seconds but converts to millis for map index
+
+ map<int,note*> events;
+
+ if( !XML.loadFile(filename) ){
+ printf("unable to load %s check data/ folder\n",filename.c_str());
+ }else{
+ if(XML.pushTag("MidiFile")) {
+ for (int i=0;i<XML.getNumTags("TrackChunk");i++) {
+ XML.pushTag("TrackChunk",i);
+ for (int i=0;i<XML.getNumTags("Event");i++) {
+ time+=(SPT*XML.getAttribute("Event", "DeltaTimeTicks",0,i));
+ if (XML.getAttribute("Event", "Label","",i)=="TempoSet") {
+ string data=XML.getAttribute("Event", "Data","",i);
+ char* endptr;
+ int d1=strtoul(data.substr(6,2).c_str(),&endptr,16);
+ int d2=strtoul(data.substr(9,2).c_str(),&endptr,16);
+ int d3=strtoul(data.substr(12,2).c_str(),&endptr,16);
+ int MPQN=(d1<<16)+(d2<<8)+d3;
+ SPT =(MPQN/1000000.0f)/TPQN;
+ //printf("Tempo change: seconds per tick now: %f\n",SPT);
+ }
+ if (XML.getAttribute("Event", "Label","",i)=="NoteOn"||XML.getAttribute("Event", "Label","",i)=="NoteOff") {
+ string data=XML.getAttribute("Event", "Data","",i);
+ char* endptr;
+ int d1=strtoul(data.substr(0,2).c_str(),&endptr,16);
+ int d2=strtoul(data.substr(3,2).c_str(),&endptr,16);
+ int id=strtoul(XML.getAttribute("Event", "Id","",i).c_str(),&endptr,16);
+ if (id==128||id==144) events[(int)(time*1000.0f)]=new note(d1,d2,id); //noteon/off
+ }
+ }
+ XML.popTag();
+ }
+
+ }
+ XML.popTag();
+ }
+ //iterate events and compute durations now the absolute times are established: extract to notes
+ map<int,note*>::iterator iter1;
+ map<int,note*>::iterator iter2;
+
+ for (iter1 = events.begin(); iter1 != events.end(); ++iter1) {
+ if (iter1->second->duration==144) {
+ iter1->second->duration=0;
+ iter2=iter1;
+ while (++iter2 != events.end()) {
+ if ((iter1->second->num==iter2->second->num)&&(iter2->second->duration==128)) {
+ iter1->second->duration=iter2->first-iter1->first;
+ notes[iter1->first]=iter1->second;
+ //printf("%i: noteon %i %i\n",iter1->first,iter1->second->num,iter1->second->duration);
+ break;
+ }
+ }
+ }
+ }
+ printf("processed %s: %i notes in %f seconds\n",filename.c_str(),notes.size(),ofGetElapsedTimef()-wt);
+}
+
+song::song(string backfile,string melfile,string notefile) {
+ backing.loadSound(backfile);
+ melody.loadSound(melfile);
+ notes.parseMidi(notefile);
+ bpm=bpm; //can be used to set tempo eventually? keeps everything simple to do it this way
+}
diff --git a/vfg/src/music.h b/vfg/src/music.h
new file mode 100755
index 0000000..145538e
--- /dev/null
+++ b/vfg/src/music.h
@@ -0,0 +1,55 @@
+#pragma once
+
+#include "ofMain.h"
+#include "ofxXmlSettings.h"
+
+//event times are absolute integer milliseconds
+
+class note {
+ public:
+ note(int n,int v,int d=0);
+ int num;
+ int velocity;
+ int duration; //may be needed another time?
+};
+
+class score {
+ //implements basics of timelime, loading from xml, time, checking
+ public:
+
+ protected:
+ ofxXmlSettings XML;
+};
+
+class lyricscore: public score {
+ //draws lyrics to screen for a certain time
+ public:
+};
+
+class musicscore: public score {
+ //draws notes to screen for a certain time and certain parameters, checks when they become ready
+ //how will it be played dictates how the data is stored
+ //play : start from beginning, schedule event at next delta
+ //end : clean up and start again
+ //you can set position of sound file, it will seek. will we want ffwd at any stage
+ //when it comes to drawing, we will want to repeatedly retrieve notes in a range of times
+ //lower_bound and upper_bound
+ public:
+ void parseMidi(string filename);
+ private:
+ map<int,note*> notes;
+};
+
+class song {
+ public:
+ song(string backfile,string melfile,string musfile);
+ private:
+ ofSoundPlayer backing;
+ ofSoundPlayer melody;
+ lyricscore lyrics;
+ musicscore notes;
+ int bpm;
+};
+
+
+
diff --git a/vfg/src/testApp.cpp b/vfg/src/testApp.cpp
new file mode 100755
index 0000000..7710326
--- /dev/null
+++ b/vfg/src/testApp.cpp
@@ -0,0 +1,64 @@
+#include "testApp.h"
+
+//--------------------------------------------------------------
+void testApp::setup(){
+ testsong=new song("VODA_MUS_DeckTheHalls-Backing_v.1.3.mp3","VODA_MUS_DeckTheHalls-Melody_v.1.3.mp3","MIDI_DeckTheHalls_Test.1.3.xml");
+}
+
+void testApp::exit(){
+ delete testsong;
+}
+
+//--------------------------------------------------------------
+void testApp::update(){
+}
+
+//--------------------------------------------------------------
+void testApp::draw(){
+
+}
+
+//--------------------------------------------------------------
+void testApp::keyPressed(int key){
+
+}
+
+//--------------------------------------------------------------
+void testApp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mousePressed(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void testApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void testApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void testApp::dragEvent(ofDragInfo dragInfo){
+
+}
diff --git a/vfg/src/testApp.h b/vfg/src/testApp.h
new file mode 100755
index 0000000..94691a5
--- /dev/null
+++ b/vfg/src/testApp.h
@@ -0,0 +1,56 @@
+#pragma once
+
+#include "ofMain.h"
+#include "music.h"
+
+/*
+this library?
+
+https://github.com/micknoise/Maximilian
+
+Maximilian is an audio synthesis and signal processing library written in C++. It's cross-platform compatible with MacOS, Windows, Linux and IOS systems. The main features are:
+
+- sample playback, recording and looping
+- read from WAV and OGG files.
+- a selection of oscillators and filters
+- enveloping
+- multichannel mixing for 1, 2, 4 and 8 channel setups
+- controller mapping functions
+- effects including delay, distortion, chorus, flanging
+- granular synthesis, including time and pitch stretching
+- atom synthesis
+- realtime music information retrieval functions: spectrum analysis, spectral features, octave analysis, and MFCCs
+- example projects for Windows and MacOS, using command line and OpenFrameworks environments
+
+*/
+
+class game {
+ vector<song*> songs;
+};
+
+class testApp : public ofBaseApp{
+
+ public:
+ void setup();
+ void update();
+ void draw();
+ void exit();
+
+ void keyPressed (int key);
+ void keyReleased(int key);
+ void mouseMoved(int x, int y );
+ void mouseDragged(int x, int y, int button);
+ void mousePressed(int x, int y, int button);
+ void mouseReleased(int x, int y, int button);
+ void windowResized(int w, int h);
+ void dragEvent(ofDragInfo dragInfo);
+ void gotMessage(ofMessage msg);
+
+ song* testsong;
+
+};
+
+
+
+
+
diff --git a/vfg/vfg.cbp b/vfg/vfg.cbp
new file mode 100755
index 0000000..f982225
--- /dev/null
+++ b/vfg/vfg.cbp
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="vfg" />
+ <Option makefile_is_custom="1" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Option virtualFolders="addons/;src/;" />
+ <Build>
+ <Target title="Debug">
+ <Option output="bin/$(PROJECT_NAME)_debug" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="bin" />
+ <Option object_output="obj/Debug/" />
+ <Option external_deps="../../openFrameworks/libs/openFrameworksCompiled/lib/linux/libopenFrameworksDebug.a;" />
+ <Option type="1" />
+ <Option compiler="gcc" />
+ <Option projectLinkerOptionsRelation="2" />
+ </Target>
+ <Target title="Release">
+ <Option output="bin/$(PROJECT_NAME)" prefix_auto="1" extension_auto="1" />
+ <Option working_dir="bin" />
+ <Option object_output="obj/Release/" />
+ <Option external_deps="../../openFrameworks/libs/openFrameworksCompiled/lib/linux/libopenFrameworks.a;" />
+ <Option type="1" />
+ <Option compiler="gcc" />
+ <Option projectLinkerOptionsRelation="2" />
+ </Target>
+ </Build>
+ <Unit filename="src/main.cpp">
+ <Option virtualFolder="src/" />
+ </Unit>
+ <Unit filename="src/testApp.cpp">
+ <Option virtualFolder="src/" />
+ </Unit>
+ <Unit filename="src/testApp.h">
+ <Option virtualFolder="src/" />
+ </Unit>
+ <Unit filename="config.make">
+ <Option virtualFolder="build config" />
+ </Unit>
+ <Extensions>
+ <code_completion />
+ <envvars />
+ <debugger />
+ </Extensions>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/src/ofxXmlSettings.cpp">
+ <Option virtualFolder="addons/ofxXmlSettings/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/src/ofxXmlSettings.h">
+ <Option virtualFolder="addons/ofxXmlSettings/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/libs/tinyxmlparser.cpp">
+ <Option virtualFolder="addons/ofxXmlSettings/libs" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/libs/tinyxml.cpp">
+ <Option virtualFolder="addons/ofxXmlSettings/libs" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/libs/tinyxmlerror.cpp">
+ <Option virtualFolder="addons/ofxXmlSettings/libs" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxXmlSettings/libs/tinyxml.h">
+ <Option virtualFolder="addons/ofxXmlSettings/libs" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPManager.cpp">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.cpp">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxNetworkUtils.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPManager.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.cpp">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxUDPManager.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxUDPManager.cpp">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ <Unit filename="../../openFrameworks/addons/ofxNetwork/src/ofxNetwork.h">
+ <Option virtualFolder="addons/ofxNetwork/src" />
+ </Unit>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/vfg/vfg.layout b/vfg/vfg.layout
new file mode 100644
index 0000000..1053280
--- /dev/null
+++ b/vfg/vfg.layout
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+ <ActiveTarget name="Debug" />
+</CodeBlocks_layout_file>
diff --git a/vfg/vfg.workspace b/vfg/vfg.workspace
new file mode 100755
index 0000000..cf0ede7
--- /dev/null
+++ b/vfg/vfg.workspace
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_workspace_file>
+ <Workspace title="vfg">
+ <Project filename="vfg.cbp" active="1">
+ <Depends filename="../../openFrameworks/libs/openFrameworksCompiled/project/linux/libopenFrameworks.cbp" />
+ </Project>
+ <Project filename="../../openFrameworks/libs/openFrameworksCompiled/project/linux/libopenFrameworks.cbp" />
+ </Workspace>
+</CodeBlocks_workspace_file>