Orca - Livecoding Tool

Top Tip: If you want example code for voice management in Supercollider look at the Norns engines - a number of them have voice management code you can just cut and paste :wink:

2 Likes

Very cool! I love Una Corda, use that all the time.

I haven’t played with it yet, but you can set up a few lanes of control data to a soft synth in Ableton and use the CC function to achieve the same effect.

Workshops

12 Likes

What’s the current usage for lower-case functions that only process when they receive a bang? Looks like some functions work this way and some do not. And you have to start by defining an upper-case function to establish it, then change it to lower-case.

Still kind of not understanding how to use it predictably.

Also is there a way to use math and return a capitalized ‘number’ (or for use as a note…a vs A)?


Also…is the Loop function explained somewhere?

what are Norns engines? do you have a link handy to one?

e.g. the SuperCollider parts of Molly the Poly

1 Like

yeah like @alanza says - that’s the code I’ve based off too in the past - Mark Wheeler know’s what he’s doing - always worth having a nosey at his code to learn stuff

1 Like

L, the loop operator, reminds me lots of the turing machine sequencer but just the looping part. you can inject stuff into the loop from any of the positions and mess with the length

2 Likes

On Lowercase & Uppercase

What’s the current usage for lower-case functions that only process when they receive a bang?

There’s many, I’d say that the most typical usages are with I and X. This emits a S projectile every 16 frames.

DgH
.xS

Get a random major

The case of the output is defined by the case of the right-hand side port, so for example, this will output a random major:

aRH
.B. 

Cycle through the major scale

Will offset the clock to A, through 7 frames.

C7.
3AA

Capitalize a letter

Here’s a pattern found by the creator of AIOI.

cA1. # Will capitalize the "c"
.dAZ 

The Loop Operator

Is the Loop function explained somewhere?

The loop operator has 2 inputs, step & length:

  • Length is like T, it will lock a certain amount of right-hand side cells
  • Step is the rate at which it will change, allowing you to go fast or slow, or even backward.
16L012345 # Will cycle each letter
56L012345 # Will cycle each letter backward
12 Likes

Wow! Great info. Thanks!

Instructions on how to run on a Raspberry Pi.

18 Likes

What case is that? Custom?

That’s the U-Geek 2.2 TFT.

2 Likes

Something I’ve really been enjoying with Orca lately is what I’m going to call the ‘Frogger’…

Basically, have a stream of E’s travelling across the screen, and then your plucky N’s have to make it to the other side without colliding:

Orca_1

8 Likes

I’m not able to get osc to work with supercollider.
In sc the osc port is 57120.
In orca I open the inspect window and enter:

terminal.io.osc.select(57120);

I see the confirmation

OSC Port: 57120

In orca main window I create the following sequence:

.D.....
..=b123

Then in sc:

n = NetAddr("127.0.0.1", 57120);
OSCdef.newMatching(\test, {|msg, time, addr, recvPort| "here".postln}, '/b', n);

Nothing is printed
In sc if I test with this:

m = NetAddr("127.0.0.1", 57120);
m.sendMsg("/b", "msg");

the osc message is received.
How do I confirm that orca is sending the message?

How do I confirm that orca is sending the message?

In the Github repository, you can use the listener.js to test outgoing messages like this:

node listener.js

I haven’t used OSC much outside of SonicPi, but I can try to see if I can get SC to get OSC messages on my machine.

  • I’ve also just added the SC port 57120, in the OSC menu, no need to change it via the terminal from now on.

1 Like

I can get it work if I don’t include the NetAddr in the handler. So it is just some supercollider weirdness.

(
var addr = '/b';
OSCdef.newMatching(addr, {arg msg, time, addr, recvPort;
	msg.postln;
}, addr)
)

Thanks for adding the sc port in the options.

2 Likes

@makio135 found a pretty neat & compact way of capitalizing a letter, I’ve updated the answer above with the pattern to answer your question:

Also is there a way to use math and return a capitalized ‘number’ (or for use as a note…a vs A)?

This was found by the creator of Aioi, one of Orca’s companion application that handles complex OSC addressing.

To Uppercase

cA1.
..AZ

To Lowercase

H... 
CA1.
.dAz
4 Likes

Hi there! if anyone has questions about Aioi, let me know.

4 Likes

Few ideas I’d like to throw out there, some I’m sure have been floated around quite a bit, some are going to be controversial or just bad, but I thought I’d put them out there:

(1)
First, it would be awesome if an arrow key and an input key could be held down at the same time, this would make doing things like erasing a whole line a lot easier as you could simply hold right and ‘.’ at the same time.

(2)
Along with this the ability to select a large area, maybe using a modifier key and the arrows, to freeze/pause it and shift everything in the selection in any direction would be killer
EDIT, just realized you can already make selections by holding shift. This took me way too long to figure out ╮(─▽─)╭
EDIT Again: So, with copy paste, this is a semi-moot point, though still possibly worth considering, also it’s taking me a bit to figure some of this out. For example I repeatedly tried to delete with delete instead of backspace before figuring that out. Would you consider adding some documentation on github?

(3)
Next, as of now the grid can be zoomed in and out of as well as made bigger by expanding the window to a bigger size, but I think having the ability to scroll would be great. I’m not sure how to make this look visually appealing though. There’s also the issue of stray operators that may try to carry on indefinitely, so it may still be wise to keep everything finite :stuck_out_tongue:

(4)
Currently MIDI notes and MIDI CC are possible, but I think having MIDI Pitch and sustain would be nice too, Pitch, in part, because it’s so much higher resolution than normal MIDI notes and sustain would be nice for obvious reasons. I know operators are running short, so maybe MIDI Pitch could be done by putting two ‘:’ next to one another, and three for sustain, since it should only need two parameters (channel and state) ? just spit balling ideas here, I know this breaks the trend of one operator to one task, but your sorta running low on operators here ¯\(ツ)

(5)
Finally, I’ve hit a few situations where it’d be nice to have a compact way to redirect a moving operator, say, take an E and output a N or a W and S, etc. I was thinking maybe using a modifer and an arrow key could insert Unicode arrows and work as these redirection operators. Obviously there are plenty of ways to do this right now anyway, but none that are as straight forward.

Edit:
Because there’s a lot here, I’ve numbered the suggestions to facilitate discussion

1 Like