It just occurred to me that learning to program in was a good thing not only for me as a musician, but also as a programmer.

It is actually in SuperCollider where I think I have first learned some functional(ish) programming idioms (like map, filter, non-index-based iteration). And the level of expressiveness of the language made me look for similar non-imperative idioms in other languages.

I haven't looked at yet (which SC is inspired by), curious about it.

Okay, so Tone.js seems to offer what I need - a way to route the signals however I want plus objects for math operations and useful abstractions (as well as the very convenient LFO node with range arguments.)

Feels close enough to in fact.

Show thread

The youtube stream from my performance yesterday didn't work out very well, but I have published the original stream as I have recorded locally:


Today I will be performing live from Lem Station in Lviv, 16:30 UTC / 18:30 local time; the performance is based on the acoustic environment of an underground sewer tunnel located right below where I will be located.

It is going to be streamed on the Lem Station YT channel:

It's good to know that in this fat synth sound:

The reverb plugin does like 75% of the sound:

...including pitch shifting polyphony etc.

I don't feel that dumb anymore with my primitive oscillators :)

Noticed a new release (3.11).

One thing that caught my eye is an ability to synchronize with Ableton - I'm not using Ableton, but if playing in a group with someone who does, that might be useful.

I’m very happy to have participated in the amazing Eulerroom Equinox 2020 - an all-online four-day festival. Here's the recording of my performance, an improvised drone/ambient piece.

www: ጮ.cc/2020/03/22/live-at-eulerr
onion: 57f23hcybjqj4ime.onion/2020/03

A nice way to combine patterns with NodeProxies when livecoding is to use the \set NodeProxy role, like this (provided you have a ProxySpace activated):

~snd[0] = {\; }
~snd[1] = \set -> Pbind(\degree, ..., \dur, ...);

It allows attaching a Pbind to a NodeProxy to steer its controls. How didn't I pay attention to this before?


Playing a bit with developing little language learning games in . It turns out refreshingly easy to do these simple GUIs, and the bundled smiley faces in pict/face make it even simpler:)

I don't yet understand though how to manage state in GUIs without imperatively mutating variables. Ideally I would use something like a Python generator or Task to store and advance the current challenge, but I'm too new to Racket to figure out how to do it. Any hints?

La Quadrature du Net - Mastodon - Media Fédéré est une serveur Mastodon francophone, géré par La Quadrature du Net.