Banner image for the EarSketch SUMMIT on May 21. 10am - 12pm Eastern Time. Explore, learn, and shape the future of EarSketch! Educators and tech enthusiasts welcome. Teachers feel free to stream for your classes. This is will be a celebration of music, code, and community!
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
08.05.2025 15:47 β
π 7
π 2
π¬ 0
π 2
// 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
03.03.2025 05:59 β
π 1
π 0
π¬ 0
π 0
Harmonic Phasing
A fundamental with 9 harmonics randomly moving in and out of phase. A few iterations. Made in p5.js
// 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
27.02.2025 14:40 β
π 0
π 0
π¬ 0
π 0
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
// 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
18.02.2025 03:32 β
π 1
π 0
π¬ 0
π 0
Modal Sines
SuperCollider modal melody
// 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
17.02.2025 01:36 β
π 0
π 0
π¬ 0
π 0
Wave Decays
In p5.js
// 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
12.02.2025 09:04 β
π 0
π 0
π¬ 0
π 0
Sheppish Glisses
In SuperCollider. Still trying to dial this one in under 300 characters, but I liked how this sounded so here it is.
//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
06.02.2025 22:46 β
π 1
π 0
π¬ 0
π 0
Waffling Harmonics
Wandering spectra automated in SuperCollider
// 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
04.02.2025 04:57 β
π 1
π 0
π¬ 0
π 0
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
// 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...
03.02.2025 06:59 β
π 0
π 0
π¬ 0
π 0
Noise Pans
Wrote this one on a subway ride in p5.js
// 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
02.02.2025 01:54 β
π 1
π 0
π¬ 0
π 0
Drifting Sines
Best heard not in headphones
// .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
30.01.2025 04:21 β
π 1
π 0
π¬ 0
π 0
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
29.01.2025 06:18 β
π 0
π 0
π¬ 0
π 0
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
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
28.01.2025 06:23 β
π 3
π 1
π¬ 0
π 0
VCR-1005
Thatβs it. Itβs meant to act quick peak to 0 for triggering external circuits. The next one will be more βmusicalβ. Thereβs a whole record and writings on the idea here. tinyurl.com/mjnd3zkx
27.01.2025 12:39 β
π 0
π 0
π¬ 0
π 0
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
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
27.01.2025 05:14 β
π 0
π 0
π¬ 1
π 0
// 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;
}
24.01.2025 23:07 β
π 3
π 0
π¬ 0
π 0
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
// 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,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
23.01.2025 22:17 β
π 0
π 0
π¬ 0
π 0
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.
23.01.2025 22:17 β
π 3
π 0
π¬ 0
π 0