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!
Okay so #introductions
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: pbat.ch
My mirror website (hosted on GH): paulbatchelor.github.io
After months of delay, here's a tutorial on building programs for the monome grid in C using libmonome:
The tutorial works incrementally, with the final program looking like this:
Still a WIP, but the overall structure is there.
fuck it, I'm releasing my databending drum machine TONIGHT
make drum loops with percussive samples procedurally generated from opus codec glitches!~ 🥁💥💻
Fun fact: it is indeed possible to build a musical instrument on Android using only C and Makefiles: https://github.com/paulbatchelor/vocshape
A beautiful book on composing art with basic shapes: https://archive.org/details/satoArtOfComputerDesigning
Gesture Sequencer Updates
I quickly ran into a clock drift problem trying to run multiple gestures at once with Gest. So today was the day I implemented the measures to prevent clock drift over long periods of time. AKA the thing that would separate this effort from all my other previous efforts at line generators and complex rhythm sequencers. Very make-or-break moment.
The two ways I've thought about preventing clock drift were localizing any drift to phrases and doing a hard reset at the start of a new phrase, and then doing gradual "course corrections" every time a new beat occurs.
While very initial, it seems that drift localization doesn't have any perceptual effect on gesture production, and course correction does seem to improve accuracy somewhat (based on my ad-hoc testing with printf at least).
Something I've wanted to do with SDFs (2d in particular, if it matters) is to be able to interpolate between SDF-defined geometries in time.
Like, for example, some kind of square that morphs to a circle. Or a triangle that morphs into a 5-point star. Etc. Etc.
I'd be very surprised if there was a generalized method for approaching this. But maybe there are hints for how one could think about this?
I made a little notation language for making gestures in Gest:
"beg 3 3 t 60 sg pr 2 t 63 sg t 60 gl
pr 3 t 62 sg t 60 sg t 59 gl end loop fin"
produces the gesture used to control pitch below.
It's only a small abstraction above the low-level commands used to populate gestures, but it sure will save some keystrokes!
Took a peak at the Tidal Cycles documentation (as one does occasionally), and it turns out that the notion of a "cycle" in Tidal is very similar to what I guess would be referred to as a "phrase monoramp" in Gest.
Do you do #Android dev.? Do you have any idea why a network call would fail under API 24 while working under API 22, 23, and then 25 and up? Issue seems to be totally isolated to API 24, Android 7.
On this subject, lately I've become obsessed with personal libraries and archives, both physical and digital. I don't have a grand thesis yet, but there's something to the role an individual's practice of collecting and curating can lead to a distributed system of stored knowledge, particularly in arenas traditional institutions miss, but even just as a caretaking mentality, library as practice
I couldn't resist. Gest now has exponential and bezier behavior. With Gest capable of drawing step, linear, exponential, and bezier line segments, it now officially has equivalent functionality to my old libline library, but better:
Gest also uses proportional rhythms similar to an even older project of mine called Prop (a rhythmic notation system). I've got a ways to go before I can do some of the stuff found in there, but it is very very close:
both prop and libline failed for the same reasons (clock drift), which Gest addresses (and fixes) via using a phasor as an external clock signal.
I'm really excited to begin exploring melodic counterpoint again, only this time wielding gesture!
I felt the need to add some glissando behaviors to my gesture sequencer because of all the pitch sequencing I was doing.
I've added two kinds of glissando behavior. A regular gliss that performs glissando in the last half of the note, and a small more subtle gliss that only does glissando in the last 10% of the note. Both use cubic slope.
The demo below showcases both glissando behaviors.
Feeling inspired by the "Sonic Entomologist" Disquiet Juno Project entries:
I teach computers how to sing.
Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.