beating rhythm sketch one
I have finally got to the basic sketching of an idea I had, namely to create a piece where beating (phase cancellation) of simple sine tones determines the rhythm and note durations of a work. The idea is still taking shape. The first couple of sketches are nothing earth shattering, but I find the simplicity quite elegant.
They are implemented with SuperCollider.
The code for the first one is
//BEGIN SC CODE
SynthDef(\sins, {
arg freq1 = 370, freq2 = 370.5, cnlOut = 0;
var snd1, out;
snd1 = Mix.ar(SinOsc.ar([freq1,freq2],[0,pi],0.25));
out = Out.ar(cnlOut, snd1);
}).send;
)
(
w = Routine({
x = Synth(\sins);
"370.5".postln;
2.wait;
x.set(\freq2, 371);
"371".postln;
1.wait;
x.set(\freq2, 370.25);
"370.25".postln;
4.wait;
x.set(\freq2, 370.75);
"370.75".postln;
(0.75.reciprocal).wait;
x.set(\freq2, 370.5);
"370.5".postln;
2.wait;
x.free;
"done".postln;
})
z = Routine({
v = Synth(\sins, [\freq1, 180, \freq2, 180.5, \cnlOut, 1]);
2.wait;
v.set(\freq1, 180, \freq2, 181, \cnlOut, 1);
1.wait;
v.set(\freq1, 180, \freq2, 180.25, \cnlOut, 1);
4.wait;
v.set(\freq1, 180, \freq2, 180.75, \cnlOut, 1);
(0.75.reciprocal).wait;
v.set(\freq1, 180, \freq2, 180.5, \cnlOut, 1);
2.wait;
v.free;
"done".postln;
}).play;
)
//END SC CODE
sineSketch1 audio
The second sketch is similar but with some offset to create motion, or tension and resolution if you like that verbiage.
(
SynthDef(\sins, {
arg freq1 = 370, freq2 = 370.5, cnlOut = 0;
var snd1, out;
snd1 = Mix.ar(SinOsc.ar([freq1,freq2],[0,pi],0.25));
out = Out.ar(cnlOut, snd1);
}).send;
)
(
w = Routine({
x = Synth(\sins);
"370.5".postln;
4.wait;
x.set(\freq2, 371);
"371".postln;
2.wait;
x.set(\freq2, 370.25);
"370.25".postln;
8.wait;
x.set(\freq2, 370.75);
"370.75".postln;
((0.75.reciprocal)*2).wait;
x.set(\freq2, 370.5);
"370.5".postln;
4.wait;
x.free;
"done".postln;
}).play;
z = Routine({
v = Synth(\sins, [\freq1, 180, \freq2, 180.5]);
4.wait;
v.set(\freq1, 180, \freq2, 180.75);
((0.75.reciprocal)*2).wait;
v.set(\freq1, 180, \freq2, 180.25);
8.wait;
v.set(\freq1, 180, \freq2, 181);
2.wait;
v.set(\freq1, 180, \freq2, 180.5);
4.wait;
v.free;
"done".postln;
}).play;
)
// END SC CODE
sineSketch2 audio
Playing with the audio file, which is a mono file of both voices, I was very taken with the visual representation I could achieve at different levels of magnification. Here are some screen shots.
They are implemented with SuperCollider.
The code for the first one is
//BEGIN SC CODE
SynthDef(\sins, {
arg freq1 = 370, freq2 = 370.5, cnlOut = 0;
var snd1, out;
snd1 = Mix.ar(SinOsc.ar([freq1,freq2],[0,pi],0.25));
out = Out.ar(cnlOut, snd1);
}).send;
)
(
w = Routine({
x = Synth(\sins);
"370.5".postln;
2.wait;
x.set(\freq2, 371);
"371".postln;
1.wait;
x.set(\freq2, 370.25);
"370.25".postln;
4.wait;
x.set(\freq2, 370.75);
"370.75".postln;
(0.75.reciprocal).wait;
x.set(\freq2, 370.5);
"370.5".postln;
2.wait;
x.free;
"done".postln;
})
z = Routine({
v = Synth(\sins, [\freq1, 180, \freq2, 180.5, \cnlOut, 1]);
2.wait;
v.set(\freq1, 180, \freq2, 181, \cnlOut, 1);
1.wait;
v.set(\freq1, 180, \freq2, 180.25, \cnlOut, 1);
4.wait;
v.set(\freq1, 180, \freq2, 180.75, \cnlOut, 1);
(0.75.reciprocal).wait;
v.set(\freq1, 180, \freq2, 180.5, \cnlOut, 1);
2.wait;
v.free;
"done".postln;
}).play;
)
//END SC CODE
sineSketch1 audio
The second sketch is similar but with some offset to create motion, or tension and resolution if you like that verbiage.
(
SynthDef(\sins, {
arg freq1 = 370, freq2 = 370.5, cnlOut = 0;
var snd1, out;
snd1 = Mix.ar(SinOsc.ar([freq1,freq2],[0,pi],0.25));
out = Out.ar(cnlOut, snd1);
}).send;
)
(
w = Routine({
x = Synth(\sins);
"370.5".postln;
4.wait;
x.set(\freq2, 371);
"371".postln;
2.wait;
x.set(\freq2, 370.25);
"370.25".postln;
8.wait;
x.set(\freq2, 370.75);
"370.75".postln;
((0.75.reciprocal)*2).wait;
x.set(\freq2, 370.5);
"370.5".postln;
4.wait;
x.free;
"done".postln;
}).play;
z = Routine({
v = Synth(\sins, [\freq1, 180, \freq2, 180.5]);
4.wait;
v.set(\freq1, 180, \freq2, 180.75);
((0.75.reciprocal)*2).wait;
v.set(\freq1, 180, \freq2, 180.25);
8.wait;
v.set(\freq1, 180, \freq2, 181);
2.wait;
v.set(\freq1, 180, \freq2, 180.5);
4.wait;
v.free;
"done".postln;
}).play;
)
// END SC CODE
sineSketch2 audio
Playing with the audio file, which is a mono file of both voices, I was very taken with the visual representation I could achieve at different levels of magnification. Here are some screen shots.
0 Comments:
Post a Comment
<< Home