summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xvfg/bin/data/Levels_DeckTheHalls.1.5.xml6
-rwxr-xr-xvfg/bin/data/Lyrics_DeckTheHalls.1.5.xml47
-rwxr-xr-xvfg/bin/data/MIDI_DeckTheHalls_MIDI.1.5.xml544
-rw-r--r--vfg/bin/data/MIDI_test.xml22
-rwxr-xr-xvfg/src/music.cpp148
-rwxr-xr-xvfg/src/music.h133
-rwxr-xr-xvfg/src/testApp.cpp23
-rwxr-xr-xvfg/src/testApp.h4
-rw-r--r--vfg/vfg.layout8
-rwxr-xr-xvpn/notes.txt5
-rw-r--r--vpn/server.conf8
-rw-r--r--vpn/static.key21
12 files changed, 839 insertions, 130 deletions
diff --git a/vfg/bin/data/Levels_DeckTheHalls.1.5.xml b/vfg/bin/data/Levels_DeckTheHalls.1.5.xml
new file mode 100755
index 0000000..57ccca7
--- /dev/null
+++ b/vfg/bin/data/Levels_DeckTheHalls.1.5.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<VFxmas timebase="1000">
+ <Level Time="0" Lives="0"/>
+ <Level Time="37920" Lives="5"/>
+ <Level Time="69400" Lives="4"/>
+</VFxmas>
diff --git a/vfg/bin/data/Lyrics_DeckTheHalls.1.5.xml b/vfg/bin/data/Lyrics_DeckTheHalls.1.5.xml
new file mode 100755
index 0000000..0bc6789
--- /dev/null
+++ b/vfg/bin/data/Lyrics_DeckTheHalls.1.5.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<VFxmas timebase="25">
+ <Lyric In="60" Out="96">Deck the halls</Lyric>
+ <Lyric In="104" Out="127">with boughs</Lyric>
+ <Lyric In="133" Out="170">of holly</Lyric>
+ <Lyric In="176" Out="185">Fa-la</Lyric>
+ <Lyric In="191" Out="214">la-la-la</Lyric>
+ <Lyric In="226" Out="283">la-la-la-la</Lyric>
+ <Lyric In="293" Out="336">'tis the season</Lyric>
+ <Lyric In="351" Out="402">to be jolly</Lyric>
+ <Lyric In="408" Out="417">Fa-la</Lyric>
+ <Lyric In="423" Out="446">la-la-la</Lyric>
+ <Lyric In="458" Out="515">la-la-la-la</Lyric>
+ <Lyric In="525" Out="559">Don we now</Lyric>
+ <Lyric In="566" Out="628">our gay apparel</Lyric>
+ <Lyric In="633" Out="655">Fa-la-la</Lyric>
+ <Lyric In="660" Out="683">la-la-la</Lyric>
+ <Lyric In="686" Out="728">la-la-la</Lyric>
+ <Lyric In="739" Out="787">Troll the ancient</Lyric>
+ <Lyric In="792" Out="815">yule-tide</Lyric>
+ <Lyric In="819" Out="844">carol</Lyric>
+ <Lyric In="847" Out="856">Fa-la</Lyric>
+ <Lyric In="860" Out="883">la-la-la</Lyric>
+ <Lyric In="894" Out="943">la-la-la-la</Lyric>
+
+ <Lyric In="954" Out="997">See the blazing</Lyric>
+ <Lyric In="1004" Out="1050">Yule before us</Lyric>
+ <Lyric In="1054" Out="1063">Fa-la</Lyric>
+ <Lyric In="1066" Out="1089">la-la-la</Lyric>
+ <Lyric In="1097" Out="1142">la-la-la-la</Lyric>
+ <Lyric In="1153" Out="1187">Strike the harp</Lyric>
+ <Lyric In="1192" Out="1211">and join</Lyric>
+ <Lyric In="1217" Out="1249">the chorus</Lyric>
+ <Lyric In="1254" Out="1263">Fa-la</Lyric>
+ <Lyric In="1267" Out="1290">la-la-la</Lyric>
+ <Lyric In="1297" Out="1340">la-la-la-la</Lyric>
+ <Lyric In="1354" Out="1386">Follow me</Lyric>
+ <Lyric In="1390" Out="1447">in merry measure</Lyric>
+ <Lyric In="1450" Out="1472">Fa-la-la</Lyric>
+ <Lyric In="1474" Out="1494">la-la-la</Lyric>
+ <Lyric In="1498" Out="1536">la-la-la</Lyric>
+ <Lyric In="1546" Out="1589">While I tell of</Lyric>
+ <Lyric In="1593" Out="1639">Yule-tide treasure</Lyric>
+ <Lyric In="1642" Out="1651">Fa-la</Lyric>
+ <Lyric In="1654" Out="1679">la-la-la</Lyric>
+ <Lyric In="1684" Out="1726">la-la-la-la</Lyric>
+</VFxmas>
diff --git a/vfg/bin/data/MIDI_DeckTheHalls_MIDI.1.5.xml b/vfg/bin/data/MIDI_DeckTheHalls_MIDI.1.5.xml
new file mode 100755
index 0000000..960c03f
--- /dev/null
+++ b/vfg/bin/data/MIDI_DeckTheHalls_MIDI.1.5.xml
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<MidiFile SMFType="0" TrackChunkAmount="1" DeltaTimeTicks="480" TimeStamp="07/11/2012 19:31:46">
+ <TrackChunk Size="2394">
+ <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="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="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="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="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="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="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
deleted file mode 100644
index 769d445..0000000
--- a/vfg/bin/data/MIDI_test.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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/src/music.cpp b/vfg/src/music.cpp
index 096e630..29b1ef6 100755
--- a/vfg/src/music.cpp
+++ b/vfg/src/music.cpp
@@ -2,18 +2,11 @@
//event times & durations are absolute integer milliseconds
//---------------------------------------------------------------------------------------------------------------------------------------------
-note::note(int n,int v,int d){
- num=n;
- velocity=v;
- duration=d;
- activated=false;
-}
-//---------------------------------------------------------------------------------------------------------------------------------------------
-//---------------------------------------------------------------------------------------------------------------------------------------------
musicscore::musicscore() {
timeframe=2000;
flake.loadImage("flake.png");
flake.setAnchorPercent(0.5,0.5);
+ missedLast=false;
}
void musicscore::parseMidi(string filename){
// millis = 60000 / (BPM * PPQ)
@@ -86,10 +79,9 @@ void musicscore::parseMidi(string filename){
while (++iter2 != events.end()) {
if ((iter1->second->num==iter2->second->num)&&(iter2->second->duration==128)) {
iter1->second->duration=iter2->first-iter1->first;
- iter1->second->updown=iter1->second->num<n?-1:iter1->second->num==n?0:1;
n=iter1->second->num;
notes[iter1->first]=iter1->second;
- printf("%i: noteon %i %i %i\n",iter1->first,iter1->second->num,iter1->second->duration,iter1->second->updown);
+ //printf("%i: noteon %i %i\n",iter1->first,iter1->second->num,iter1->second->duration);
break;
}
}
@@ -98,97 +90,96 @@ void musicscore::parseMidi(string filename){
iter1 = notes.end();
iter1--;
printf("processed %s: length %f, %i notes in %f seconds\n",filename.c_str(),((float)(iter1->first+iter1->second->duration)*.001f),notes.size(),ofGetElapsedTimef()-wt);
-
-//decimate notes to generate flakes that can be interacted with
- int noteThresh=1000;
- note *lastNote=notes.begin()->second;
- int lastTime=0;
- stars[notes.begin()->first]=notes.begin()->second;
- for (iter1 = notes.begin(); iter1 != notes.end(); iter1++) {
- if ((iter1->second->num/5!=lastNote->num/5)||(iter1->first-lastTime>noteThresh)) {
- stars[iter1->first]=iter1->second;
+}
+void musicscore::makeFlakes(int threshStart,int threshEnd){
+ //decimate notes to generate flakes that can be interacted with
+ map<int,note*>::iterator iter;
+ note *lastNote=notes.begin()->second;
+ int lastTime=0;
+ iter = notes.end();
+ iter--;
+ float songDuration=iter->first;
+ flakes[notes.begin()->first]=notes.begin()->second;
+ for (iter = notes.begin(); iter != notes.end(); iter++) {
+ float songPos=((float)iter->first)/songDuration;
+ if ((iter->second->num/5!=lastNote->num/5)||(iter->first-lastTime>((songPos*threshEnd)+((1.0f-songPos)*threshStart)))) {
+ flakes[iter->first]=iter->second;
}
- lastNote=iter1->second;
- lastTime=iter1->first;
- }
-
- interactionThresh=200; //how long player has to respond
- missedTime=-1;
-
-
+ lastNote=iter->second;
+ lastTime=iter->first;
+ }
}
void musicscore::setTimeframe(int millis) {timeframe=millis;}
-void musicscore::draw() {
+void musicscore::draw(levelscore *levels) {
ofEnableAlphaBlending();
int scoreStart=ofGetElapsedTimeMillis()-startTime;
int scoreEnd=scoreStart+timeframe;
- //temporary drawing method 46h - 52h
+ //note drawing 46h - 52h
int numnotes=16;
int firstnote=70;
float widthStep=((float)ofGetWidth())/numnotes;
float heightStep=((float)ofGetHeight())/timeframe;
map<int,note*>::iterator iter;
- for (iter = notes.lower_bound(scoreStart); iter != notes.upper_bound(scoreEnd); ++iter) {
+ //draw notes for reference
+ for (iter = notes.lower_bound(scoreStart); iter != notes.upper_bound(scoreEnd); ++iter) {
int thisnote=iter->second->num-firstnote;
int thisstart=iter->first-scoreStart;
int thislength=iter->second->duration;
ofSetColor(ofColor::fromHsb(((float)thisnote*255)/numnotes,200,100));
ofRect(thisnote*widthStep,ofGetHeight()-(thisstart*heightStep),widthStep,-(thislength*heightStep));
-
- //different methods for generating flakes
- //ideally theres a variable clumping factor, this means pre-processing the flakes though
-
- //ofSetColor(ofColor::fromHsb(((float)thisnote*255)/numnotes,200,255));
-
- //flake.draw((thisnote+0.5f)*widthStep,ofGetHeight()-(thisstart*heightStep));
- //flake.draw((iter->second->updown*ofGetWidth()*0.33)+(ofGetWidth()*0.5),ofGetHeight()-(thisstart*heightStep));
- //flake.draw((((thisnote/5)*5)+3.5f)*widthStep,ofGetHeight()-(thisstart*heightStep));
}
- for (iter = stars.lower_bound(scoreStart-200); iter != stars.upper_bound(scoreEnd); ++iter) { //added extra 200ms for flake to leave screen
+ //draw flakes
+ for (iter = flakes.lower_bound(scoreStart-200); iter != flakes.upper_bound(scoreEnd); ++iter) { //extra 200ms for flake to leave screen
int thisnote=iter->second->num-firstnote;
int thisstart=iter->first-scoreStart;
int thislength=iter->second->duration;
-
- // check player interaction
- if (thisstart<interactionThresh) {
- //this star needs to be interacted with
- if (((thisnote/5)+1)==playerKey) {
- //success!
- iter->second->playerActivated();
- }
- }
if (iter->second->activated) ofSetColor(255,255,255);
else ofSetColor(ofColor::fromHsb(((float)thisnote*255)/numnotes,200,255));
flake.draw((((thisnote/5)*5)+3.5f)*widthStep,ofGetHeight()-(thisstart*heightStep),flake.getWidth()/2,flake.getHeight()/2);
}
- //check for unactivated stars. must be a better way
- missedTime=-1;
- for (iter = stars.upper_bound(scoreStart); iter != stars.lower_bound(0); --iter) {
- if (!iter->second->activated) missedTime=scoreStart-iter->first;
- else break;
+ //check for unactivated flakes within this segment: is there a more efficient way?
+ //is it the number of flakes they can lose per segment?
+ missedFlakes=0;
+ missedLast=false;
+ for (iter = flakes.lower_bound(levels->getLowerBound(levels->getLevel(scoreStart))); iter != flakes.upper_bound(scoreStart); ++iter){
+ if (!iter->second->activated) {
+ missedFlakes++;
+ }
+ missedLast=!iter->second->activated;
}
ofDisableAlphaBlending();
}
-void musicscore::playerControl(int key){
- //0-3 - 0 is off
- playerKey=key;
+void musicscore::playerControl(int key,int threshold){
+ map<int,note*>::iterator iter;
+ int scoreTime=ofGetElapsedTimeMillis()-startTime;
+ for (iter = flakes.lower_bound(scoreTime-threshold); iter != flakes.upper_bound(scoreTime+threshold); ++iter) {
+ iter->second->activate();
+ }
}
//---------------------------------------------------------------------------------------------------------------------------------------------
-song::song(string backfile,string melfile,string notefile) {
+song::song(string backfile,string melfile,string musfile,string lyricfile,string levelfile) {
backing.loadSound(backfile);
melody.loadSound(melfile);
- notes.parseMidi(notefile);
+ notes.parseMidi(musfile);
+ lyrics.load(lyricfile);
+ levels.load(levelfile);
isPlaying=false;
- missedInterval=5000;
+ keyThresh=200;
}
void song::setTimeframe(int millis) {notes.setTimeframe(millis);}
+void song::setKeythresh(int millis) {keyThresh=millis;}
+void song::setFlakeThresh(int tS,int tE) {
+ fThreshStart=tS;
+ fThreshEnd=tE;
+}
void song::play() {
backing.play();
melody.play();
startTime=ofGetElapsedTimeMillis();
notes.startTime=startTime;
isPlaying=true;
+ notes.makeFlakes(fThreshStart,fThreshEnd);
}
void song::stop() {
backing.stop();
@@ -200,24 +191,33 @@ void song::preRoll(long preroll) {
notes.startTime=startTime;
isPreroll=true;
isPlaying=true;
+ notes.makeFlakes(fThreshStart,fThreshEnd);
}
void song::draw(){
- //how to deal with end/ track length/ part of game?
- if (isPreroll) {
- if (startTime<ofGetElapsedTimeMillis()) {
- backing.play();
- melody.play();
- isPreroll=false;
+ int songTime=ofGetElapsedTimeMillis()-startTime;
+ if (isPlaying) {
+ if (isPreroll) {
+ if (startTime<ofGetElapsedTimeMillis()) {
+ backing.play();
+ melody.play();
+ isPreroll=false;
+ }
}
+ if (notes.missedLast) {
+ melody.setVolume(0.0f);
+ if (levels.getLives(songTime)) {
+ if (notes.missedFlakes>levels.getLives(songTime)) {
+ //work out score
+ stop();
+ }
+ }
+ }
+ else melody.setVolume(1.0f);
+ notes.draw(&levels);
}
- if (notes.missedTime>0) {
- if (notes.missedTime>missedInterval) stop();
- else melody.setVolume(0.0f); //1.0f-((float)notes.missedTime/(float)missedInterval));
- }
- else melody.setVolume(1.0f);
- notes.draw();
+
+ ofDrawBitmapString(ofToString((float)songTime/1000.0f,3)+" "+ofToString(levels.getLevel(songTime))+" "+ofToString(notes.missedFlakes)+" of "+ofToString(levels.getLives(songTime)),10,ofGetHeight()-15);
}
void song::playerControl(int key){
- //0-3 - 0 is off
- notes.playerControl(key);
+ notes.playerControl(key,keyThresh);
}
diff --git a/vfg/src/music.h b/vfg/src/music.h
index 39ffd95..292e05f 100755
--- a/vfg/src/music.h
+++ b/vfg/src/music.h
@@ -5,15 +5,75 @@
//event times are absolute integer milliseconds
//---------------------------------------------------------------------------------------------------------------------------------------------
+class levelscore {
+ public:
+ void load(string filename) {
+ ofxXmlSettings XML;
+ if( !XML.loadFile(filename) ){
+ printf("unable to load %s check data/ folder\n",filename.c_str());
+ }else{
+ if(XML.pushTag("VFxmas")) {
+ for (int i=0;i<XML.getNumTags("Level");i++) {
+ levels[XML.getAttribute("Level", "Time",0,i)]=XML.getAttribute("Level", "Lives",0,i);
+ }
+ printf("processed %s: %i difficulty levels \n",filename.c_str(),levels.size());
+ }
+ }
+ }
+ int getLives(int time) {
+ map<int,int>::iterator iter;
+ int lives=0;
+ for (iter = levels.begin(); iter != levels.end(); ++iter) {
+ if (iter->first<=time) lives=iter->second;
+ else break;
+ }
+ return lives;
+ }
+ int getLevel(int time) {
+ map<int,int>::iterator iter;
+ int level=-1;
+ for (iter = levels.begin(); iter != levels.end(); ++iter) {
+ if (iter->first<=time) level++;
+ else break;
+ }
+ return level;
+ }
+ int getLowerBound(int level) {
+ map<int,int>::iterator iter=levels.begin();
+ int bound=0;
+ for (int i=0;i<=level;i++) {
+ bound=iter->first;
+ iter++;
+ }
+ return bound;
+ }
+ private:
+ map<int,int> levels;
+};
+//---------------------------------------------------------------------------------------------------------------------------------------------
class note {
public:
- note(int n,int v,int d=0);
+ note(int n,int v,int d=0) {
+ num=n;
+ velocity=v;
+ duration=d;
+ activated=false;
+ }
int num;
int velocity;
int duration; //may be needed another time?
- int updown; //-1 0 1 used for 3-button interaction
bool activated;
- void playerActivated() { activated=true; }
+ void activate() { activated=true; }
+};
+//---------------------------------------------------------------------------------------------------------------------------------------------
+class lyric {
+ public:
+ lyric(string s,int d) {
+ text=s;
+ duration=d;
+ }
+ string text;
+ int duration;
};
//---------------------------------------------------------------------------------------------------------------------------------------------
class score {
@@ -27,6 +87,23 @@ class score {
class lyricscore: public score {
//draws lyrics to screen for a certain time
public:
+ void load(string filename) {
+ if( !XML.loadFile(filename) ){
+ printf("unable to load %s check data/ folder\n",filename.c_str());
+ }else{
+ int multiplier=1000/XML.getAttribute("VFxmas", "timebase",0,0);
+ if(XML.pushTag("VFxmas")) {
+ for (int i=0;i<XML.getNumTags("Lyric");i++) {
+ int in=XML.getAttribute("Lyric", "In",0,i)*multiplier;
+ lyrics[in]=new lyric(XML.getValue("Lyric","",i),(XML.getAttribute("Lyric", "Out",0,i)*multiplier)-in);
+ }
+ printf("processed %s: %i lyrics \n",filename.c_str(),lyrics.size());
+ }
+
+ }
+ }
+ private:
+ map<int,lyric*> lyrics;
};
//---------------------------------------------------------------------------------------------------------------------------------------------
class musicscore: public score {
@@ -35,31 +112,30 @@ class musicscore: public score {
musicscore();
void parseMidi(string filename);
void setTimeframe(int millis);
- void draw();
-
- void playerControl(int key);
- //in wrong object?
- int missedTime;
+ void draw(levelscore *levels);
+ void playerControl(int key,int threshold);
+ void makeFlakes(int threshStart,int threshEnd);
+
+ int missedFlakes;
+ bool missedLast;
+ bool perfect;
+
private:
- map<int,note*> notes;
- map<int,note*> stars;
+ map<int,note*> notes;
+ map<int,note*> flakes;
int timeframe;
ofImage flake;
-
- //in wrong object?
- int interactionThresh;
-
-
- int playerKey;
};
//---------------------------------------------------------------------------------------------------------------------------------------------
class song {
public:
- song(string backfile,string melfile,string musfile);
+ song(string backfile,string melfile,string musfile,string lyricfile,string levelfile);
void play();
void stop();
void preRoll(long preroll);
void setTimeframe(int millis);
+ void setFlakeThresh(int tS,int tE);
+ void setKeythresh(int millis);
void draw();
bool isPlaying;
void playerControl(int key);
@@ -68,12 +144,31 @@ class song {
ofSoundPlayer melody;
lyricscore lyrics;
musicscore notes;
+ levelscore levels;
long startTime;
bool isPreroll;
-
- int missedInterval;
+ int fThreshStart,fThreshEnd,keyThresh;
};
//---------------------------------------------------------------------------------------------------------------------------------------------
+/*
+Game
+Animation & Sound Demo – NK to overlay latest version of Deck the Halls on 10 second animated sequence by COB Wednesday 7th November for visual and aural aesthetic sign-off. RM to send through latest version of Deck the Halls today (6th November).
+Game Development – TR presented initial demo today. Usability looks good. NK to provide first suite of graphics by COB Wednesday 7th November.
+Latency Test – TR and GK to perform end-to-end latency test next Monday 12th November once Vodafone have connected the 1800 number to the 01 number. Any issues noted in the testing to be flagged to BL.
+Game Over – Players who miss a certain amount of notes in a row will be kicked out of the game early. The number of notes that can be missed in a row will decrease as the game goes on (subject to testing and tweaking):
+
+Stage 1 – N/A (it will not be possible to be kicked out in Stage 1)
+Stage 2 – 5 notes missed will mean Game Over
+Stage 3 – 4 notes missed will mean Game Over
+Stage 4 – 3 notes missed will mean Game Over
+
+Scoring – Scoring will be based on the level of the game you achieve. There will be 4 scoring brackets (subject to testing and tweaking):
+
+Scoring Bracket 1 - Those who make it to Level 2 (see above - it's not possible to be kicked out in Level 1)
+Scoring Bracket 2 – Those who make it to Level 3
+Scoring Bracket 3 – Those who make it to Level 4
+Scoring Bracket 4 – Those who don't miss any notes in Level 4
+*/
diff --git a/vfg/src/testApp.cpp b/vfg/src/testApp.cpp
index c0c3671..dc450a2 100755
--- a/vfg/src/testApp.cpp
+++ b/vfg/src/testApp.cpp
@@ -2,10 +2,14 @@
//--------------------------------------------------------------
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");
- testsong->setTimeframe(10000);
- testsong->preRoll(250);
+ //for (float i=0;i<1.2;i+=0.1) printf("%f in level %i bound %f\n",i,lives->getLevel(i),lives->getLowerBound(lives->getLevel(i)));
+
+ testsong=new song("VODA_MUS_DeckTheHalls-Backing_v.1.5.mp3","VODA_MUS_DeckTheHalls-Melody_v.1.5.mp3","MIDI_DeckTheHalls_MIDI.1.5.xml","Lyrics_DeckTheHalls.1.5.xml","Levels_DeckTheHalls.1.5.xml");
+ testsong->setTimeframe(2500);
+ testsong->setFlakeThresh(1000,100);
+ testsong->preRoll(250);
+
ofSetBackgroundAuto(false);
ofBackground(0,0,0);
}
@@ -20,15 +24,14 @@ void testApp::update(){
//--------------------------------------------------------------
void testApp::draw(){
- ofEnableAlphaBlending();
+ ofEnableAlphaBlending();
//ofBackground(0,0,0,0.1);
- ofSetColor(0,0,0,100);
+ ofSetColor(0,0,0,50);
ofRect(0,0,ofGetWidth(),ofGetHeight());
- if (testsong->isPlaying) testsong->draw();
- else {
- ofSetColor(255,255,255);
- ofDrawBitmapString("game over!", (ofGetWidth()/2)-25,(ofGetHeight()/2)-5);
- }
+ ofSetColor(255,255,255);
+ testsong->draw();
+ if (!testsong->isPlaying) ofDrawBitmapString("game over!", (ofGetWidth()/2)-25,(ofGetHeight()/2)-5);
+
}
//--------------------------------------------------------------
diff --git a/vfg/src/testApp.h b/vfg/src/testApp.h
index 5a8805a..0765b4f 100755
--- a/vfg/src/testApp.h
+++ b/vfg/src/testApp.h
@@ -44,6 +44,8 @@ class game {
vector<song*> songs;
};
+
+
class testApp : public ofBaseApp{
public:
@@ -62,7 +64,7 @@ class testApp : public ofBaseApp{
void dragEvent(ofDragInfo dragInfo);
void gotMessage(ofMessage msg);
- song* testsong;
+ song *testsong;
};
diff --git a/vfg/vfg.layout b/vfg/vfg.layout
index 87ed139..7fe831e 100644
--- a/vfg/vfg.layout
+++ b/vfg/vfg.layout
@@ -7,11 +7,11 @@
<File name="src/main.cpp" open="1" top="0" tabpos="1">
<Cursor position="219" topLine="0" />
</File>
- <File name="src/music.cpp" open="1" top="1" tabpos="2">
- <Cursor position="7244" topLine="139" />
+ <File name="src/music.cpp" open="1" top="0" tabpos="2">
+ <Cursor position="6645" topLine="145" />
</File>
- <File name="src/music.h" open="0" top="0" tabpos="3">
- <Cursor position="1000" topLine="12" />
+ <File name="src/music.h" open="1" top="1" tabpos="3">
+ <Cursor position="2920" topLine="67" />
</File>
<File name="src/testApp.cpp" open="0" top="0" tabpos="2">
<Cursor position="1017" topLine="5" />
diff --git a/vpn/notes.txt b/vpn/notes.txt
new file mode 100755
index 0000000..04e07a3
--- /dev/null
+++ b/vpn/notes.txt
@@ -0,0 +1,5 @@
+sudo openvpn --config server.conf
+01-5548000
+ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "database put GAME passcode 89889"'
+ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "database put GAME ip 4.4.4.4"'
+ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "devstate change Custom:GAME NOT_INUSE"' \ No newline at end of file
diff --git a/vpn/server.conf b/vpn/server.conf
new file mode 100644
index 0000000..f84f4f4
--- /dev/null
+++ b/vpn/server.conf
@@ -0,0 +1,8 @@
+remote 80.93.22.22
+dev tun
+ifconfig 10.10.10.2 10.10.10.1
+secret static.key
+keepalive 10 60
+ping-timer-rem
+persist-tun
+persist-key
diff --git a/vpn/static.key b/vpn/static.key
new file mode 100644
index 0000000..4a41586
--- /dev/null
+++ b/vpn/static.key
@@ -0,0 +1,21 @@
+#
+# 2048 bit OpenVPN static key
+#
+-----BEGIN OpenVPN Static key V1-----
+74e9845064b9d1e5ad68028973a598b4
+ad7256441164270c532cae89917f6f8f
+a2c21acd116b0d7e39389ebd14c10922
+61dc7ef520a644c30bdea7b6e22f15a8
+980e5f0cce7e7f028c737c67a3289bac
+4434c431e27d88169c7c3674b779d902
+ed21bae0fbec6c66bb964be2a03faf44
+2dbc293b459fc688f5b1f0142af29513
+6c9d88c93056745268869681bc841712
+6187281b1256b9c58cf02160fa6accc3
+c1f3e4291d733d797ecf1b3fc055ed70
+aad59bb9ce34e41d18fd5ebfaf5939b8
+8efafb59efad92ce3d5d1413eb8fe526
+d80fc922c48fcd838b822ac11fb34a60
+3858095e677ffc22bd13c18508b67979
+3f27f6494f878aa39aa6ba702aac7e8b
+-----END OpenVPN Static key V1-----