Web Audio Conference 2019

I was very happy to attend and present at this year’s WebAudio Conference. The NTNU did an incredible job hosting and organizing the event and there was a great variety of research presented. I was noting to myself throughout the conference how it seems to get better each year for both the software and technology shown and the musical performances performed. I think it’s a sign of the level of maturity of the browser platform as a whole that it can support high-level musical work today.

For those who might be interested, all of the sessions were recorded and streamed online. Archives are available here.

For my own work, I presented on the Csound-WebIDE here:

(Note: I misspoke about Chowning’s work and said “parallel carrier, single modulator” when I should have said “parallel modulator, single carrier”.)

I also participated in the jam session by live coding with Csound here:

Great to see old friends and meet new ones. I hope to make it to next year’s conference in Barcelona!

Excursions with Hydra

I’ve been practicing visuals with Olivia Jack‘s wonderful system Hydra the past couple of days and I have been enjoying it very, very much. It’s been a blast to have a higher-level abstraction layer to work with over coding GLSL shaders directly. I suppose a big factor in my joy is that I tend to spend a lot more time with JS than I do GLSL too. 😉

I think knowing some shader programming and practices certainly made learning Hydra a lot quicker than it would have been otherwise. Still, lots to learn and practice. 🙂

Additive Pitch Rhythms Using Hexbeat

Practice session today using additive pitch hexbeat rhythms to generate melodic contours.

Each hexbeat() is generating sequences of 1’s and 0’s which are then multiplied to alternate between things like 7 and 0.  So if I add one that alternates between 2 and 0, I get 9,7,2, and 0 as possibilities.  Then with say 4 and 0, I get additional combinations.  With the patterns of different lengths (I’ve been using mostly prime number lengths) it generates a nice long overall pitch pattern, which is then masked by the rhythmic hexplay() pattern.  I then add a choose() to say “play 70% of the time” and I find all of that together is quick to write, generates good variety, but has an underlying structure that is stable.  (It’s been on my mind how to mix randomness + stability in interesting ways and I’ve found these explorations have been leading to some interesting pattern generation.)

This desmos graph visualizes an example of a 3-part hex pitch rhythm added together:

(Click on the “Edit on Desmos” link in the graph to turn on/off visualization of the various individual hex pitch rhythms.)