Orca is a visual programming environment for making music. Except it's not graphical, it's just text arranged in a grid. Except it doesn't actually make music, it just silently emits digital events across time. When you first see it, it's utterly alien. When you start to learn how it works and why, the logic of it all snaps into place, and it becomes a thrilling case study for authors of live programming environments and interactive media tools.
Devine Lu Linvega, Orca's creator, struck a wonderful balance between flashy style and significant utility. Orca is typically encountered as an inky black and seafoam green alphabet soup, pulsating to some species of broody electronic industrial throb. But it is also a forgiving learning environment that doesn't crash, puts code and data together in the same space, lets you directly manipulate code and data interchangeably, allows generous recovery from mistakes, and supports discovery through freeform play.
I invited Devine to come on the show specifically to brain dump about the design process of Orca, how he started the project and built it up to what it is today. During our three-hour conversation we wound up talking a lot about all the other tools he's created, and you can hear that discussion on last month's episode. This time it's all Orca — inspirations, execution model, operators, interface, system design, ports & reimplementations, interactions with other tools, and the community.
This episode contains many snippets of music, as examples of what you can make using Orca. All of it was created by Devine, and is available on his Youtube channel. If you like a particular piece and want to hear the full thing — and see exactly how Devine made it — they are all linked in the transcript at the point that they appear in the show. So just scroll and skim, or search the transcript for some phrase that neighbours the song you want to find.
Quote of the show: "It's for children. The documentation fits in a tweet, basically."
Links
Devine Lu Linvega is our guest. He and his partner Rekka funnel their lives and creativity into Hundred Rabbits. Devine has created countless tools, but Orca is the focus of today's episode. He also appeared on the previous episode. Support them on Patreon, so they can keep making amazing things like Orca.
At the dawn of time, Devine was inspired to make a game by misunderstanding an Autechre music video. I don't know which one he meant, but here's a classic. And, why not, here's my favourite song of theirs. Yes, that's one song. Put on some big headphones and play it loud while you read, debug, sleep, drive, trip, what have you.
In the theme of creation through misunderstanding, Orca was inspired by a misunderstanding of Tidal.
It's not mentioned in the episode, but I wanted to link to this Tidal remix (By Lil Data, aka FoC community member Jack Armitage) of a song by Charli XCX. This remix slaps, but... you can't really feel what the music is going to do based on the code, hey?
Rami Ismail hosted a year long game jam, for which Devine and a friend created a little block-based puzzle game named Pico, which would eventually become Orca.
Sam Aaron created the music coding tool Sonic Pi, which is included by default with Raspbian. It reminded Devine a little bit of Processing without the compile time, and seemed similar to Xcode's Playgrounds.
Dwarf Fortress, ADOM (Ancient Domains of Mystery), and other Roguelike games are precursors to the 2D character grid of Orca. The code structures you create resemble the patterns in Game of Life.
Learning how to read Orca code is like learning to read the code in The Matrix.
Orca's traveling N E S W operators are likened to Rube Goldberg machines, rolling ball sculptures, and the Incredible Machine.
Orca is a language that uses "bangs", a concept borrowed from Max/MSP and Pure Data. Devine also made a similar looking flow-based web framework called Riven.
Generative music arguably went mainstream with In C by Terry Riley. Here is the definitive recording, and here is one of my favourite renditions. While you can make generative music with Max/MSP, or Ableton Live, Orca offers a much richer, easier approach.
The Chrome version of Orca is easy to get up and running with no dependencies, thanks to web platform features like WebMIDI and WebAudio— much easier than tools like Tidal or Extempore, especially if you use Orca's companion synthesizer app Pilot.
Orca is so simple that it's been ported to Lua and C. The C version runs nicely on the Norns, which is a little sound computer by Monome.
Ivan recently listened to a fantastic interview with Miller Puckette (creator of Max and Pure Data), which sparked curiosity about realtime scheduling for live-coded music tools.
Orca's Euclid operator U was inspired by the Euclidean Circles synth module.
The community around Orca largely grew out of the "lines" community, a forum started by Monome. They make a lot of pieces you can use as part of a modular synthesizer rig — you know, one of those giant cabled monsters used by the likes of Tangerine Dream in the 70s. People still do that, and it's better than ever.
It seems like all node-and-wire visual programming languages, like Origamiand Node-RED, are perpetuating certain conventions borrowed from modular synthesis without any awareness of that history and the limitations it imposes. This makes your humble host a touch grumpy.
The THX deep note was an early example of the wild polyphony afforded by computer-synthesized audio, as opposed to the limited polyphony or even monophony of analog synthesizers.
You can use Orca to control Unity, which is neat. You can use it to play QWOP, which is nuts. Speaking of QWOP, it's part of a whole genre of hard-to-control games like Surgeon Simulator, Octodad, I Am Bread.
Devine has used Kdenlive and Blender to edit videos, since they're both really good (for an open source programs). Better than editing just with FFmpeg.
Remember when Jack Rusher said "Orcal"? Yeah, good times.
The transcript for this episode was sponsored by Repl.it. They're amazing, and seeing stories like this just melts my heart. Email jobs@repl.it if you'd like to work on the future of coding and, hey, help kids discover the joy of computing. For the full transcript go to https://futureofcoding.org/episodes/045#full-transcript