Daniel McKemie
@dmckemie77.bsky.social
Daniel McKemie is a composer, percussionist, electronic musician, researcher, and arranger based in New York City.
Pinned
Daniel McKemie
@dmckemie77.bsky.social
· Jan 23
In an effort to use social media as a force for creative good and general well being, I am going to use this account to share sound/music/video works written in code that can be realized by running it as-is. All under the 300 character limit. I'll include my own realizations, when applicable.
Reposted by Daniel McKemie
So excited for our upcoming #EarSketch SUMMIT on May 21. To the bsky EarSketch community, please spread the word! gatech.zoom.us/webinar/regi...
@armstrongedtech.bsky.social
@ekinginspired.bsky.social
@dmckemie77.bsky.social
@coraedtech.bsky.social
@daltron3000.bsky.social
@kalypsospeaks.com
@armstrongedtech.bsky.social
@ekinginspired.bsky.social
@dmckemie77.bsky.social
@coraedtech.bsky.social
@daltron3000.bsky.social
@kalypsospeaks.com
May 8, 2025 at 3:47 PM
So excited for our upcoming #EarSketch SUMMIT on May 21. To the bsky EarSketch community, please spread the word! gatech.zoom.us/webinar/regi...
@armstrongedtech.bsky.social
@ekinginspired.bsky.social
@dmckemie77.bsky.social
@coraedtech.bsky.social
@daltron3000.bsky.social
@kalypsospeaks.com
@armstrongedtech.bsky.social
@ekinginspired.bsky.social
@dmckemie77.bsky.social
@coraedtech.bsky.social
@daltron3000.bsky.social
@kalypsospeaks.com
// SC; "Airpods/ANC Piece"
// Set Pods to "Adaptive"
(
Routine({
inf.do {{var f=rrand(18000.0,24000.0);var e=EnvGen.kr(Env.perc(0.01,0.2));var s=SinOsc.ar(f)*e;var r=GVerb.ar(s,10,6,0,0.5,15,1,0.1,0.5,30);
Out.ar([0,1],r*1);}.play;rrand(0.1,5).wait;}}).play;
)
tinyurl.com/3htz25r6
// Set Pods to "Adaptive"
(
Routine({
inf.do {{var f=rrand(18000.0,24000.0);var e=EnvGen.kr(Env.perc(0.01,0.2));var s=SinOsc.ar(f)*e;var r=GVerb.ar(s,10,6,0,0.5,15,1,0.1,0.5,30);
Out.ar([0,1],r*1);}.play;rrand(0.1,5).wait;}}).play;
)
tinyurl.com/3htz25r6
tinyurl.com
March 3, 2025 at 5:59 AM
// SC; "Airpods/ANC Piece"
// Set Pods to "Adaptive"
(
Routine({
inf.do {{var f=rrand(18000.0,24000.0);var e=EnvGen.kr(Env.perc(0.01,0.2));var s=SinOsc.ar(f)*e;var r=GVerb.ar(s,10,6,0,0.5,15,1,0.1,0.5,30);
Out.ar([0,1],r*1);}.play;rrand(0.1,5).wait;}}).play;
)
tinyurl.com/3htz25r6
// Set Pods to "Adaptive"
(
Routine({
inf.do {{var f=rrand(18000.0,24000.0);var e=EnvGen.kr(Env.perc(0.01,0.2));var s=SinOsc.ar(f)*e;var r=GVerb.ar(s,10,6,0,0.5,15,1,0.1,0.5,30);
Out.ar([0,1],r*1);}.play;rrand(0.1,5).wait;}}).play;
)
tinyurl.com/3htz25r6
// p5
let h=[],f,l=[]
function setup() {f=random(99);for(i=1;i<=9;i++) {o=new p5.Oscillator();o.freq(f*i);o.amp(.3/(i*i));o.start();h.push(o);l.push({rate:random(.1),phase:random(TWO_PI)})}}
function draw(){t=10;h.forEach((o,i)=>o.freq(f*(i+1)+sin(t*l[i].rate+l[i].phase)*f*(i+1)*.2))}
bit.ly/3F0mKNB
let h=[],f,l=[]
function setup() {f=random(99);for(i=1;i<=9;i++) {o=new p5.Oscillator();o.freq(f*i);o.amp(.3/(i*i));o.start();h.push(o);l.push({rate:random(.1),phase:random(TWO_PI)})}}
function draw(){t=10;h.forEach((o,i)=>o.freq(f*(i+1)+sin(t*l[i].rate+l[i].phase)*f*(i+1)*.2))}
bit.ly/3F0mKNB
Harmonic Phasing
A fundamental with 9 harmonics randomly moving in and out of phase. A few iterations. Made in p5.js
bit.ly
February 27, 2025 at 2:40 PM
// p5
let h=[],f,l=[]
function setup() {f=random(99);for(i=1;i<=9;i++) {o=new p5.Oscillator();o.freq(f*i);o.amp(.3/(i*i));o.start();h.push(o);l.push({rate:random(.1),phase:random(TWO_PI)})}}
function draw(){t=10;h.forEach((o,i)=>o.freq(f*(i+1)+sin(t*l[i].rate+l[i].phase)*f*(i+1)*.2))}
bit.ly/3F0mKNB
let h=[],f,l=[]
function setup() {f=random(99);for(i=1;i<=9;i++) {o=new p5.Oscillator();o.freq(f*i);o.amp(.3/(i*i));o.start();h.push(o);l.push({rate:random(.1),phase:random(TWO_PI)})}}
function draw(){t=10;h.forEach((o,i)=>o.freq(f*(i+1)+sin(t*l[i].rate+l[i].phase)*f*(i+1)*.2))}
bit.ly/3F0mKNB
// SuperCollider
(
{var n=4,d=0.002,v=0.005,gl=0.1,gr=0.15,g=0.5,nz,irnL,irnR,tL,tR;nz=WhiteNoise.ar;tL=d+(SinOsc.kr(gl)*v);tR=d+(SinOsc.kr(gr)*v);irnL=nz;irnR=nz;n.do{irnL=irnL+(DelayC.ar(irnL,tL*(n-1),tL)*g);irnR=irnR+(DelayC.ar(irnR,tR*(n-1),tR)*g);};[irnL,irnR]*0.25}.play;
)
tinyurl.com/hvfcbxja
(
{var n=4,d=0.002,v=0.005,gl=0.1,gr=0.15,g=0.5,nz,irnL,irnR,tL,tR;nz=WhiteNoise.ar;tL=d+(SinOsc.kr(gl)*v);tR=d+(SinOsc.kr(gr)*v);irnL=nz;irnR=nz;n.do{irnL=irnL+(DelayC.ar(irnL,tL*(n-1),tL)*g);irnR=irnR+(DelayC.ar(irnR,tR*(n-1),tR)*g);};[irnL,irnR]*0.25}.play;
)
tinyurl.com/hvfcbxja
Iterated Ripple Noise
Iterated Ripple Noise generated in SuperCollider
https://www.researchgate.net/figure/The-process-of-making-iterated-rippled-noise-IRN-IRN-was-generated-by-delaying-white_fig2_236090672
tinyurl.com
February 18, 2025 at 3:32 AM
// SuperCollider
(
{var n=4,d=0.002,v=0.005,gl=0.1,gr=0.15,g=0.5,nz,irnL,irnR,tL,tR;nz=WhiteNoise.ar;tL=d+(SinOsc.kr(gl)*v);tR=d+(SinOsc.kr(gr)*v);irnL=nz;irnR=nz;n.do{irnL=irnL+(DelayC.ar(irnL,tL*(n-1),tL)*g);irnR=irnR+(DelayC.ar(irnR,tR*(n-1),tR)*g);};[irnL,irnR]*0.25}.play;
)
tinyurl.com/hvfcbxja
(
{var n=4,d=0.002,v=0.005,gl=0.1,gr=0.15,g=0.5,nz,irnL,irnR,tL,tR;nz=WhiteNoise.ar;tL=d+(SinOsc.kr(gl)*v);tR=d+(SinOsc.kr(gr)*v);irnL=nz;irnR=nz;n.do{irnL=irnL+(DelayC.ar(irnL,tL*(n-1),tL)*g);irnR=irnR+(DelayC.ar(irnR,tR*(n-1),tR)*g);};[irnL,irnR]*0.25}.play;
)
tinyurl.com/hvfcbxja
// SuperCollider
(
SynthDef(\s,{|f=220,a=0.2,d=0.5|Out.ar(0,SinOsc.ar(f)*EnvGen.kr(Env.perc(0.01,d,a,-4),2)!2);}).add;
Pbind(\instrument,\s,\f,Pseq([220,247,262,294,330,262,294,330,349,330,294,262,220],inf),\dur,Pseq([0.5,0.5,0.75,0.25,1],inf),\a,0.15).play;)
tinyurl.com/2pwtrt66
(
SynthDef(\s,{|f=220,a=0.2,d=0.5|Out.ar(0,SinOsc.ar(f)*EnvGen.kr(Env.perc(0.01,d,a,-4),2)!2);}).add;
Pbind(\instrument,\s,\f,Pseq([220,247,262,294,330,262,294,330,349,330,294,262,220],inf),\dur,Pseq([0.5,0.5,0.75,0.25,1],inf),\a,0.15).play;)
tinyurl.com/2pwtrt66
Modal Sines
SuperCollider modal melody
tinyurl.com
February 17, 2025 at 1:36 AM
// SuperCollider
(
SynthDef(\s,{|f=220,a=0.2,d=0.5|Out.ar(0,SinOsc.ar(f)*EnvGen.kr(Env.perc(0.01,d,a,-4),2)!2);}).add;
Pbind(\instrument,\s,\f,Pseq([220,247,262,294,330,262,294,330,349,330,294,262,220],inf),\dur,Pseq([0.5,0.5,0.75,0.25,1],inf),\a,0.15).play;)
tinyurl.com/2pwtrt66
(
SynthDef(\s,{|f=220,a=0.2,d=0.5|Out.ar(0,SinOsc.ar(f)*EnvGen.kr(Env.perc(0.01,d,a,-4),2)!2);}).add;
Pbind(\instrument,\s,\f,Pseq([220,247,262,294,330,262,294,330,349,330,294,262,220],inf),\dur,Pseq([0.5,0.5,0.75,0.25,1],inf),\a,0.15).play;)
tinyurl.com/2pwtrt66
// p5.js
function setup(){v=new p5.Reverb(); g()}
function g(){let f=random(20,2000); let d=random(2,5)
p(f,d); let n=random(100,3000); setTimeout(g,n)}
function p(f,d){
let o=new p5.Oscillator(); o.freq(f); o.start()
v.process(o,3); o.amp(0,2)
setTimeout(()=>o.stop(),d*1000)}
bit.ly/4jSaGOl
function setup(){v=new p5.Reverb(); g()}
function g(){let f=random(20,2000); let d=random(2,5)
p(f,d); let n=random(100,3000); setTimeout(g,n)}
function p(f,d){
let o=new p5.Oscillator(); o.freq(f); o.start()
v.process(o,3); o.amp(0,2)
setTimeout(()=>o.stop(),d*1000)}
bit.ly/4jSaGOl
Wave Decays
In p5.js
bit.ly
February 12, 2025 at 9:04 AM
// p5.js
function setup(){v=new p5.Reverb(); g()}
function g(){let f=random(20,2000); let d=random(2,5)
p(f,d); let n=random(100,3000); setTimeout(g,n)}
function p(f,d){
let o=new p5.Oscillator(); o.freq(f); o.start()
v.process(o,3); o.amp(0,2)
setTimeout(()=>o.stop(),d*1000)}
bit.ly/4jSaGOl
function setup(){v=new p5.Reverb(); g()}
function g(){let f=random(20,2000); let d=random(2,5)
p(f,d); let n=random(100,3000); setTimeout(g,n)}
function p(f,d){
let o=new p5.Oscillator(); o.freq(f); o.start()
v.process(o,3); o.amp(0,2)
setTimeout(()=>o.stop(),d*1000)}
bit.ly/4jSaGOl
//SuperCollider
(SynthDef(\s,{|f=440,p=4|var c=1/(p*20);var sig=4.collect{|n|SinOsc.ar(f*VarSaw.kr(c,n/p, 1).exprange(1/(2**(p/2)),2**(p/2))*SinOsc.kr(c,(3*pi/2)+(2*pi*n/p)).range(0, 1))}.sum*(0.2/p)*Line.kr(0,1,5);Out.ar(0,sig!2);}).add;[1,5/4,3/2].collect{|r|Synth(\s,[\f,300*r]);};)
bit.ly/4jKWSVQ
(SynthDef(\s,{|f=440,p=4|var c=1/(p*20);var sig=4.collect{|n|SinOsc.ar(f*VarSaw.kr(c,n/p, 1).exprange(1/(2**(p/2)),2**(p/2))*SinOsc.kr(c,(3*pi/2)+(2*pi*n/p)).range(0, 1))}.sum*(0.2/p)*Line.kr(0,1,5);Out.ar(0,sig!2);}).add;[1,5/4,3/2].collect{|r|Synth(\s,[\f,300*r]);};)
bit.ly/4jKWSVQ
Sheppish Glisses
In SuperCollider. Still trying to dial this one in under 300 characters, but I liked how this sounded so here it is.
bit.ly
February 6, 2025 at 10:46 PM
//SuperCollider
(SynthDef(\s,{|f=440,p=4|var c=1/(p*20);var sig=4.collect{|n|SinOsc.ar(f*VarSaw.kr(c,n/p, 1).exprange(1/(2**(p/2)),2**(p/2))*SinOsc.kr(c,(3*pi/2)+(2*pi*n/p)).range(0, 1))}.sum*(0.2/p)*Line.kr(0,1,5);Out.ar(0,sig!2);}).add;[1,5/4,3/2].collect{|r|Synth(\s,[\f,300*r]);};)
bit.ly/4jKWSVQ
(SynthDef(\s,{|f=440,p=4|var c=1/(p*20);var sig=4.collect{|n|SinOsc.ar(f*VarSaw.kr(c,n/p, 1).exprange(1/(2**(p/2)),2**(p/2))*SinOsc.kr(c,(3*pi/2)+(2*pi*n/p)).range(0, 1))}.sum*(0.2/p)*Line.kr(0,1,5);Out.ar(0,sig!2);}).add;[1,5/4,3/2].collect{|r|Synth(\s,[\f,300*r]);};)
bit.ly/4jKWSVQ
// SuperCollider
({var b=40; var n=10; var f,o;
f=SinOsc.ar(b) * 0.1;o=Array.fill(n, { |i|
var h=i+1; var r=b*h;
var a=SinOsc.kr(0.003+0.001*h,Rand(0,2*pi)).range(0,0.15);
var p = SinOsc.kr(0.01.rand+0.005).range(-1,1);Pan2.ar(SinOsc.ar(r) * a,p)});(f+o.sum).clip2(0.9)}.play;)
tinyurl.com/mwwxv3cs
({var b=40; var n=10; var f,o;
f=SinOsc.ar(b) * 0.1;o=Array.fill(n, { |i|
var h=i+1; var r=b*h;
var a=SinOsc.kr(0.003+0.001*h,Rand(0,2*pi)).range(0,0.15);
var p = SinOsc.kr(0.01.rand+0.005).range(-1,1);Pan2.ar(SinOsc.ar(r) * a,p)});(f+o.sum).clip2(0.9)}.play;)
tinyurl.com/mwwxv3cs
Waffling Harmonics
Wandering spectra automated in SuperCollider
on.soundcloud.com
February 4, 2025 at 4:57 AM
// SuperCollider
({var b=40; var n=10; var f,o;
f=SinOsc.ar(b) * 0.1;o=Array.fill(n, { |i|
var h=i+1; var r=b*h;
var a=SinOsc.kr(0.003+0.001*h,Rand(0,2*pi)).range(0,0.15);
var p = SinOsc.kr(0.01.rand+0.005).range(-1,1);Pan2.ar(SinOsc.ar(r) * a,p)});(f+o.sum).clip2(0.9)}.play;)
tinyurl.com/mwwxv3cs
({var b=40; var n=10; var f,o;
f=SinOsc.ar(b) * 0.1;o=Array.fill(n, { |i|
var h=i+1; var r=b*h;
var a=SinOsc.kr(0.003+0.001*h,Rand(0,2*pi)).range(0,0.15);
var p = SinOsc.kr(0.01.rand+0.005).range(-1,1);Pan2.ar(SinOsc.ar(r) * a,p)});(f+o.sum).clip2(0.9)}.play;)
tinyurl.com/mwwxv3cs
// SuperCollider
(
{
var dust = Dust.ar(1.5);
var signal = SinOsc.ar(TRand.ar(40, 4000, dust)) * Decay.ar(dust, 0.1);
signal = Pan2.ar(signal, TRand.ar(-1, 1, dust));
Out.ar(0, FreeVerb.ar(signal, 0.35, 0.8, 0.4));
}.play;
)
on.soundcloud.com/oe7FPFZdoqyZ...
(
{
var dust = Dust.ar(1.5);
var signal = SinOsc.ar(TRand.ar(40, 4000, dust)) * Decay.ar(dust, 0.1);
signal = Pan2.ar(signal, TRand.ar(-1, 1, dust));
Out.ar(0, FreeVerb.ar(signal, 0.35, 0.8, 0.4));
}.play;
)
on.soundcloud.com/oe7FPFZdoqyZ...
Dust Signals
Daniel McKemie is a composer, percussionist, electronic musician, researcher, and arranger based in New York City. His current work includes using techniques rooted in Music Information Retrieval in a
on.soundcloud.com
February 3, 2025 at 6:59 AM
// SuperCollider
(
{
var dust = Dust.ar(1.5);
var signal = SinOsc.ar(TRand.ar(40, 4000, dust)) * Decay.ar(dust, 0.1);
signal = Pan2.ar(signal, TRand.ar(-1, 1, dust));
Out.ar(0, FreeVerb.ar(signal, 0.35, 0.8, 0.4));
}.play;
)
on.soundcloud.com/oe7FPFZdoqyZ...
(
{
var dust = Dust.ar(1.5);
var signal = SinOsc.ar(TRand.ar(40, 4000, dust)) * Decay.ar(dust, 0.1);
signal = Pan2.ar(signal, TRand.ar(-1, 1, dust));
Out.ar(0, FreeVerb.ar(signal, 0.35, 0.8, 0.4));
}.play;
)
on.soundcloud.com/oe7FPFZdoqyZ...
// p5.js
function setup() {
let n = new p5.Noise();
setInterval(() => {
n.start();
let r = random(-1, 1);
n.pan(r);
let d = random(10, 100);
setTimeout(() => n.stop(), d);
}, random(10, 100));
}
tinyurl.com/48h27wrh
function setup() {
let n = new p5.Noise();
setInterval(() => {
n.start();
let r = random(-1, 1);
n.pan(r);
let d = random(10, 100);
setTimeout(() => n.stop(), d);
}, random(10, 100));
}
tinyurl.com/48h27wrh
Noise Pans
Wrote this one on a subway ride in p5.js
tinyurl.com
February 2, 2025 at 1:54 AM
// p5.js
function setup() {
let n = new p5.Noise();
setInterval(() => {
n.start();
let r = random(-1, 1);
n.pan(r);
let d = random(10, 100);
setTimeout(() => n.stop(), d);
}, random(10, 100));
}
tinyurl.com/48h27wrh
function setup() {
let n = new p5.Noise();
setInterval(() => {
n.start();
let r = random(-1, 1);
n.pan(r);
let d = random(10, 100);
setTimeout(() => n.stop(), d);
}, random(10, 100));
}
tinyurl.com/48h27wrh
// .py
import numpy as n
import sounddevice as s
l,h,d,sr=1e4,2e4,99,44100
t=n.linspace(0,d,sr*d)
f=(n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr)+n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr))
s.play(f,sr)
s.wait()
bit.ly/4hfHUph
import numpy as n
import sounddevice as s
l,h,d,sr=1e4,2e4,99,44100
t=n.linspace(0,d,sr*d)
f=(n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr)+n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr))
s.play(f,sr)
s.wait()
bit.ly/4hfHUph
Drifting Sines
Best heard not in headphones
bit.ly
January 30, 2025 at 4:21 AM
// .py
import numpy as n
import sounddevice as s
l,h,d,sr=1e4,2e4,99,44100
t=n.linspace(0,d,sr*d)
f=(n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr)+n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr))
s.play(f,sr)
s.wait()
bit.ly/4hfHUph
import numpy as n
import sounddevice as s
l,h,d,sr=1e4,2e4,99,44100
t=n.linspace(0,d,sr*d)
f=(n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr)+n.sin(2*n.pi*n.cumsum(n.interp(t,n.linspace(0,d,d),n.random.uniform(l,h,d)))/sr))
s.play(f,sr)
s.wait()
bit.ly/4hfHUph
1S=54272
2FORT=0TO10
3FORL=0TO24:POKES+0,0:NEXT
4FORT=0TOINT(RND(0)*800):NEXT
5POKES+1,INT(RND(1)*95)
6POKES+5,INT(RND(1)*95):POKES+6,INT(RND(1)*25)
7POKES+19,INT(RND(1)*50):POKES+20,INT(RND(1)*10)
8POKES+24,15
9POKES+4,37
10FORT=1TOINT(RND(1)*400):NEXT
11POKES+4,36
12FORT=1TO100:GOTO2
13POKES+24,0
2FORT=0TO10
3FORL=0TO24:POKES+0,0:NEXT
4FORT=0TOINT(RND(0)*800):NEXT
5POKES+1,INT(RND(1)*95)
6POKES+5,INT(RND(1)*95):POKES+6,INT(RND(1)*25)
7POKES+19,INT(RND(1)*50):POKES+20,INT(RND(1)*10)
8POKES+24,15
9POKES+4,37
10FORT=1TOINT(RND(1)*400):NEXT
11POKES+4,36
12FORT=1TO100:GOTO2
13POKES+24,0
January 29, 2025 at 6:18 AM
1S=54272
2FORT=0TO10
3FORL=0TO24:POKES+0,0:NEXT
4FORT=0TOINT(RND(0)*800):NEXT
5POKES+1,INT(RND(1)*95)
6POKES+5,INT(RND(1)*95):POKES+6,INT(RND(1)*25)
7POKES+19,INT(RND(1)*50):POKES+20,INT(RND(1)*10)
8POKES+24,15
9POKES+4,37
10FORT=1TOINT(RND(1)*400):NEXT
11POKES+4,36
12FORT=1TO100:GOTO2
13POKES+24,0
2FORT=0TO10
3FORL=0TO24:POKES+0,0:NEXT
4FORT=0TOINT(RND(0)*800):NEXT
5POKES+1,INT(RND(1)*95)
6POKES+5,INT(RND(1)*95):POKES+6,INT(RND(1)*25)
7POKES+19,INT(RND(1)*50):POKES+20,INT(RND(1)*10)
8POKES+24,15
9POKES+4,37
10FORT=1TOINT(RND(1)*400):NEXT
11POKES+4,36
12FORT=1TO100:GOTO2
13POKES+24,0
from earsketch import *
import random as r
init()
x=DMCKEMIE77_B
n=50
[fitMedia(x,i,r.uniform(1.5,16.5),17.5) or setEffect(i, PAN, LEFT_RIGHT, r.uniform(-100, 100), i + 1, r.uniform(-100,100),i+1) or setEffect(i,RINGMOD,RINGMOD_MODFREQ,r.uniform(1,100)) for i in range(1,n+1)]
finish()
bit.ly/4hunYP2
import random as r
init()
x=DMCKEMIE77_B
n=50
[fitMedia(x,i,r.uniform(1.5,16.5),17.5) or setEffect(i, PAN, LEFT_RIGHT, r.uniform(-100, 100), i + 1, r.uniform(-100,100),i+1) or setEffect(i,RINGMOD,RINGMOD_MODFREQ,r.uniform(1,100)) for i in range(1,n+1)]
finish()
bit.ly/4hunYP2
EarSketch Bongos
Daniel McKemie is a composer, percussionist, electronic musician, researcher, and arranger based in New York City. His current work includes using techniques rooted in Music Information Retrieval in a
bit.ly
January 28, 2025 at 6:23 AM
from earsketch import *
import random as r
init()
x=DMCKEMIE77_B
n=50
[fitMedia(x,i,r.uniform(1.5,16.5),17.5) or setEffect(i, PAN, LEFT_RIGHT, r.uniform(-100, 100), i + 1, r.uniform(-100,100),i+1) or setEffect(i,RINGMOD,RINGMOD_MODFREQ,r.uniform(1,100)) for i in range(1,n+1)]
finish()
bit.ly/4hunYP2
import random as r
init()
x=DMCKEMIE77_B
n=50
[fitMedia(x,i,r.uniform(1.5,16.5),17.5) or setEffect(i, PAN, LEFT_RIGHT, r.uniform(-100, 100), i + 1, r.uniform(-100,100),i+1) or setEffect(i,RINGMOD,RINGMOD_MODFREQ,r.uniform(1,100)) for i in range(1,n+1)]
finish()
bit.ly/4hunYP2
1 REM BASIC for C64 SID Chip
2 REM C64 Program Piece 4
3 X=5
4 Y=10
5 Z=0
6 S=54272
10 FOR I=0 TO 10
20 P=RND(RND(0))
30 A=-LOG(P)/X
40 Z=Z+P
51 POKES+1,1
52 POKES+4,65
60 IF A<0.2 THEN:GOTO 70
61 IF A>0.2 THEN:GOTO 80
70 POKES+24,0:GOTO 100
80 POKES+24,15:GOTO 100
100 NEXT I:GOTO 10
bit.ly/3CfYtSO
2 REM C64 Program Piece 4
3 X=5
4 Y=10
5 Z=0
6 S=54272
10 FOR I=0 TO 10
20 P=RND(RND(0))
30 A=-LOG(P)/X
40 Z=Z+P
51 POKES+1,1
52 POKES+4,65
60 IF A<0.2 THEN:GOTO 70
61 IF A>0.2 THEN:GOTO 80
70 POKES+24,0:GOTO 100
80 POKES+24,15:GOTO 100
100 NEXT I:GOTO 10
bit.ly/3CfYtSO
Commodore Program Piece #4
Daniel McKemie (né Steffey) is a web developer and multimedia artist based in New York City. Currently, he is focusing on technology that seeks to utilize the internet and browser technology to realiz
bit.ly
January 27, 2025 at 5:14 AM
1 REM BASIC for C64 SID Chip
2 REM C64 Program Piece 4
3 X=5
4 Y=10
5 Z=0
6 S=54272
10 FOR I=0 TO 10
20 P=RND(RND(0))
30 A=-LOG(P)/X
40 Z=Z+P
51 POKES+1,1
52 POKES+4,65
60 IF A<0.2 THEN:GOTO 70
61 IF A>0.2 THEN:GOTO 80
70 POKES+24,0:GOTO 100
80 POKES+24,15:GOTO 100
100 NEXT I:GOTO 10
bit.ly/3CfYtSO
2 REM C64 Program Piece 4
3 X=5
4 Y=10
5 Z=0
6 S=54272
10 FOR I=0 TO 10
20 P=RND(RND(0))
30 A=-LOG(P)/X
40 Z=Z+P
51 POKES+1,1
52 POKES+4,65
60 IF A<0.2 THEN:GOTO 70
61 IF A>0.2 THEN:GOTO 80
70 POKES+24,0:GOTO 100
80 POKES+24,15:GOTO 100
100 NEXT I:GOTO 10
bit.ly/3CfYtSO
// p5.js
let s; let d=1;
function setup() {
s=new p5.Oscillator('sine');
s.amp(0);
s.start();
setInterval(x, random(1,100));
}
function x() {
s.freq(random(20, 5000));
let p=d;
s.pan(p);
s.amp(random(0.1,1));
setTimeout(() => {s.amp(0);},10); d*=-1;
}
let s; let d=1;
function setup() {
s=new p5.Oscillator('sine');
s.amp(0);
s.start();
setInterval(x, random(1,100));
}
function x() {
s.freq(random(20, 5000));
let p=d;
s.pan(p);
s.amp(random(0.1,1));
setTimeout(() => {s.amp(0);},10); d*=-1;
}
January 24, 2025 at 11:07 PM
// p5.js
let s; let d=1;
function setup() {
s=new p5.Oscillator('sine');
s.amp(0);
s.start();
setInterval(x, random(1,100));
}
function x() {
s.freq(random(20, 5000));
let p=d;
s.pan(p);
s.amp(random(0.1,1));
setTimeout(() => {s.amp(0);},10); d*=-1;
}
let s; let d=1;
function setup() {
s=new p5.Oscillator('sine');
s.amp(0);
s.start();
setInterval(x, random(1,100));
}
function x() {
s.freq(random(20, 5000));
let p=d;
s.pan(p);
s.amp(random(0.1,1));
setTimeout(() => {s.amp(0);},10); d*=-1;
}
// ChucK
Gain g=>dac;fun int r(int x,int y){return Math.random2(x,y);}while(true){r(1,100)=>int b;r(1,50)=>int t;b::ms=>now;for(0=>int i;iint f;r(5,50)=>int s;r(1,10)=>int a;r(51,200)=>int d;SinOsc o=>dac;f=>o.freq;(a/10)=>g.gain;s::ms=>now;0=>o.gain;d::ms=>now;}}
bit.ly/3Ei1GSa
Gain g=>dac;fun int r(int x,int y){return Math.random2(x,y);}while(true){r(1,100)=>int b;r(1,50)=>int t;b::ms=>now;for(0=>int i;i
bit.ly/3Ei1GSa
ChucK Sines
// ChucK
Gain g => dac;fun int r(int x,int y){return Math.random2(x,y);}while(true){r(1,100)=>int b;r(1,50)=>int t;b::ms=>now;for(0=>int i;i<t;i++){r(40,8000)=>int f;r(5,50)=>int s;r(1,10)=>int a;r(51
bit.ly
January 23, 2025 at 10:17 PM
// ChucK
Gain g=>dac;fun int r(int x,int y){return Math.random2(x,y);}while(true){r(1,100)=>int b;r(1,50)=>int t;b::ms=>now;for(0=>int i;iint f;r(5,50)=>int s;r(1,10)=>int a;r(51,200)=>int d;SinOsc o=>dac;f=>o.freq;(a/10)=>g.gain;s::ms=>now;0=>o.gain;d::ms=>now;}}
bit.ly/3Ei1GSa
Gain g=>dac;fun int r(int x,int y){return Math.random2(x,y);}while(true){r(1,100)=>int b;r(1,50)=>int t;b::ms=>now;for(0=>int i;i
bit.ly/3Ei1GSa
In an effort to use social media as a force for creative good and general well being, I am going to use this account to share sound/music/video works written in code that can be realized by running it as-is. All under the 300 character limit. I'll include my own realizations, when applicable.
January 23, 2025 at 10:17 PM
In an effort to use social media as a force for creative good and general well being, I am going to use this account to share sound/music/video works written in code that can be realized by running it as-is. All under the 300 character limit. I'll include my own realizations, when applicable.