Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5afb83e
commit 8128ee7
Showing
5 changed files
with
329 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
Create an algodynamic score for ICLC performance. | ||
Run the following line one-by-one to play the algodyn score: | ||
~iclc = Proxy_Pattern_Score.new; | ||
~iclc.dests = [Dests.addr1, Dests.addr2]; | ||
~iclc.title = '/track_1'; | ||
~iclc.tags = (1..5); | ||
~iclc.step = [1, 1, 1, 1, 1]/1; | ||
Dests.addr1.sendMsg('Load_track_1_actions'); | ||
~iclc.loop; | ||
~iclc.stop; | ||
Aris Bezas 22:17 AM Feb 22, 2015 | ||
*/ | ||
|
||
Score_Definition { | ||
*initClass { | ||
StartUp add: { | ||
~meter=0; | ||
~activateChange = false; | ||
this.define_Track_1_Resps; | ||
this.track_1; | ||
"\n* Algorithmic Dynamic Score Definition is ready to start".postln; | ||
} | ||
} | ||
*removeAllResps { | ||
~track_1_Resp_1 = RespTags.do('/track_1', 1, nil);~track_1_Resp_2 = RespTags.do('/track_1', 2, nil); | ||
~track_1_Resp_3 = RespTags.do('/track_1', 3, nil);~track_1_Resp_4 = RespTags.do('/track_1', 4, nil); | ||
~track_1_Resp_5 = RespTags.do('/track_1', 5, nil); | ||
} | ||
*define_Track_1_Resps { | ||
~track_1_Resp_1 = RespTags.do('/track_1', 1, nil); | ||
~track_1_Resp_2 = RespTags.do('/track_1', 2, nil); | ||
~track_1_Resp_3 = RespTags.do('/track_1', 3, nil); | ||
~track_1_Resp_4 = RespTags.do('/track_1', 4, nil); | ||
~track_1_Resp_5 = RespTags.do('/track_1', 5, nil); | ||
|
||
} | ||
*remove_Track_1_Resps { | ||
~track_1_Resp_1.removeResp; | ||
~track_1_Resp_2.removeResp; | ||
~track_1_Resp_3.removeResp; | ||
~track_1_Resp_4.removeResp; | ||
~track_1_Resp_5.removeResp; | ||
} | ||
*track_1{ | ||
~track_1_Resp = OSCresponderNode( | ||
nil, | ||
'Load_track_1_actions', | ||
{ |t,r,msg| | ||
"Load_track_1_actions...".postln; | ||
~track_1_Resp_1.action = { | ||
"\ntrack_1:meter: ".post; ~meter.postln; | ||
"beat: 1".postln; | ||
Dests.addr2.sendMsg("/meter",~meter); | ||
Dests.addr2.sendMsg("/beat",1); | ||
case | ||
{ ~meter == 0 } { Dests.addr1.sendMsg("meter/0")} | ||
{ ~meter == 6 } { \true }; | ||
~meter = ~meter + 1; | ||
}; | ||
~track_1_Resp_2.action = { | ||
"beat: 2".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",2); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
~track_1_Resp_3.action = { | ||
"beat: 3".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",3); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
~track_1_Resp_4.action = { | ||
"beat: 4".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",4); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
~track_1_Resp_5.action = { | ||
"beat: 5".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",5); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
}).add; | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
/* | ||
This contains all the classes that Algodynamic Score Core is needed. | ||
Those, are followings: | ||
- Score_Implementation - create the Responders | ||
- Dests - Group the I.P. of the participants | ||
- Proxy_Pattern_Score - Create an Proxy Pattern to fullfill (Algodynamic Score Core) | ||
- RespTags - Class for automate the creation of the responders | ||
Aris Bezas 12:05 AM Feb 22, 2015 | ||
*/ | ||
|
||
Score_Implementation{ | ||
*load { | ||
Dests.addr1.sendMsg('Load_track_1_actions'); | ||
"Load_track_1_actions".postln; | ||
} | ||
*goToTrack { |track| | ||
~activateChange = true; | ||
switch ( track, | ||
1, {~nextTrack = 1}, | ||
2, {~nextTrack = 2}, | ||
3, {~nextTrack = 3}, | ||
); | ||
//this.activateChange; | ||
} | ||
*activateChange { | ||
switch (~nextTrack, | ||
1, { | ||
//Score_Definition.removeAllResps; | ||
//Score_Definition.define_Track_1_Resps; | ||
this.play_track_1; | ||
~playTrack_2.stop; | ||
~playTrack_1.loop; | ||
}, | ||
2, { | ||
//Score_Definition.removeAllResps; | ||
//Score_Definition.define_Track_2_Resps; | ||
~playTrack_1.stop; | ||
this.play_track_2; | ||
~playTrack_2.loop; | ||
}, | ||
~activateChange = false; | ||
) | ||
} | ||
|
||
*play_track_1 { | ||
//Score_Definition.define_Track_1_Resps; | ||
~meter = 1; | ||
~playTrack_1 = Proxy_Pattern_Score.new; | ||
~playTrack_1.dests = [Dests.addr1]; | ||
~playTrack_1.title = '/track_1'; | ||
~playTrack_1.tags = (1..4); | ||
~playTrack_1.step = [1, 1, 1, 1]/1; | ||
~playTrack_1.stop; | ||
} | ||
} | ||
|
||
Dests { classvar <>addr1, <>addr2, <>addr3; | ||
*initClass { | ||
StartUp.add{ | ||
// Error messages to Post window when I am sending to IP that doesn't exist. | ||
addr1 = NetAddr("localhost", 57120); | ||
addr2 = NetAddr("localhost", 12345); | ||
//addr3 = NetAddr("192.127.0.4", 57140); | ||
} | ||
} | ||
} | ||
|
||
Proxy_Pattern_Score { | ||
var <>num=0, <>tags, <>step=0.25, <>title, <>stepPat, <>tagPat, task, verbose = true; | ||
var <>dests, <>tag, <>tagStream, <>stepStream, <>stp2, <>x, <>times = inf; | ||
loop { | ||
tagPat = PatternProxy(Pseq([nil], inf)); | ||
stepPat = PatternProxy(Pseq([nil], inf)); | ||
tagStream = tagPat.asStream; | ||
stepStream = stepPat.asStream; | ||
task = Task({ | ||
times.do{ | ||
tagPat.source = Pseq(tags, inf); | ||
stepPat.source = Pseq(step, inf); | ||
num = tags.numChannels; // count the beats | ||
num.do{ | ||
x = tagStream.next; | ||
dests do: _.sendMsg(title.asString, x); // send to all dests (\title, 1) | ||
stepStream.next.wait; | ||
} | ||
} | ||
}); | ||
task.start; | ||
} | ||
pause { | ||
task.pause; | ||
} | ||
resume { | ||
task.resume; | ||
} | ||
reset { | ||
task.reset; | ||
} | ||
stop { | ||
task.stop; | ||
} | ||
} | ||
|
||
|
||
RespTags { var <>title, <>tag, <>action, <>responder; | ||
var addResp; | ||
*do { |title, tag, action, responder| | ||
^super.newCopyArgs(title, tag, action, responder).addResp; | ||
} | ||
addResp { | ||
responder = OSCresponderNode(nil, title.asString, {arg time, resp, msg; | ||
msg[1].switch( tag, | ||
action | ||
); | ||
}).add; | ||
} | ||
removeResp { | ||
responder.remove; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
/* | ||
This contains all the classes that Algodynamic Score definition. | ||
---- Example ---- | ||
~myScore = Score_Implementation.load | ||
~playTrack_1 = Proxy_Pattern_Score.new; | ||
~playTrack_1.dests = [Dests.addr1]; | ||
~playTrack_1.title = '/track_1'; | ||
~playTrack_1.tags = (1..4); | ||
~playTrack_1.step = [1, 1, 1, 1]/1; | ||
~playTrack_1.loop; | ||
Score_Implementation.goToTrack(2) | ||
Score_Implementation.goToTrack(1) | ||
~myScoreDefinition = Score_Definition | ||
~myScoreDefinition.removeAllResps | ||
~myScoreDefinition.track_1 | ||
~myScoreDefinition.define_Track_1_Resps | ||
OSCFunc.trace(true) | ||
OSCFunc.trace(false) | ||
Aris Bezas 12:05 AM Feb 28, 2013 | ||
*/ | ||
|
||
Score_Definition { | ||
*initClass { | ||
StartUp add: { | ||
~meter=0; | ||
~activateChange = false; | ||
this.define_Track_1_Resps; | ||
this.track_1; | ||
"\n* Algorithmic Dynamic Score Definition is ready to start".postln; | ||
} | ||
} | ||
*removeAllResps { | ||
~track_1_Resp_1 = RespTags.do('/track_1', 1, nil);~track_1_Resp_2 = RespTags.do('/track_1', 2, nil); | ||
~track_1_Resp_3 = RespTags.do('/track_1', 3, nil);~track_1_Resp_4 = RespTags.do('/track_1', 4, nil); | ||
} | ||
*define_Track_1_Resps { | ||
~track_1_Resp_1 = RespTags.do('/track_1', 1, nil); | ||
~track_1_Resp_2 = RespTags.do('/track_1', 2, nil); | ||
~track_1_Resp_3 = RespTags.do('/track_1', 3, nil); | ||
~track_1_Resp_4 = RespTags.do('/track_1', 4, nil); | ||
|
||
} | ||
*remove_Track_1_Resps { | ||
//~track_1_Resp.remove; | ||
~track_1_Resp_1.removeResp; | ||
~track_1_Resp_2.removeResp; | ||
~track_1_Resp_3.removeResp; | ||
~track_1_Resp_4.removeResp; | ||
} | ||
*track_1{ | ||
~track_1_Resp = OSCresponderNode( | ||
nil, | ||
'Load_track_1_actions', | ||
{ |t,r,msg| | ||
"Load_track_1_actions...".postln; | ||
~track_1_Resp_1.action = { | ||
"\ntrack_1:meter: ".post; ~meter.postln; | ||
"beat: 1".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",1.0); | ||
case | ||
// { ~meter == 0 } { "pop".postln} | ||
// { ~meter == 1 } { "pop".postln} | ||
// { ~meter == 2 } { Dests.addr1.sendMsg("test")} | ||
// { ~meter == 2 } { \wrong } | ||
// { ~meter == 3 } { \wrong } | ||
// { ~meter == 4 } { \wrong } | ||
// { ~meter == 5 } { \wrong } | ||
{ ~meter == 6 } { \true }; | ||
~meter = ~meter + 1; | ||
}; | ||
~track_1_Resp_2.action = { | ||
"beat: 2".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",2.0); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 2 } { \wrong } | ||
{ ~meter == 3 } { \wrong } | ||
{ ~meter == 4 } { \wrong } | ||
{ ~meter == 5 } { \wrong } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
~track_1_Resp_3.action = { | ||
"beat: 3".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",3.0); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 2 } { \wrong } | ||
{ ~meter == 3 } { \wrong } | ||
{ ~meter == 4 } { \wrong } | ||
{ ~meter == 5 } { \wrong } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
~track_1_Resp_4.action = { | ||
"beat: 4".postln; | ||
NetAddr("127.0.0.1" ,12345).sendMsg("/beat",4.0); | ||
case | ||
{ ~meter == 1 } { \no } | ||
{ ~meter == 2 } { \wrong } | ||
{ ~meter == 3 } { \wrong } | ||
{ ~meter == 4 } { \wrong } | ||
{ ~meter == 5 } { \wrong } | ||
{ ~meter == 6 } { \true }; | ||
}; | ||
}).add; | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +0,0 @@ | ||
SC_Score | ||
- SC_Score | ||
- Dests | ||
- RespTags | ||
|
||
Score_Class Implementation | ||
- Score_Definition | ||
- Score_Definition_Implementation | ||
|
||
*Special thanks earlab team* | ||
- Iannis Zannos | ||
- Dakis Trentos | ||
- Omer Chatziserif | ||
- Aris Bezas | ||
- Vaggelis Tsatsis | ||
- Alexandros Aggelakis | ||
File renamed without changes.