Bessel

 

 

What is it?

 

Bessel started out as an idea for a fast approximation of bessel functions, a type of function that shows up a lot in physical modeling synthesis, basically whenever there's a circle. They also show up a lot in FM synthesis, I feel like I should mention that because CCRMA :) Essentially, the kinds of bessel functions that I wanted to approximate look like a sine wave that varies in frequency and amplitude over time, so they can easily be approximated by taking the sine of some polynomial and multiplying that by some other polynomial. The hard part is actually figuring out those polynomials, but I won't get into that here. On the audio end, this is just a model for a circular membrane (like in a drum) that uses my bessel function approximation and feeds the output at some point on the drum back into itself through a specifically chosen nonlinearity. This causes the "drum" to oscillate chaotically, doing all sorts of fun noisy stuff while still loosely sticking to a pitched note.

Around the time I was working on this approximation, I got to visit my 9-year-old cousins, and when I showed them some of my other digital instruments, they immediately went chaotic in a different sense of the word, and tried to press every key at once, which struck me as a really fun way to interact with this type of sound. Because of this, my instrument flashes keys all over the place whenever you press them, rewarding a very reckless sort of exploring as you intuitively learn what these keys do or don't do. While I could describe them all for you, I'd rather you explore, so the only information you get right now is that the arrow keys change your view and the space bar adds new keys to the instrument!

 

An Image!

 

Get the code here! (Requires the latest ChucK/ChuGL)

 

Acknowledgements

 

Thanks to Ge Wang for ChucK/ChuGL, and thanks to Andrew Zhu Aday for his incredible help in optimizing this code, the keyboard input code used in Bessel, and most of the rest of ChuGL! The font used in this instrument is DotGothic16 by Fontworks.inc, used under the open font license. Any other textures are made from my own images.