Holiday greeting cards: you can buy them in a supermarket. You can draw them in crayon. Or you can custom-code a generative interactive Web greeting.

Continuing something of a tradition on CDM, of course, we get to share the latter.

Robert Thomas writes with his creation. The musical component is probably the most interesting – and it shows off what can be done with free tools, including a Web sound engine that can read patches made with Pure Data.

Robert explains:

For a bit of holiday fun, here is a little interactive web based procedural audio collaboration I did with visual artist Matt Nish-Lapidus.

The audio is built in Pd and deployed through heavy into C then emscripten to JS and running in browser – fun!

Try it online:

And your family just sends a picture or a Web card. Wow.

If you want to have a go at creating something like this yourself, check:

Pure Data
Heavy (runs on a crazy number of platforms now; worth a second look!)

Both audio and image represent open source projects that began life in conventional desktop environments, then were ported to versions that would run in browsers. On the sound side, that means Pd, the 90s-vintage cousin of Max/MSP, which saw an API-compatible(-ish) engine coded from scratch as Heavy. For visuals, you get p5.js, a JavaScript port of the Java-based Processing to JavaScript and the Web. The p5.js project began with the extraordinary LA artist/engineer Lauren McCarthy, but has since become an official target of the Processing API.

So, you have visual patching for musicians in Pd/Heavy for sound, and easy creative coding for artists in Processing/p5.js for picture.

Heavy has an interesting pricing model, too. You can use it commercially with the open license; you pay more for commercial support, closed-license projects, and the like. Processing relies on the Processing Foundation and users like you.

You know you’re a nerd when this is what you do on your holidays. Wouldn’t have it any other way. We’ll keep coming at you more or less right through the New Year’s.