Orca - Livecoding Tool

Well, this might be possible using the midi operator :0.

  • Do you want to send noteOffs for all the active notes that are still playing?
  • Or do you just want to stop any notes sent to a channel from being played?

second one! 20chars******

Ah! Okay, in that case, you should try to just make a switch that acts as that mute operator, for example:

..aV*.....
..........
.Va.......
.*d4......
...:03C...

The d operator will only bang the midi operator every 4th frame if the a variable is set to bang(*). Paste this in your patch to see it in action :slight_smile:

3 Likes

Thanks! That use of G is an example of an idea borrowed from one of @Allieway_Audio’s videos.

2 Likes

Working much better, ran it through my test scenario and didn’t see the stuttering and timing issues.

1 Like

Heya! Just realized, I shared this in the chatroom a while back, but figured it might be fun for people here to play around with as well, so here is a Linear Feedback Shift Register (LFSR) I made in ORCA using the loop object. It generates a pseudorandom rhythm that will only repeat it’s 7-bit state every 127 ticks! Try sending the bangs down to some midi triggers with jumpers and you’ll get some nice pseudorandom rhythms - change the X value on the offsets to get some variant rhythms which will repeat more often. Have fun :slight_smile:

..........................................................................
..................27O.....................................................
..........................................................................
.............15O....J.....................................................
...............*Y*Y*......................................................
...................JJ.....................................................
..................F*......................................................
.................F........................................................
...............7L..***.*..................................................
..........................................................................
15 Likes

Nice patch @Allieway_Audio, I’m thinking maybe this should be in the /examples folder.

I just pushed a bit of a massive update this week which contains 2 important new features.

  • Case sensitive logic operators(R, M, A, etc.), so you can get a random major by simply doing R(A,H).
  • I also added transpose values to the midi operator, so :03H is :04C, and so on. it allows to make really nice arpeggios like:

Let me know if you have any request :slight_smile:

3 Likes

I’ve tried condensing your example a bit:

05O..05OS
aV...bV..
..2Kab...
...F.....
..F*.....
7L.......
........0
1 Like

Really enjoying the midi transpose in the new update! It’s fun to be able to program notes based on both pitch and semantic value, finding surprising combinations/correspondences.

8 Likes

One thing that would really help me ramp up more quickly is documentation of the inputs and outputs for each operator. Does that exist already?

Hi @jasonw22, yes in the application itself. You can see what each port does.

Operator’s name when hovering on the operator itself.

And individual port names when hovering on the operator’s parameters:

3 Likes

That is somewhat helpful!

Still really quite terse though.

Here’s one that is stumping me: V

Left input is V-write, right input is V-read, and there is a V-output.

But I can’t map any of these names to concepts I’m familiar with for reading and writing to and from named variables.

Do I use one of the inputs as a “key” and the other as a “value”, when writing to the variable? And just the “key” when I want to read it? What are valid identifiers for a key that can return the value?

Just an example of one operator that could use a bit more verbose description.

Having a lot of fun though! Definitely feels like an extremely useful sequencer, even after just a couple hours of play.

That’s a tricky one, maybe someday the V operator will be divided into two different operators, one for assignment and one for read.

I’m open to better port names if you have suggestions, but here’s the idea:

If write is occupied, it writes, what it reads, otherwise it only reads. A bit strange I must admit but I couldn’t find better names. I try to better showcase how the operators work in the /examples.

3 Likes

Thank you! That helps. The example where I had seen the V was a fairly dense one, so it was difficult to sort out what was affecting what.

What characters are valid for placing in V-write? I tried using an uppercase A and got the A operator, which didn’t work as a variable name.

If you do

AV.

You’re basically trying to do (add V<31> 0).

Here I added 2 to demonstrate, (add 31 2) = x<33>:

If you want to assign to a capital letter, just freeze it first with something like H.

If you hover a port, you’ll see who owns it. In the AV. example, you can see that A owns the V location.

Aha! H makes an operator not-an-operator. Nice! I didn’t really understand what “Stops southward operators from operating” meant before.

Hmm, now I’m in need of translation again. I assume you mean that if I put the cursor over A I can see that it is in the position of the V-write port? Or did you mean something else?

In your situation of

I tried using an uppercase A and got the A operator, which didn’t work as a variable name.

If you hover over the V, which is no longer an operator but a parameter to A, it will say A-a which is the a of (add a b)

1 Like

Ah, yes, I understand that. Thank you!

1 Like

Anytime :slight_smile: Let me know if you have any other question. I’m sure this exchange will come handy to others too!

2 Likes

Yes! I was struggling to nail down V as well. This explains it!

1 Like