DEV Community

Cover image for Livecoding with Orca and minimalist tech
Paula
Paula

Posted on • Updated on

Livecoding with Orca and minimalist tech

I recently got myself entangled with uxn ecosystem and related projects. I must say I found about this on Mastodon, a microblogging free software site from the Fediverse. I'm trying to slowly shape the technical aspects from life into something I'm happy to work around, let me explain:

The rhythm of social media and tech

As most of you over here, I love technology, I truly do. I was born in a home with a (big, ugly, white, slow and noisy) computer that my dad owned and I was able to use it, and computer related stuff (games, programming, breaking stuff) has always been there. But as much as I loved it, it was sometimes overwhelming. This feeling became even stronger when the social media came up. It wasn't that bad at first (if I'm allowed to talk about forums and later Tumblr as social media), but in a few years (during my teen years) it became fast, full of noise and it made me feel uneasy many times. Luckily it was easy for me to leave Facebook: I was kicked from it because I refused to use my name (so many years ago already). I've been dealing with this feeling for a long time, though, even afterwards. But at some point I got myself into the Fediverse and it felt like turning off the kitchen extractor in my head. I understood that its rhythm made me feel way happier, as well as the design (which is not trying to grab my constant attention) and the way most of the people interacted: they tried to use trigger warnings (since it's an option to hide contents of a toot under a topic warning when you write a post), respect gender tags, and generally engage into conversations in a different way.

The project

In this context, I found different topics going on, including uxn project. Since this ecosystem was created with a focus on creating portable tools and games, there are so many cool, minimal projects going around uxn. I went through the language tutorial first, thanks to 100r, a couple of amazing persons that live in a boat and build tools, and compudanzas, a group of people that align with the free software and minimal resources philosophy. When reading more and more about this tools and the whole project and the people behind it, I just felt "this is it, this is the kind of tech I want to be involved with and be surrounded by". Something that's useful yet not noisy and overwhelming. Yes, it could be complex (and even more if you are not into assembly, which I luckily am) but nevertheless accessible and fun.

Livecoding and Orca

Although there are a few interesting projects going on in the uxn ecosystem, my favorite projects are noodle and Orca. Noodle is a small drawing program to sketch. Orca is a livecoding esoteric programming language, capable of sending MIDI, OSC & UDP. Iแธฟ planning on implementing some way of interacting with orca using a Neo Trellis pad, but that will be a different post! :)

You can use different commands, described in the official documentation or the original repo. You can do things such as create variables, random results, clocks, base X and more. Here's a very cool tutorial I also checked btw.

Here's my example!
Image description

Let's go through it together. First of all, let's take a look at "HOLA" part:

...4C6........
....1B3.......
...D424THOLA..
....:03L......
.......J......
.....pVL......
Enter fullscreen mode Exit fullscreen mode

This will play a sequence back and forth (HOLA) which is a track of four notes (D424THOLA), the iterated letter will appear in the fourth place of the line bellow, for example I caught L at the moment I froze the app (:03*L*). J allow us to put under J the same value from above the J. pVX saves the value of X in Vp. So in this case, it saves the value of the iteration in Vp. The same happens with "QUE" (that saves the value on Va) and "TAL" (that saves the value on Vu). I chose those because thatล› my name, pau :)

.......
.1C6...
..5Y5..
....J..
..hV5..
.......
Enter fullscreen mode Exit fullscreen mode

In this case I'm saving in Vh the value that results from iterate 1 to 6. Like saying the classic "from i=1 to i=6, i++". (1C6, or 1 clock 6), while Y puts the value from the left of Y on its right, it's unnecessary in this case, I was sketching. so for example if we have a value X somewhere, XY will output: XYX.

.......
.1R6...
..2Y2..
....J..
..oV2..
.......
Enter fullscreen mode Exit fullscreen mode

This one is similar but using R instead of clock. R means random. so this chooses a random value from 1 o 6, and stores the result in a variable called Vo (oV2).

......
...D1.
.Vh*H.
.E.GE.
Enter fullscreen mode Exit fullscreen mode

This will output E like this:

Image description

Because it's using Vh, which is an iteration from 1 to 6, as we explained before. While using Vo looks like this:

Image description

because it uses random.

The rest are musical notes that are triggered by that E loop, and the notes are triggered by the variables with my name. for example :04C will play a note.

...Vp..
:02....
Enter fullscreen mode Exit fullscreen mode

Will play a note of 02X being X the value of Vp.

...Vp..
:02....
...Va..
:03....
...Vu..
:04....
.......

Enter fullscreen mode Exit fullscreen mode

These are all the notes I want to play like this. Anyway this is how the result sounds when connecting the output to VCV Rack.

Top comments (0)