diff options
| -rwxr-xr-x | ofAsterisk/ofAsterisk.cbp | 63 | ||||
| -rwxr-xr-x | ofAsterisk/src/Asterisk.cpp | 42 | ||||
| -rw-r--r-- | vfg/addons.make | 2 | ||||
| -rwxr-xr-x | vfg/bin/data/VODA_MUS_WEWISHU_Midi_v.2.2.xml | 406 | ||||
| -rwxr-xr-x | vfg/src/main.cpp | 4 | ||||
| -rwxr-xr-x | vfg/src/music.cpp | 34 | ||||
| -rwxr-xr-x | vfg/src/music.h | 10 | ||||
| -rwxr-xr-x | vfg/src/testApp.cpp | 227 | ||||
| -rwxr-xr-x | vfg/src/testApp.h | 42 | ||||
| -rw-r--r-- | vfg/vfg.layout | 26 | ||||
| -rwxr-xr-x | vpn/notes.txt | 12 |
11 files changed, 727 insertions, 141 deletions
diff --git a/ofAsterisk/ofAsterisk.cbp b/ofAsterisk/ofAsterisk.cbp index fe155a0..af6def7 100755 --- a/ofAsterisk/ofAsterisk.cbp +++ b/ofAsterisk/ofAsterisk.cbp @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_project_file> <FileVersion major="1" minor="6" /> <Project> @@ -6,7 +6,7 @@ <Option makefile_is_custom="1" /> <Option pch_mode="2" /> <Option compiler="gcc" /> - <Option virtualFolders="addons/;src/;build config/;" /> + <Option virtualFolders="addons/;src/;build config/;addons/ofxNetwork/src/;" /> <Build> <Target title="Debug"> <Option output="bin/$(PROJECT_NAME)_debug" prefix_auto="1" extension_auto="1" /> @@ -27,52 +27,61 @@ <Option projectLinkerOptionsRelation="2" /> </Target> </Build> - <Unit filename="config.make"> - <Option virtualFolder="build config" /> - </Unit> - <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 filename="../../../openFrameworks/addons/ofxNetwork/src/ofxNetwork.h"> + <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Extensions> - <code_completion /> - <envvars /> - <debugger /> - </Extensions> <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxNetworkUtils.h"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.cpp"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.cpp"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxUDPManager.cpp"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.h"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.h"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPManager.cpp"> <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/ofxNetwork.h"> - <Option virtualFolder="addons/ofxNetwork/src" /> - </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.cpp"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.cpp"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPManager.cpp"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPServer.h"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> - <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxTCPClient.h"> + <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxUDPManager.cpp"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> <Unit filename="../../../openFrameworks/addons/ofxNetwork/src/ofxUDPManager.h"> <Option virtualFolder="addons/ofxNetwork/src" /> </Unit> + <Unit filename="addons.make"> + <Option virtualFolder="build config/" /> + </Unit> + <Unit filename="config.make"> + <Option virtualFolder="build config" /> + </Unit> + <Unit filename="src/Asterisk.cpp"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="src/Asterisk.h"> + <Option virtualFolder="src/" /> + </Unit> + <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> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + </Extensions> </Project> </CodeBlocks_project_file> diff --git a/ofAsterisk/src/Asterisk.cpp b/ofAsterisk/src/Asterisk.cpp index ae85269..46957cd 100755 --- a/ofAsterisk/src/Asterisk.cpp +++ b/ofAsterisk/src/Asterisk.cpp @@ -10,12 +10,12 @@ Asterisk::Asterisk() udpConnection.Bind(5000);
udpConnection.SetNonBlocking(true);
cmd("ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx \"database put GAME passcode 1234\"'");
- state=WAITING;
+ state=WAITING; //for acknowledge
printf("Asterisk: created socket and connected to server\n");
}
void Asterisk::startGame(){
- if (state!=PLAYING) {
+ if (state==IDLE) {
cmd("ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx \"devstate change Custom:GAME NOT_INUSE\"'");
printf("Asterisk: attempting to dequeue\n");
state=STARTING;
@@ -32,31 +32,39 @@ void Asterisk::endGame(string score){ }
}
void Asterisk::cmd(string s) {
- file = popen(s.c_str(), "r");
- int filenum=fileno(file);
- //fcntl(filenum, F_SETFL, O_NONBLOCK); //doesn't seem to work, still pauses
+ file = popen(s.c_str(), "re");
+ filenum=fileno(file);
+ fcntl(filenum, F_SETFL, O_NONBLOCK); //doesn't seem to work, still pauses
//pclose(file); //discard the pipe THIS IS BLOCKING
}
int Asterisk::update(){
- //how to capture stdin response from popen
- /*
+ //capture stdin response from popen
if (state==WAITING||state==STARTING) {
- char buf[100];
- ssize_t r = read(filenum, buf, 100);
+ char buf[1000];
+ ssize_t r = read(filenum, buf, 1000);
//if (r == -1 && errno == EAGAIN)
//no data yet
//else
- if (r > 0)
- //received data
- printf("%s\n",buf);
+ if (r > 0) {
pclose(file);
- state=IDLE;
- ///else
- //pipe closed
+ string msg=string(buf);
+ //received data is always a command ACKNOWLEDGEMENT
+ if (msg.compare("Changing GAME to NOT_INUSE")==0) {
+ printf("player dequeued\n");
+ state=PLAYING;
+ }
+ else if (msg.compare(0,5,"gameQ")==0) {
+ //queue status message
+ }
+ else {
+ printf("stdin says: %s\n",buf);
+ state=IDLE;
+ }
+ }
}
- */
- //check messages and pipes, returns new keypresses
+
+ //check udp messages, return new keypresses
char udpMessage[10000];
udpConnection.Receive(udpMessage,10000);
string msg=udpMessage;
diff --git a/vfg/addons.make b/vfg/addons.make index 9a23735..ddc7e24 100644 --- a/vfg/addons.make +++ b/vfg/addons.make @@ -3,3 +3,5 @@ ofxSpriteManager ofxAssets ofxExtras ofxNetwork +ofxFenster +ofxGui diff --git a/vfg/bin/data/VODA_MUS_WEWISHU_Midi_v.2.2.xml b/vfg/bin/data/VODA_MUS_WEWISHU_Midi_v.2.2.xml new file mode 100755 index 0000000..eb8aca4 --- /dev/null +++ b/vfg/bin/data/VODA_MUS_WEWISHU_Midi_v.2.2.xml @@ -0,0 +1,406 @@ +<?xml version="1.0" encoding="ISO-8859-1"?>
+<MidiFile SMFType="0" TrackChunkAmount="1" DeltaTimeTicks="480" TimeStamp="30/11/2012 11:27:33" startnote="56">
+ <TrackChunk Size="1776">
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TrackName" Data="03 06 4d 65 6c 6f 64 79" MetaId="03">Melody</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="InstrumentName" Data="04 06 4d 65 6c 6f 64 79" MetaId="04">Melody</Event>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="KeySignature" Data="59 02 00 00" MetaId="59"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TimeSignature" Data="58 04 06 03 18 08" MetaId="58"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="<unknown>" Data="54 05 20 00 00 00 00" MetaId="54"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 14 ce b4" MetaId="51"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="80" Label="NoteOff" Data="00 2f"/>
+ <Event DeltaTimeTicks="1196" Type="MIDI" Id="90" Label="NoteOn" Data="3a 22"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="188" Type="MIDI" Id="80" Label="NoteOff" Data="3f 1f"/>
+ <Event DeltaTimeTicks="20" Type="MIDI" Id="80" Label="NoteOff" Data="3a 2f"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 0f"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="80" Label="NoteOff" Data="41 54"/>
+ <Event DeltaTimeTicks="88" Type="MIDI" Id="90" Label="NoteOn" Data="3e 40"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 4c"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3c 54"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="222" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="38 4c"/>
+ <Event DeltaTimeTicks="237" Type="MIDI" Id="80" Label="NoteOff" Data="38 14"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="3c 3c"/>
+ <Event DeltaTimeTicks="182" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="58" Type="MIDI" Id="90" Label="NoteOn" Data="41 78"/>
+ <Event DeltaTimeTicks="192" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="48" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="43 5b"/>
+ <Event DeltaTimeTicks="24" Type="MIDI" Id="80" Label="NoteOff" Data="41 71"/>
+ <Event DeltaTimeTicks="96" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="43 46"/>
+ <Event DeltaTimeTicks="111" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="20" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="90" Label="NoteOn" Data="3e 63"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="218" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7c"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="193" Type="MIDI" Id="80" Label="NoteOff" Data="3a 3c"/>
+ <Event DeltaTimeTicks="47" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="218" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="22" Type="MIDI" Id="90" Label="NoteOn" Data="43 7c"/>
+ <Event DeltaTimeTicks="173" Type="MIDI" Id="80" Label="NoteOff" Data="43 71"/>
+ <Event DeltaTimeTicks="67" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="44 43"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="80" Label="NoteOff" Data="43 5b"/>
+ <Event DeltaTimeTicks="113" Type="MIDI" Id="90" Label="NoteOn" Data="43 54"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="44 1f"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="41 54"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="43 54"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="90" Label="NoteOn" Data="3f 2a"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="41 7f"/>
+ <Event DeltaTimeTicks="230" Type="MIDI" Id="90" Label="NoteOn" Data="3c 6a"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3f 72"/>
+ <Event DeltaTimeTicks="227" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="89" Type="MIDI" Id="80" Label="NoteOff" Data="3a 55"/>
+ <Event DeltaTimeTicks="31" Type="MIDI" Id="90" Label="NoteOn" Data="3a 5f"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="20" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="220" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="11" Type="MIDI" Id="80" Label="NoteOff" Data="41 36"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="23" Type="MIDI" Id="80" Label="NoteOff" Data="3e 71"/>
+ <Event DeltaTimeTicks="434" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7a"/>
+ <Event DeltaTimeTicks="23" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="240" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 13 12 d0" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="30" Type="MIDI" Id="80" Label="NoteOff" Data="3a 35"/>
+ <Event DeltaTimeTicks="160" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="50" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 1f"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3f 55"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="41 78"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="3f 4c"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="234" Type="MIDI" Id="90" Label="NoteOn" Data="38 43"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="236" Type="MIDI" Id="90" Label="NoteOn" Data="3c 54"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="38 72"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="64" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="18" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="102" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="43 54"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="3f 69"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="5" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3a 5f"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7c"/>
+ <Event DeltaTimeTicks="196" Type="MIDI" Id="80" Label="NoteOff" Data="3a 3c"/>
+ <Event DeltaTimeTicks="38" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="221" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="90" Label="NoteOn" Data="43 71"/>
+ <Event DeltaTimeTicks="147" Type="MIDI" Id="80" Label="NoteOff" Data="43 63"/>
+ <Event DeltaTimeTicks="93" Type="MIDI" Id="90" Label="NoteOn" Data="43 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="44 5f"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="43 31"/>
+ <Event DeltaTimeTicks="110" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="44 0f"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="43 6a"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="90" Label="NoteOn" Data="3f 4c"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="80" Label="NoteOff" Data="41 4d"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="90" Label="NoteOn" Data="3c 78"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="14" Type="MIDI" Id="80" Label="NoteOff" Data="3c 1e"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="80" Label="NoteOff" Data="3a 69"/>
+ <Event DeltaTimeTicks="29" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="80" Label="NoteOff" Data="3a 55"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="24" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7c"/>
+ <Event DeltaTimeTicks="216" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="225" Type="MIDI" Id="90" Label="NoteOn" Data="3f 35"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="80" Label="NoteOff" Data="3e 63"/>
+ <Event DeltaTimeTicks="448" Type="MIDI" Id="80" Label="NoteOff" Data="3f 72"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="90" Label="NoteOn" Data="3a 4c"/>
+ <Event DeltaTimeTicks="240" 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="TempoSet" Data="51 03 11 9b 36" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="3a 69"/>
+ <Event DeltaTimeTicks="211" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="194" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="46" Type="MIDI" Id="90" Label="NoteOn" Data="3f 69"/>
+ <Event DeltaTimeTicks="207" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7a"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="90" Label="NoteOn" Data="3e 78"/>
+ <Event DeltaTimeTicks="415" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="65" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="184" Type="MIDI" Id="80" Label="NoteOff" Data="3e 6a"/>
+ <Event DeltaTimeTicks="56" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="80" Label="NoteOff" Data="3f 69"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3c 78"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="239" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="351" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 11 f3 96" MetaId="51"/>
+ <Event DeltaTimeTicks="34" Type="MIDI" Id="80" Label="NoteOff" Data="3a 15"/>
+ <Event DeltaTimeTicks="86" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="203" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="43 78"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="80" Label="NoteOff" Data="43 6a"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="90" Label="NoteOn" Data="43 7c"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 78"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="43 63"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="41 4d"/>
+ <Event DeltaTimeTicks="79" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="35" Type="MIDI" Id="90" Label="NoteOn" Data="3f 55"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="46 69"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="80" Label="NoteOff" Data="46 72"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="80" Label="NoteOff" Data="3a 4c"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="83" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="3a 43"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="90" Label="NoteOn" Data="3e 63"/>
+ <Event DeltaTimeTicks="11" Type="MIDI" Id="80" Label="NoteOff" Data="41 5b"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="90" Label="NoteOn" Data="3f 4c"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="463" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="4" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 10 a5 5d" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="b0" Label="ControlChange" Data="01 55"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="3a 4c"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="116" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="72" Type="MIDI" Id="80" Label="NoteOff" Data="3f 1f"/>
+ <Event DeltaTimeTicks="52" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 0f"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="80" Label="NoteOff" Data="41 54"/>
+ <Event DeltaTimeTicks="88" Type="MIDI" Id="90" Label="NoteOn" Data="3e 40"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 4c"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3c 54"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="222" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="38 4c"/>
+ <Event DeltaTimeTicks="237" Type="MIDI" Id="80" Label="NoteOff" Data="38 14"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="3c 3c"/>
+ <Event DeltaTimeTicks="182" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="58" Type="MIDI" Id="90" Label="NoteOn" Data="41 78"/>
+ <Event DeltaTimeTicks="192" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="48" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="43 5b"/>
+ <Event DeltaTimeTicks="24" Type="MIDI" Id="80" Label="NoteOff" Data="41 71"/>
+ <Event DeltaTimeTicks="96" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="43 46"/>
+ <Event DeltaTimeTicks="111" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="20" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="90" Label="NoteOn" Data="3e 63"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="218" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7c"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="193" Type="MIDI" Id="80" Label="NoteOff" Data="3a 3c"/>
+ <Event DeltaTimeTicks="47" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="218" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="22" Type="MIDI" Id="90" Label="NoteOn" Data="43 7c"/>
+ <Event DeltaTimeTicks="173" Type="MIDI" Id="80" Label="NoteOff" Data="43 71"/>
+ <Event DeltaTimeTicks="67" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="44 43"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="80" Label="NoteOff" Data="43 5b"/>
+ <Event DeltaTimeTicks="113" Type="MIDI" Id="90" Label="NoteOn" Data="43 54"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="44 1f"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="41 54"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="43 54"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="90" Label="NoteOn" Data="3f 2a"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="41 7f"/>
+ <Event DeltaTimeTicks="230" Type="MIDI" Id="90" Label="NoteOn" Data="3c 6a"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3f 72"/>
+ <Event DeltaTimeTicks="227" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="7" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="89" Type="MIDI" Id="80" Label="NoteOff" Data="3a 55"/>
+ <Event DeltaTimeTicks="31" Type="MIDI" Id="90" Label="NoteOn" Data="3a 5f"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="20" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="220" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="11" Type="MIDI" Id="80" Label="NoteOff" Data="41 36"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="23" Type="MIDI" Id="80" Label="NoteOff" Data="3e 71"/>
+ <Event DeltaTimeTicks="434" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7a"/>
+ <Event DeltaTimeTicks="23" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="240" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 0e 88 3c" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="3f 3c"/>
+ <Event DeltaTimeTicks="30" Type="MIDI" Id="80" Label="NoteOff" Data="3a 35"/>
+ <Event DeltaTimeTicks="160" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="50" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="16" Type="MIDI" Id="80" Label="NoteOff" Data="3f 1f"/>
+ <Event DeltaTimeTicks="104" Type="MIDI" Id="90" Label="NoteOn" Data="3f 55"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="41 78"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="3f 4c"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="234" Type="MIDI" Id="90" Label="NoteOn" Data="38 43"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="236" Type="MIDI" Id="90" Label="NoteOn" Data="3c 54"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="38 72"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="64" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="18" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="102" Type="MIDI" Id="90" Label="NoteOn" Data="41 63"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="43 54"/>
+ <Event DeltaTimeTicks="112" Type="MIDI" Id="90" Label="NoteOn" Data="3f 69"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="41 7c"/>
+ <Event DeltaTimeTicks="100" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="5" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3a 5f"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7c"/>
+ <Event DeltaTimeTicks="196" Type="MIDI" Id="80" Label="NoteOff" Data="3a 3c"/>
+ <Event DeltaTimeTicks="38" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="221" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="90" Label="NoteOn" Data="43 71"/>
+ <Event DeltaTimeTicks="147" Type="MIDI" Id="80" Label="NoteOff" Data="43 63"/>
+ <Event DeltaTimeTicks="93" Type="MIDI" Id="90" Label="NoteOn" Data="43 71"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="44 5f"/>
+ <Event DeltaTimeTicks="10" Type="MIDI" Id="80" Label="NoteOff" Data="43 31"/>
+ <Event DeltaTimeTicks="110" Type="MIDI" Id="90" Label="NoteOn" Data="43 63"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="80" Label="NoteOff" Data="44 0f"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="90" Label="NoteOn" Data="41 6a"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="43 6a"/>
+ <Event DeltaTimeTicks="107" Type="MIDI" Id="90" Label="NoteOn" Data="3f 4c"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="80" Label="NoteOff" Data="41 4d"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="90" Label="NoteOn" Data="3c 78"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="14" Type="MIDI" Id="80" Label="NoteOff" Data="3c 1e"/>
+ <Event DeltaTimeTicks="77" Type="MIDI" Id="80" Label="NoteOff" Data="3a 69"/>
+ <Event DeltaTimeTicks="29" Type="MIDI" Id="90" Label="NoteOn" Data="3a 55"/>
+ <Event DeltaTimeTicks="108" Type="MIDI" Id="80" Label="NoteOff" Data="3a 55"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="24" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7c"/>
+ <Event DeltaTimeTicks="216" Type="MIDI" Id="90" Label="NoteOn" Data="3e 54"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="80" Label="NoteOff" Data="41 46"/>
+ <Event DeltaTimeTicks="225" Type="MIDI" Id="90" Label="NoteOn" Data="3f 35"/>
+ <Event DeltaTimeTicks="17" Type="MIDI" Id="80" Label="NoteOff" Data="3e 63"/>
+ <Event DeltaTimeTicks="448" Type="MIDI" Id="80" Label="NoteOff" Data="3f 72"/>
+ <Event DeltaTimeTicks="15" Type="MIDI" Id="90" Label="NoteOn" Data="3a 4c"/>
+ <Event DeltaTimeTicks="120" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 0d 76 b0" MetaId="51"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="3a 69"/>
+ <Event DeltaTimeTicks="211" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="194" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="46" Type="MIDI" Id="90" Label="NoteOn" Data="3f 69"/>
+ <Event DeltaTimeTicks="207" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7a"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="90" Label="NoteOn" Data="3e 78"/>
+ <Event DeltaTimeTicks="415" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="65" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="184" Type="MIDI" Id="80" Label="NoteOff" Data="3e 6a"/>
+ <Event DeltaTimeTicks="56" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="80" Label="NoteOff" Data="3f 69"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3c 78"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="239" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="385" Type="MIDI" Id="80" Label="NoteOff" Data="3a 15"/>
+ <Event DeltaTimeTicks="86" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="203" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="43 78"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="80" Label="NoteOff" Data="43 6a"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="90" Label="NoteOn" Data="43 7c"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 78"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="43 63"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="41 4d"/>
+ <Event DeltaTimeTicks="79" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="35" Type="MIDI" Id="90" Label="NoteOn" Data="3f 55"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="46 69"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="80" Label="NoteOff" Data="46 72"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="80" Label="NoteOff" Data="3a 4c"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="83" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="3a 43"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="90" Label="NoteOn" Data="3e 63"/>
+ <Event DeltaTimeTicks="11" Type="MIDI" Id="80" Label="NoteOff" Data="41 5b"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="90" Label="NoteOn" Data="3f 4c"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="463" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="4" Type="MIDI" Id="90" Label="NoteOn" Data="3a 4c"/>
+ <Event DeltaTimeTicks="236" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="4" Type="Meta" Id="ff" Label="TempoSet" Data="51 03 0d 14 36" MetaId="51"/>
+ <Event DeltaTimeTicks="0" Type="MIDI" Id="90" Label="NoteOn" Data="3f 43"/>
+ <Event DeltaTimeTicks="214" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="26" Type="MIDI" Id="90" Label="NoteOn" Data="3f 5f"/>
+ <Event DeltaTimeTicks="194" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="46" Type="MIDI" Id="90" Label="NoteOn" Data="3f 69"/>
+ <Event DeltaTimeTicks="207" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7a"/>
+ <Event DeltaTimeTicks="33" Type="MIDI" Id="90" Label="NoteOn" Data="3e 78"/>
+ <Event DeltaTimeTicks="415" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="65" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="184" Type="MIDI" Id="80" Label="NoteOff" Data="3e 6a"/>
+ <Event DeltaTimeTicks="56" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="228" Type="MIDI" Id="80" Label="NoteOff" Data="3f 69"/>
+ <Event DeltaTimeTicks="12" Type="MIDI" Id="90" Label="NoteOn" Data="3e 6a"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="3c 78"/>
+ <Event DeltaTimeTicks="1" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="239" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="385" Type="MIDI" Id="80" Label="NoteOff" Data="3a 15"/>
+ <Event DeltaTimeTicks="86" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="203" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="43 78"/>
+ <Event DeltaTimeTicks="166" Type="MIDI" Id="80" Label="NoteOff" Data="43 6a"/>
+ <Event DeltaTimeTicks="74" Type="MIDI" Id="90" Label="NoteOn" Data="43 7c"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="41 78"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="80" Label="NoteOff" Data="43 63"/>
+ <Event DeltaTimeTicks="117" Type="MIDI" Id="90" Label="NoteOn" Data="3f 72"/>
+ <Event DeltaTimeTicks="6" Type="MIDI" Id="80" Label="NoteOff" Data="41 4d"/>
+ <Event DeltaTimeTicks="79" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="35" Type="MIDI" Id="90" Label="NoteOn" Data="3f 55"/>
+ <Event DeltaTimeTicks="120" Type="MIDI" Id="90" Label="NoteOn" Data="46 69"/>
+ <Event DeltaTimeTicks="8" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="80" Label="NoteOff" Data="46 72"/>
+ <Event DeltaTimeTicks="3" Type="MIDI" Id="90" Label="NoteOn" Data="3a 72"/>
+ <Event DeltaTimeTicks="208" Type="MIDI" Id="80" Label="NoteOff" Data="3a 4c"/>
+ <Event DeltaTimeTicks="32" Type="MIDI" Id="90" Label="NoteOn" Data="3a 69"/>
+ <Event DeltaTimeTicks="83" Type="MIDI" Id="80" Label="NoteOff" Data="3a 72"/>
+ <Event DeltaTimeTicks="37" Type="MIDI" Id="90" Label="NoteOn" Data="3a 43"/>
+ <Event DeltaTimeTicks="101" Type="MIDI" Id="80" Label="NoteOff" Data="3a 7f"/>
+ <Event DeltaTimeTicks="19" Type="MIDI" Id="90" Label="NoteOn" Data="3c 63"/>
+ <Event DeltaTimeTicks="240" Type="MIDI" Id="90" Label="NoteOn" Data="41 71"/>
+ <Event DeltaTimeTicks="9" Type="MIDI" Id="80" Label="NoteOff" Data="3c 7f"/>
+ <Event DeltaTimeTicks="231" Type="MIDI" Id="90" Label="NoteOn" Data="3e 63"/>
+ <Event DeltaTimeTicks="11" Type="MIDI" Id="80" Label="NoteOff" Data="41 5b"/>
+ <Event DeltaTimeTicks="229" Type="MIDI" Id="90" Label="NoteOn" Data="3f 4c"/>
+ <Event DeltaTimeTicks="13" Type="MIDI" Id="80" Label="NoteOff" Data="3e 7f"/>
+ <Event DeltaTimeTicks="103" Type="MIDI" Id="80" Label="NoteOff" Data="3f 7f"/>
+ <Event DeltaTimeTicks="0" Type="Meta" Id="ff" Label="EndOfTrack" Data="2f 00" MetaId="2f"/>
+ </TrackChunk>
+</MidiFile>
diff --git a/vfg/src/main.cpp b/vfg/src/main.cpp index ead5d41..14b1008 100755 --- a/vfg/src/main.cpp +++ b/vfg/src/main.cpp @@ -6,11 +6,11 @@ int main( ){ ofAppGlutWindow window; - ofSetupOpenGL(&window, 800,800, OF_WINDOW); // <-------- setup the GL context + ofSetupOpenGL(ofxFensterManager::get(), 800,800, 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()); + ofRunFensterApp( new testApp()); } diff --git a/vfg/src/music.cpp b/vfg/src/music.cpp index d3d7807..30af87b 100755 --- a/vfg/src/music.cpp +++ b/vfg/src/music.cpp @@ -13,7 +13,7 @@ int notemap(int n) { else return 2;
} //---------------------------------------------------------------------------------------------------------- -void lyricscore::draw(){ +void lyricscore::draw(float hOffs){ int scoreTime=ofGetElapsedTimeMillis()-startTime; map<int,lyric*>::iterator iter; iter=lyrics.upper_bound(scoreTime); @@ -22,7 +22,7 @@ void lyricscore::draw(){ if ((iter->first+iter->second->duration)>scoreTime) { //outpoint of lyric previous to the one next soonest is afterwards => this lyric is visible int alpha=((iter->first+iter->second->duration)-scoreTime)<fadeout?(int)((((float)((iter->first+iter->second->duration)-scoreTime))/((float)fadeout))*255.0f):255; ofSetColor(255,255,255,alpha); - font.drawString(iter->second->text,(ofGetWidth()/2)-(font.stringWidth(iter->second->text)/2.0f), gridY[1]*ofGetHeight()); + font.drawString(iter->second->text,hOffs+(ofGetHeight()/2)-(font.stringWidth(iter->second->text)/2.0f), gridY[1]*ofGetHeight()); } } } @@ -62,10 +62,12 @@ void musicscore::parseMidi(string filename){ float time=0; //counts up in float seconds to avoid rounding errors but converts to millis for map index map<int,note*> events;
+ int startnote;
if( !XML.loadFile(filename) ){
printf("unable to load %s check data/ folder\n",filename.c_str());
}else{
+ startnote=XML.getAttribute("MidiFile", "startnote",70,0);
if(XML.pushTag("MidiFile")) {
for (int i=0;i<XML.getNumTags("TrackChunk");i++) {
XML.pushTag("TrackChunk",i);
@@ -87,7 +89,7 @@ void musicscore::parseMidi(string filename){ 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
+ if (id==128||id==144) events[(int)(time*1000.0f)]=new note(d1-startnote+70,d2,id); //noteon/off
}
}
XML.popTag();
@@ -157,13 +159,13 @@ void musicscore::setTimeframe(int millis) { timeframe=millis;
nowpoint=timeframe*0.33f;
}
-void musicscore::drawNotes(levelscore *levels) {
+void musicscore::drawNotes(float hOffs,levelscore *levels) {
int scoreStart=ofGetElapsedTimeMillis()-startTime-nowpoint;
int scoreEnd=scoreStart+timeframe;
//note drawing 46h - 52h
int numnotes=16;
int firstnote=70;
- float widthStep=((float)ofGetWidth())/numnotes;
+ float widthStep=((float)ofGetHeight())/numnotes;
float heightStep=((float)ofGetHeight())/timeframe;
map<int,note*>::iterator iter;
@@ -173,14 +175,14 @@ void musicscore::drawNotes(levelscore *levels) { int thisstart=iter->first-scoreStart;
int thislength=iter->second->duration;
ofSetColor(ofColor::fromHsb(((float)thisnote*255)/numnotes,200,100),(((float)(thisstart*heightStep))/ofGetHeight()*128)+32);
- ofRect(thisnote*widthStep,ofGetHeight()-(thisstart*heightStep),widthStep,-(thislength*heightStep));
+ ofRect(hOffs+thisnote*widthStep,ofGetHeight()-(thisstart*heightStep),widthStep,-(thislength*heightStep));
}
//visualise keyThreshold
ofSetColor(255,0,0,70);
- ofRect(0,ofGetHeight()-(nowpoint*heightStep),ofGetWidth(),keyThresh*heightStep);
+ ofRect(hOffs,ofGetHeight()-(nowpoint*heightStep),ofGetHeight(),keyThresh*heightStep);
}
-void musicscore::drawFlakes(levelscore *levels,float scale) {
+void musicscore::drawFlakes(float hOffs,levelscore *levels,float scale) {
ofEnableAlphaBlending();
int now=ofGetElapsedTimeMillis()-startTime;
int screenStart=now-nowpoint;
@@ -188,7 +190,7 @@ void musicscore::drawFlakes(levelscore *levels,float scale) { //note drawing 46h - 52h
int numnotes=16;
int firstnote=70;
- float widthStep=((float)ofGetWidth())/numnotes;
+ float widthStep=((float)ofGetHeight())/numnotes;
float heightStep=((float)ofGetHeight())/timeframe;
map<int,flake*>::iterator iter;
//draw flakes
@@ -203,7 +205,7 @@ void musicscore::drawFlakes(levelscore *levels,float scale) { //if (iter->second->activated&&(!iter->second->disintegrated)) iter->second->disintegrate();
ofSetColor(255,255,255);
- iter->second->draw(gridX[notemap(iter->second->num)+1]*ofGetWidth(),ofGetHeight()-(thisstart*heightStep),scale);
+ iter->second->draw((gridX[notemap(iter->second->num)+1]*ofGetHeight())+hOffs,ofGetHeight()-(thisstart*heightStep),scale);
//todo - make all drawing resolution independent
}
@@ -283,10 +285,10 @@ void song::preRoll(long preroll) { isPlaying=true;
notes.makeFlakes(fThreshStart,fThreshEnd,&levels);
}
-void song::drawNotes(){
- notes.drawNotes(&levels);
+void song::drawNotes(float hOffs){
+ notes.drawNotes(hOffs,&levels);
}
-void song::draw(float scale){
+void song::draw(float hOffs,float scale){
int songTime=ofGetElapsedTimeMillis()-startTime;
if (isPlaying) {
if (isPreroll) {
@@ -306,15 +308,15 @@ void song::draw(float scale){ }
}
else melody.setVolume(1.0f);
- notes.drawFlakes(&levels,scale); - lyrics.draw();
+ notes.drawFlakes(hOffs,&levels,scale); + lyrics.draw(hOffs);
if (songTime>levels.length) {
printf("stopping: %i (%i)\n",songTime,levels.length);
stop();
}
}
- ofDrawBitmapString(ofToString((float)songTime/1000.0f,1)+" "+ofToString(levels.getLevel(songTime))+" "+ofToString(notes.missedFlakes)+" of "+ofToString(levels.getLives(songTime)),10,(ofGetHeight()*gridY[1])-3);
+ ofDrawBitmapString(ofToString((float)songTime/1000.0f,1)+" "+ofToString(levels.getLevel(songTime))+" "+ofToString(notes.missedFlakes)+" of "+ofToString(levels.getLives(songTime)),hOffs+10,(ofGetHeight()*gridY[1])-3);
}
void song::playerControl(int key){
notes.playerControl(key);
diff --git a/vfg/src/music.h b/vfg/src/music.h index 3a9f299..8733bb1 100755 --- a/vfg/src/music.h +++ b/vfg/src/music.h @@ -144,7 +144,7 @@ class lyricscore: public score { }
} - void draw();
+ void draw(float hOffs);
private:
map<int,lyric*> lyrics; ofTrueTypeFont font; @@ -157,8 +157,8 @@ class musicscore: public score { musicscore();
void parseMidi(string filename);
void setTimeframe(int millis);
- void drawNotes(levelscore *levels);
- void drawFlakes(levelscore *levels,float scale);
+ void drawNotes(float hOffs,levelscore *levels);
+ void drawFlakes(float hOffs,levelscore *levels,float scale);
void playerControl(int key);
void makeFlakes(int threshStart,int threshEnd,levelscore *levels);
void printNotes();
@@ -189,8 +189,8 @@ class song { void setTimeframe(int millis);
void setFlakeThresh(int tS,int tE);
void setKeyThresh(int millis);
- void drawNotes();
- void draw(float scale); + void drawNotes(float hOffs);
+ void draw(float hOffs,float scale); int missedNote();
int hitNote();
bool isPlaying;
diff --git a/vfg/src/testApp.cpp b/vfg/src/testApp.cpp index 53cfa95..5324b23 100755 --- a/vfg/src/testApp.cpp +++ b/vfg/src/testApp.cpp @@ -1,9 +1,30 @@ #include "testApp.h" //bug in codeblocks: it sometimes checks for existence of executable from previous project + //-------------------------------------------------------------- +guiWindow::~guiWindow(){ + cout << "gui window destroyed" << endl; +} +void guiWindow::setup(){} +void guiWindow::setParent(testApp *p){ + parent=p; +} +void guiWindow::draw(){ + + parent->gui.draw(); + +} +void guiWindow::dragEvent(ofDragInfo dragInfo, ofxFenster* win){ + parent->dragEvent(dragInfo); +} +void guiWindow::windowMoved(int x,int y){ + //printf("window moved!\n"); +} + +//---------------------------------------------------------------------- void testApp::setup(){ - //songs.push_back(new song("WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Backing_v.2.1.mp3","WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Lead_v.2.1.mp3","VODA_MUS_WEWISHU_Midi_v.2.1.xml","Lyrics_WeWishYou.2.1.xml","Levels_WeWishYou.2.1.xml")); + songs.push_back(new song("WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Backing_v.2.1.mp3","WeWishYouAMerryChistmas_v.2.1/VODA_MUS_WEWISHU_Lead_v.2.1.mp3","VODA_MUS_WEWISHU_Midi_v.2.2.xml","Lyrics_WeWishYou.2.1.xml","Levels_WeWishYou.2.1.xml")); songs.push_back(new song("DeckTheHalls_v.4.0/VODA_MUS_DeckTheHalls-Backing_v.4.0.mp3","DeckTheHalls_v.4.0/VODA_MUS_DeckTheHalls-Lead_v.4.0.mp3","VODA_MIDI_DeckTheHalls-v.4.0.xml","Lyrics_DeckTheHalls.4.0.xml","Levels_DeckTheHalls.4.0.xml")); songs.push_back(new song("DingDong.v.2.2/VODA_MUS_DingDong_Backing_v.2.2.mp3","DingDong.v.2.2/VODA_MUS_DingDong_Melody_v.2.2.mp3","VODA_MIDI_DingDong_v.2.2.xml","Lyrics_DingDong.2.2.xml","Levels_DingDong.2.2.xml")); songs.push_back(new song("JingleBells_v.4.0/VODA_MUS_JingleBells_Backing_v.4.0.mp3","JingleBells_v.4.0/VODA_MUS_JingleBells_Melody_v.4.0.mp3","VODA_MUS_JingleBells_MIDI_v.4.0.xml","Lyrics_JingleBells.4.0.xml","Levels_JingleBells.4.0.xml")); @@ -19,10 +40,12 @@ void testApp::setup(){ penguins[1].load("Penguin-Purple.xml"); penguins[2].load("Penguin-Green.xml"); + /* temp save time for (int i=0;i<3;i++) raccoons.push_back(Animal()); raccoons[0].load("Raccoon-Blue.xml"); raccoons[1].load("Raccoon-Purple.xml"); raccoons[2].load("Raccoon-Green.xml"); + */ tags.push_back(new Tag("Tags/TAG_Get-Ready.png",2000,0.5,0)); tags.push_back(new Tag("Tags/TAG_Level-1.png",3000,0.5,0)); @@ -49,6 +72,12 @@ void testApp::setup(){ //release: commented out: 436m 256m //508fr 1.4s load in use: 836m 443m + + intro.loadMovie("Game-Demo_v3.mp4"); + intro.setLoopState(OF_LOOP_NONE); + + advert.loadMovie("GW2003761_GRY-VFBR055-060_MPEG_hi.mpg"); + advert.setLoopState(OF_LOOP_NONE); background.loadMovie("Background_v3.mp4"); background.setLoopState(OF_LOOP_NORMAL); @@ -58,9 +87,32 @@ void testApp::setup(){ showFPS=true; showVis=true; + fullscreenoutput=false; currentsong=0; nextsong=0; + gamestate=GAME_READY; + + + guiWin=new guiWindow(); + gui.setup("","panel.xml",0,0); + + threshStart=2000; + gui.add(tS.setup("start threshold",threshStart,0,4000,255)); + threshEnd=500; + gui.add(tE.setup("end threshold",threshEnd,0,4000,255)); + timescale=5000; + gui.add(ts.setup("timescale",timescale,0,10000,255)); + keyThresh=1500; + gui.add(kT.setup("keythresh",keyThresh,0,4000,255)); + + ofxFenster* win=ofxFensterManager::get()->createFenster(0, 0, 200, 400, OF_WINDOW); + win->setWindowTitle("config"); + win->addListener(guiWin); + ofAddListener(win->events.keyPressed, this, &testApp::keyPressedEvent); + guiWin->setup(); + guiWin->setParent(this); + } /* void testApp::loadanimals(string which) { @@ -92,15 +144,16 @@ void testApp::update(){ if (ret==1000) { currentlevel=0; currentsong=nextsong; - songs[currentsong]->setTimeframe(3000); - songs[currentsong]->setFlakeThresh(1000,100); - songs[currentsong]->setKeyThresh(1000); + songs[currentsong]->setTimeframe(timescale); + songs[currentsong]->setFlakeThresh(threshStart,threshEnd); + songs[currentsong]->setKeyThresh(keyThresh); songs[currentsong]->preRoll(750); tags[0]->play(); nextsong=(nextsong+1)%songs.size(); + gamestate=GAME_PLAYING; } else if (ret>48&&ret<52) { - songs[currentsong]->playerControl(ret-48); + songs[currentsong]->playerControl(ret-49); (*playanimal)[ret-49].playNow("Clap"); } if (songs[currentsong]->isPlaying&&songs[currentsong]->getLevel(ofGetElapsedTimeMillis()+4000)>currentlevel) { @@ -119,55 +172,97 @@ void testApp::update(){ } background.update(); banner.update(); + intro.update(); + advert.update(); } //-------------------------------------------------------------- void testApp::draw(){ ofDisableAlphaBlending(); ofSetColor(255,255,255); - background.draw(0,0,ofGetWidth(),ofGetHeight()); - float scale=ofGetHeight()/1080.0f; - - ofEnableAlphaBlending(); - vignette.draw(0,0,ofGetWidth(),ofGetHeight()); - //ofBackground(0,0,0,0.1); - /* - ofSetColor(0,0,0,100); - ofRect(0,0,ofGetWidth(),ofGetHeight()); - */ + float hOffs=(ofGetWidth()-ofGetHeight())/2; + float bannerscale,scale; //this old chestnut + switch(gamestate) { + case GAME_READY: + case GAME_PLAYING: + background.draw(hOffs,0,ofGetHeight(),ofGetHeight()); + scale=ofGetHeight()/1080.0f; - if (songs[currentsong]->isPlaying) { - ofSetColor(255,255,255); - if (showVis) songs[currentsong]->drawNotes(); - int missed=songs[currentsong]->missedNote(); - if (missed>-1) (*playanimal)[missed].playNow("Shudder"); - int hit=songs[currentsong]->hitNote(); - if (hit>-1) (*playanimal)[hit].play("Catch"); - } - ofSetColor(255,255,255); - for (int i=0;i<3;i++) (*playanimal)[i].draw(gridX[i+1]*ofGetWidth(),gridY[0]*ofGetHeight(),scale); - if (songs[currentsong]->isPlaying) { - ofSetColor(255,255,255); - lyricspanel->draw(ofGetWidth()*0.5,ofGetHeight()*gridY[1],scale); - songs[currentsong]->draw(scale); - } - else { - ofDrawBitmapString("game over!", (ofGetWidth()/2)-25,(ofGetHeight()/2)-5); - logos[1]->draw(gridX[0]*ofGetWidth(),gridY[1]*ofGetHeight(),scale); - } - ofSetColor(255,255,255); - for (int i=0;i<tags.size();i++) { - if (tags[i]->isPlaying) tags[i]->draw(0.5f*ofGetWidth(),0,scale); + ofEnableAlphaBlending(); + vignette.draw(hOffs,0,ofGetHeight(),ofGetHeight()); + //ofBackground(0,0,0,0.1); + /* + ofSetColor(0,0,0,100); + ofRect(0,0,ofGetWidth(),ofGetHeight()); + */ + + if (songs[currentsong]->isPlaying) { + ofSetColor(255,255,255); + if (showVis) songs[currentsong]->drawNotes(hOffs); + int missed=songs[currentsong]->missedNote(); + if (missed>-1) (*playanimal)[missed].playNow("Shudder"); + int hit=songs[currentsong]->hitNote(); + if (hit>-1) (*playanimal)[hit].play("Catch"); + } + else { + if (gamestate==GAME_PLAYING) { + game.endGame("GOOD!"); + gamestate=GAME_READY; + } + } + ofSetColor(255,255,255); + for (int i=0;i<3;i++) (*playanimal)[i].draw(hOffs+(gridX[i+1]*ofGetHeight()),gridY[0]*ofGetHeight(),scale); + if (songs[currentsong]->isPlaying) { + ofSetColor(255,255,255); + lyricspanel->draw(ofGetWidth()*0.5,ofGetHeight()*gridY[1],scale); + songs[currentsong]->draw(hOffs,scale); + } + else { + ofDrawBitmapString("game over!", (ofGetWidth()/2)-25,(ofGetHeight()/2)-5); + logos[1]->draw((gridX[0]*ofGetHeight())+hOffs,gridY[1]*ofGetHeight(),scale); + } + ofSetColor(255,255,255); + for (int i=0;i<tags.size();i++) { + if (tags[i]->isPlaying) tags[i]->draw(0.5f*ofGetWidth(),0,scale); + } + logos[0]->draw((gridX[0]*ofGetHeight())+hOffs,0,scale); + bannerscale=songs[currentsong]->isPlaying?scale*(1.0f-(max(0.0,min(((float)songs[currentsong]->getCurrentTime())*.001,1.0))*0.325)):scale; + banner.draw(ofGetWidth()*0.5,0,bannerscale); + char buf[30]; + sprintf(buf,"%.1f",ofGetFrameRate()); + if (showFPS) ofDrawBitmapString(buf, hOffs+ofGetHeight()-50,(ofGetHeight()*gridY[1])-3); + break; + case GAME_INTRO: + intro.draw(hOffs,0,ofGetHeight(),ofGetHeight()); + if (intro.getCurrentFrame()==intro.getTotalNumFrames()) { + gamestate=GAME_READY; + } + break; + case GAME_ADVERT: + float aspect=advert.getHeight()/advert.getWidth(); + float wOffs=(ofGetHeight()-(ofGetWidth()*aspect))*0.5; + advert.draw(0,wOffs,ofGetWidth(),ofGetWidth()*aspect); + if (advert.getCurrentFrame()==advert.getTotalNumFrames()) { + gamestate=GAME_READY; + } + break; } - logos[0]->draw(gridX[0]*ofGetWidth(),0,scale); - float bannerscale=songs[currentsong]->isPlaying?scale*(1.0f-(max(0.0,min(((float)songs[currentsong]->getCurrentTime())*.001,1.0))*0.325)):scale; - banner.draw(ofGetWidth()*0.5,0,bannerscale); - char buf[30]; - sprintf(buf,"%.1f",ofGetFrameRate()); - if (showFPS) ofDrawBitmapString(buf, ofGetWidth()-50,(ofGetHeight()*gridY[1])-3); } - +//-------------------------------------------------------------- +void testApp::keyPressedEvent(ofKeyEventArgs &args) { + printf("window key pressed: %i (%c)\n",args.key,args.key); + keyPressed(args.key); +} +void testApp::keyPressed(int key, ofxFenster* win){ + printf("window sent %i\n",key); + if(key == '='){ + fullscreenoutput=!fullscreenoutput; + win->setFullscreen(fullscreenoutput); + printf("resolution: %ix%i %s\n",win->getWidth(),win->getHeight(),fullscreenoutput?"fullscreen":"windowed"); + } + else keyPressed(key); +} //-------------------------------------------------------------- void testApp::keyPressed(int key){ switch (key) { @@ -175,9 +270,9 @@ void testApp::keyPressed(int key){ if (!songs[currentsong]->isPlaying) { currentlevel=0; currentsong=nextsong; - songs[currentsong]->setTimeframe(5000); - songs[currentsong]->setFlakeThresh(2000,500); - songs[currentsong]->setKeyThresh(1500); + songs[currentsong]->setTimeframe(timescale); + songs[currentsong]->setFlakeThresh(threshStart,threshEnd); + songs[currentsong]->setKeyThresh(keyThresh); songs[currentsong]->preRoll(750); tags[0]->play(); nextsong=(nextsong+1)%songs.size(); @@ -190,7 +285,27 @@ void testApp::keyPressed(int key){ (*playanimal)[key-'1'].playNow("Clap"); break; case 's': - game.startGame(); + if (gamestate==GAME_READY) { + game.startGame(); + } + break; + case 'e': + if (gamestate==GAME_PLAYING) { + game.endGame("GOOD!"); + gamestate=GAME_READY; + } + break; + case 'q': + if (gamestate==GAME_READY) { + intro.play(); + gamestate=GAME_INTRO; + } + break; + case 'w': + if (gamestate==GAME_READY) { + advert.play(); + gamestate=GAME_ADVERT; + } break; case 'f': showFPS=!showFPS; @@ -198,14 +313,14 @@ void testApp::keyPressed(int key){ case 'v': showVis=!showVis; break; - case 'r': - //loadanimals("Raccoons"); - playanimal =&raccoons; - break; - case 'p': - //loadanimals("Penguins"); - playanimal =&penguins; - break; + case 'r': + //loadanimals("Raccoons"); + playanimal =&raccoons; + break; + case 'p': + //loadanimals("Penguins"); + playanimal =&penguins; + break; } } diff --git a/vfg/src/testApp.h b/vfg/src/testApp.h index 2d17cd0..4890724 100755 --- a/vfg/src/testApp.h +++ b/vfg/src/testApp.h @@ -2,6 +2,8 @@ #include "ofMain.h" #include "ofxSprite.h" +#include "ofxGui.h" +#include "ofxFensterManager.h" #include "music.h" #include "Asterisk.h" @@ -54,9 +56,15 @@ character class- load sprites from xml- play behaviours- block animations when o */ +#define GAME_INTRO 1 +#define GAME_READY 2 +#define GAME_ADVERT 3 +#define GAME_PLAYING 4 +class guiWindow; -class testApp : public ofBaseApp{ + +class testApp : public ofxFensterListener{ public: void setup(); @@ -64,6 +72,8 @@ class testApp : public ofBaseApp{ void draw(); void exit(); + void keyPressedEvent(ofKeyEventArgs &args); + void keyPressed(int key, ofxFenster* win); void keyPressed (int key); void keyReleased(int key); void mouseMoved(int x, int y ); @@ -74,7 +84,8 @@ class testApp : public ofBaseApp{ void dragEvent(ofDragInfo dragInfo); void gotMessage(ofMessage msg); - //void loadanimals(string which); + ofVideoPlayer intro; + ofVideoPlayer advert; ofVideoPlayer background; ofImage vignette; @@ -85,7 +96,7 @@ class testApp : public ofBaseApp{ vector<Animal> penguins; vector<Animal> raccoons; - vector<vector<Animal> > animals; + //vector<vector<Animal> > animals; //vector<Animal> playanimals; @@ -105,12 +116,33 @@ class testApp : public ofBaseApp{ bool showFPS; bool showVis; + bool fullscreenoutput; + + int currentsong,nextsong,gamestate; - int currentsong,nextsong; + guiWindow *guiWin; + ofxPanel gui; + ofxIntSlider tS; + ofxParameter<int>threshStart; + ofxIntSlider tE; + ofxParameter<int> threshEnd; + ofxIntSlider ts; + ofxParameter<int> timescale; + ofxIntSlider kT; + ofxParameter<int> keyThresh; }; - +class guiWindow: public ofxFensterListener{ +public: + ~guiWindow(); + testApp *parent; + void setup(); + void setParent(testApp *p); + void draw(); + void dragEvent(ofDragInfo dragInfo,ofxFenster* win); + void windowMoved(int x, int y); +}; diff --git a/vfg/vfg.layout b/vfg/vfg.layout index 59eb91b..2381d4d 100644 --- a/vfg/vfg.layout +++ b/vfg/vfg.layout @@ -1,37 +1,37 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_layout_file> <ActiveTarget name="Debug" /> - <File name="addons.make" open="0" top="0" tabpos="2"> - <Cursor position="62" topLine="0" /> + <File name="addons.make" open="1" top="0" tabpos="6"> + <Cursor position="80" topLine="0" /> </File> <File name="src/Asterisk.cpp" open="1" top="0" tabpos="1"> <Cursor position="48" topLine="3" /> </File> - <File name="src/Asterisk.h" open="1" top="0" tabpos="3"> - <Cursor position="1108" topLine="21" /> + <File name="src/Asterisk.h" open="0" top="0" tabpos="3"> + <Cursor position="106" topLine="23" /> </File> - <File name="src/Puppet.cpp" open="1" top="0" tabpos="5"> + <File name="src/Puppet.cpp" open="1" top="0" tabpos="3"> <Cursor position="502" topLine="23" /> </File> - <File name="src/Puppet.h" open="1" top="0" tabpos="4"> + <File name="src/Puppet.h" open="1" top="0" tabpos="2"> <Cursor position="312" topLine="0" /> </File> - <File name="src/Tag.h" open="1" top="0" tabpos="7"> + <File name="src/Tag.h" open="1" top="0" tabpos="5"> <Cursor position="551" topLine="0" /> </File> <File name="src/main.cpp" open="0" top="0" tabpos="1"> <Cursor position="219" topLine="0" /> </File> - <File name="src/music.cpp" open="1" top="1" tabpos="8"> - <Cursor position="7763" topLine="155" /> + <File name="src/music.cpp" open="0" top="0" tabpos="8"> + <Cursor position="11476" topLine="290" /> </File> <File name="src/music.h" open="0" top="0" tabpos="6"> <Cursor position="4738" topLine="125" /> </File> - <File name="src/testApp.cpp" open="1" top="0" tabpos="6"> - <Cursor position="3434" topLine="54" /> + <File name="src/testApp.cpp" open="1" top="1" tabpos="4"> + <Cursor position="4721" topLine="105" /> </File> - <File name="src/testApp.h" open="1" top="0" tabpos="2"> - <Cursor position="2068" topLine="40" /> + <File name="src/testApp.h" open="1" top="0" tabpos="7"> + <Cursor position="2881" topLine="86" /> </File> </CodeBlocks_layout_file> diff --git a/vpn/notes.txt b/vpn/notes.txt index f0df640..923e65f 100755 --- a/vpn/notes.txt +++ b/vpn/notes.txt @@ -6,9 +6,21 @@ ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "database put GAME passcode 1234"' 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"'
ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "database put GAME statuscode 1234"'
+ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "queue show gameQ"'
ssh 80.93.22.22 'sudo /usr/sbin/asterisk -rx "hangup request Local/9999@default-00000039;2"
+Changing GAME to NOT_INUSE
+
+
+gameQ has 1 calls (max unlimited) in 'rrmemory' strategy (8s holdtime, 50s talktime), W:0, C:38, A:26, SL:36.8% within 0s
+ Members:
+ Game AGI (Local/9999@default) with penalty 1 (In use) has taken 31 calls (last was 5333 secs ago)
+ Callers:
+ 1. SIP/sip_proxy-00000045 (wait: 0:06, prio: 0)
+
+
+
1 -download the source of asterisk from the server including the patch
2 -make && sudo make install
Make install samples # created default config files
|
