A lighting talk about labyrinth generation and theremin instrument using the Web Audio API in 219 bytes presented at Web Rebels 2016.
Web Rebels is dear to my heart as it was the home of my first conference talk in 2012. They always have a great lineup and impressive organisation. I had the chance to attend again this year and present a lighting talks about labyrinth generation and the Theremin in a handful of bytes.
You can skip through the slides and demos
We already talked about the famous
10 PRINT CHR$(205.5+RND(1)); : GOTO 10 in thread.js where we reached 64 bytes with the following program and the full width diagonal UNICODE charaters and the ZERO WIDTH SPACE:
<p onmousemove=b.innerHTML+='╱╲'[event.screenX%3] id=b>Hi
However it is possible to reach 56 bytes and catch the mousemove event on the whole page:
You can try it LIVE.
Theremin and Web Audio API
The theremin is the Hello World of audio synthesis. This intstrument was invented around 1920 by Leon Theremin and uses two antenas to detect the distance of the hands of the player to adjust the picth and volume of a simple oscillator.
Using the Web Audio API, makes this trivial. We need an
GainNode and an
OscillatorNode, connect them all together and map the volume and frequency to the mousemove event. Combined with the labyrinth generation above, we get the following 219bytes
<html onmousemove='if(h)with(new AudioContext)o=createOscillator(),o.connect(g=createGain()),g.connect(destination),h=o.start();with(event)innerHTML+="╱╲"[g.gain.value=pageY/999,(o.frequency.value=pageX)%3]'id=h>
You can try if LIVE.
Starting this little project I was confident to reach 256 bytes but didn't expect to go as low as 219 bytes. By experience I am sure other code golfers could save a couple of bytes.
Other recent projects
There are many experiments and projects like 10 PRINT THEREMIN AT WEB REBELS to discover other here.
- MUSIC FOR TINY AIRPORTS 2/1 🛫 Celebrating the 40 years anniversary of Brian Eno's "Ambient 1: Music for Airports" with an homage written in 256 bytes with the Web Audio API.
- THEY COME AT DUSK 👺 A survival horror game for JS1k 2018, where you run away from dead miners as you hear your heart beat. Turn around using the arrow keys until all you hear is beeeeeeeep.
- FRONTFEST MOSCOW It was an honour to be invited to Fronfest Moscow 2017 with the little family to give my first workshop; implementing a Twin-stick shooter using ES6 and Canvas, and to continue my CODE🎙ART series of talks + live coding aiming to inspire new web developer artists.
- HYPERSONIC MANDELBULB A hasty invalid JS1k entry using webGL+Audio. Possibly the first one.
- MUSIC SOFTSYNTH This is the brain child of 140byt.es and Experimental music from very short C programs.
- TILT SHIFT A very fast & simple tilt-shift effect in Canvas.
Don't be shy; get in touch by mail, twitter, github, linkedin or pouet if you have any questions, feedback, speaking, workshop or performance opportunity.