Pinned post

I've decided to publish a version of my rejected PhD project proposal on my wiki, and place it under the CC BY-SA 4.0 license. Enjoy!

Pinned post

Okay. It's live. introducing: the candy crystal rainbow codex:

And the code:

more transmissions to come.

Pinned post

Okay so

Hello. I'm @paul. I'm a musical hacker and sound designer interested in teaching computers how to sing. I spend most of my time working on software projects related to the field of computer music.

Some topics that amuse me:


My website:
My mirror website (hosted on GH):

patchlore boosted

The Zim Kingston cargo ship lost 40 containers just outside of Vancouver, now it's anchored near Victoria and it's on fire.. And the storm has not even begun.


Tonight's freshly baked baguettes! Should be still warm by dinner :)

day 23

Thinking about: jon hopkins soundtracks, 5-voice chord progressions.

Finally, there's a store in my area that carries Boylan's Birch Beer. It's been so hard to find anywhere!

I want to know the person responsible for picking out the outfits for princess bubblegum and Marceline the vampire queen.

day 22

thinking about: articulation. heptapod B by johann johannsson. diphones.

but mostly, this is me messing around with the new envelope capabilities I added to the gesture synthesizer controlling the vocal synthesizer.

patchlore boosted

What do people use their grid controllers for? All I know is that I see things lighting up, but I have no idea what people actually do with them. How do I get from a colourful grid to music?

(There's one for sale at my local pawn shop, but that's not why I'm asking.)

patchlore boosted

// mathr 2021-10-21 looptober

typedef double sample;
SR 48000
R sample

typedef struct
int reloaded;
double t;
BIQUAD O[2][3];
DELAY D0;float b0[SR];
DELAY D1;float b1[SR];
} S;

int go(S *s,int nin,const float *in,int nout,float *out)
if (s->reloaded)
R bpm=138/2.;
R hz=35*3./2;
R cps=bpm/60/4;
R t=(s->t+=cps/SR);
R F=pow(envL(slow(2,t))*envLR(rotL(4,slow(2,t))),2);
pair H[3][4] =
R D[2]={delread4(&s->D1,125/hz),delread4(&s->D0,125/hz)};
R C[2]={D[0]*cosine2(t)-sine2(t)*D[1],D[0]*sine2(t)+cosine2(t)*D[1]};
R l=t;
for (int c=0;c<2;++c)
for (int i=0;i<3;++i)
R N=timeCat(H[i],fast(2,t));
R q=100;
R O=sine2(biquad(bandpass(&s->O[c][i],hz*N,q),C[c]));
R K[2]={0,0};
for (int k=0;k<8;++k)
R E=pow(isaw(fast(2*pow(2,k),saw(t))),2);
R m=tanh(4*sine2(12*E)*(1+E))*(k==0?t:k==7?1-t:1);
for (int c=0;c<nout;++c) {
return 0;

// unshrunk at

Show thread

Working title for a edutainment computer music radio drama podcast I may never actually make:

Dr.Jellywhipple's ultra-fantastic computer music time loop!


patchlore boosted

Check out the first prototypes of what will likely be our first line of original action figures!

Based on Commando Cody from Radar Men from the Moon, he's a 3.75" hand made action figure with 4 points of articulation, a jetpack, and a raygun.

The prototype is a little too flashy in the color scheme department (the copper color + the clear coat makes him too shiny) but IT LOOKS SO COOL.

All my tracks made so far have been uploaded to a instance under a CC0 license:

All of these were procedurally generated using my custom engine with a scheme scripting interface. You can find the corresponding code for each looptober here:

The string ensemble kind of sound like ondes martenots and/or theremins at the time. Happy accident. Certainly adds a supernatural charm to it. I initially wanted more realistic strings to give it tragic romance vibes. But, I did not have those sounds. Probably for the best though right?

Show thread

Oh, the melody is very much inspired by that "O Willow Waly" song sung in the Haunting of Bly Manor.

Show thread

I haven't had many opportunities to write string quartet arrangements, so that was the challenge for me.

I started with the melody and the timbre of the distance singing voice (more reverbed voice than dry). I wanted her to sound behind.

The string sounds are somewhat narrow bandlimited square waves. Initially, I was going to used bowed string models, but didn't want to bother tuning it.

The harmony and arrangement was very loosely inspired by Milowda from the expanse OST. I started out with block chords, than gradually tried dropping in more contrapuntal melodic lines.

Show thread

day 21

Thinking about: O Willow Waly, Milowda, Lighthouses, Ghost stories.

Some say that to this day, you can still hear her calling from the lighthouse tower...

patchlore boosted

I feel this could be relevant for LURK & friends:

Call for contributors - Chiptune studies reader:

"We are excited to announce that we are seeking contributions for The Chiptune Studies Reader, an interdisciplinary peer-reviewed and edited volume on chiptune - or 'chipmusic' and 'micromusic' as it is also known - which we intend to publish through Oxford University Press.

The invitation to submit an abstract is open to scholars in the arts, humanities, and social sciences, as well as chiptune practitioners and fans."

The ramps output by the ramp tree aren't always linear. Behaviors are functions that can be applied to the ramp to rescale it. This allows things like exponential line segments to happen.

Show thread

The core data structure that powers Gest is what I call a "ramp tree". This provides rhythmic subdivisions of a beat.

How it works is: a phasor (periodic ramp signal) goes into the tree, and then this phasor signal is dynamically resynthesized and sped up / slowed down based on the structure of the tree. What comes out the other side is a series of 0-1 ramps of varying length relative to the input phasor.

Normally, the output of the ramp tree is used to interpolate between to values like you would a line segment. However, if you skip that step and just use the ramp tree output, you can use this as an envelope signal!

Show thread

Turning my gesture synthesizer into an articulation engine tonight :)

Show older

Welcome to, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.