Breaking Update v158+

  • Pushed an update that changes the behaviour of the F, L and B operators. I know I said I wouldn’t do that anymore but it’s well worth it.
  • The new update also includes a better display of play/pause state.
  • Backspace in insert-mode will erase the selection and move westward.
  • Fixes an issue where the port names were invisible.

Okay, let’s look at the changes with the operators.

Previously, the L was mostly used to toggle between two values, like a swap, but this behaviour was destructive and in most cases I saw people use the T or P operators like:

.D....
i.....
22Tab.
..a...

The new B and L are now math operators, like A and M, here are tables of all the math operators side-by-side.

Lesser Operator

So you’ll notice that the new L, outputs the smallest value of the inputs, so in 2L4 = 2, or 6L3 = 3, or 4L4 = 4, you get the idea.

It’s useful to find if something is not null, or to bang only a region of a Track. You can see some more examples here, notably how to bang on greater-than when combined with the new F.

C...
3L3.
.38T

Bounce Operator

The new B basically took the operation of the old B, where it would bounce between two values on the clock, but its old operation has been extracted and turned into this new operator, taking a value(will often be the output of a C or I) so you can now bounce a iterator like:

I8....
5B4...
.1.X..

If Operator

The change in F is basically a return to the old behaviour where .F. bangs, that means that it won’t change most cases where you’re catching a passing value like:

C..
7F2

Because we lacked a reliable way of inverting a bang *, the following pattern will now give you the opposite of the Euclidean sequence:

3U8
.*F

Or,

.*..*..*.*..*..*.
..**.**.*.**.**.*
11 Likes

Super into all of this except that I was using the old L function to rotate euclidean rhythms… wondering if there’s another way to do that efficiently. I’ll see if I can work something out.

1 Like

You could write the rhythm on a track, and offset the playhead like:

C...C.5U
6A2.6.X.
.8Y88T*.

You can change the offset by changing the 2 value in the addition. It’s a bit crude, but it might do the trick?

Alternatively, if you want something a bit more esoteric:

3O....
......
.3O...
......
..3O..
......
...3U8
1 Like

It would be nice if these commands where also listed in the initial help view.

But these commands are all available in the dropdown menus? Or do you use the web version?

You are right. I was using the web app. But this is exactly the time when these info screen would be very useful, because you don’t have the dropdown menus

okay :slight_smile: I will add the shortcuts to the guide

1 Like

Thanks! That’s quick! :grinning::grinning::grinning::grinning::grinning::grinning::grinning::grinning:

Here’s something new and fun in the meantime.

Redesigned how injection works in ORCΛ. You can now use the $in:filename pattern in your patch to load an orca file at that position! To load extra modules in your project, just open or drag files onto the window.

Enjoy :slight_smile:

10 Likes

Trying to dig into Orca with a more “programming tools” mindset beside the “finding new ideas” I usually have. Today I made a small but useful phase sequencer :slight_smile:

https://www.instagram.com/p/B5VK4NlJqV0/?igshid=1w8uexcl6nxlg

edit: cleaned the patch a bit (thanks a lot to @neauoire for being such an active supervisor and giving me the right suggestion about the K operator on Twitter) and added a couple of controls. I put it on my github for those who wish to play with it. My idea is to create some modules to inject while performing, cause I love to jam with Orca, especially when improvising with other people :slight_smile:

4 Likes

Here’s the cleanup tip for everyone else who are curious.

If you make orca modules, you can put them up also on patchStorage

5 Likes

Totally missed this! Just uploaded my patch there as well!

Hi! Its really nice the injection. I used it yesterday for the first time, but with the old build (I commented on youtube)
Today i updated Orca and found out i have to drag the files first to load them. (Instead of having them in the same parentfolder)
Yesterday i just put the command $inject:filename;0;0 in the topleft corner. This way i could recall different states of a patch really fast, just by hitting enter in topleft.
Now with the new build i cannot do that anymore, since it doesnt overwrite the patch but pastes it underneath the "$in:filename"command.
Is this how it is now or am i overlooking something?
Thank you!

Today i updated Orca and found out i have to drag the files first to load them. (Instead of having them in the same parentfolder)

Orca doesn’t read the file system anymore, and that’s not likely to come back. That is a dependency on Electron that I am gradually trying to phase out. I don’t have a faster solution at the moment but I am thinking about alternative options.

Yesterday i just put the command $inject:filename;0;0 in the topleft corner. This way i could recall different states of a patch really fast, just by hitting enter in topleft.

You can still just put $inject:filename in the top left, and it will work the same. The difference is that you don’t have to include the command at the top of each file that will be included anymore.

If you look back at this video, you could build yourself a main.orca, with the content:

$in:a....
.........
.........
.........
.........

And in a.orca, you don’t need to include anything special to control the patch loading, nor in any other file that will be injected.

1 Like

I see the benefit of the new function.
But since i am swapping back and forth/injecting quite fast its easier that the injectioncommand gets overwritten also. But i guess i can get used to it this way. If i dont hit the copied commands it doesnt grow to a huge stack which pushes my patch downward.

Perhaps I don’t quite understand the issue you’re having, your injected files shouldn’t have their own injection code either so there’s no reason it would make a huge stack, could you make a video?

I’m all for making something that’ll work well for you. :slight_smile:

v160 Update

  • Fixed an issue when dragging(alt+arrowKey) when your cursor has negative width, like if the @ sign is to the top right of the selection, would straight up erase the selection.
  • Renamed the old time: command(that set a frame value), to simlpy frame:.
  • Added a tiny little widget that now takes the place of time: and outputs the elapsed time since 0f.

I’ve been meaning to add this for shows when I work in fullscreen and I totally loose track of the time. The idea with this is that if I restart the frame count at the beginning of the set, and have a 35 minute set, I can see that I am 6:13 into my slot, like:

Live Rig

6 Likes

how do i increase gate time for a trigger?

What is a gate time?

… note length…?

The MIDI operator : takes up to 5 inputs('channel, 'octave, 'note, velocity, length).

For example, :25C , is a C note, on the 5th octave, through the 3rd MIDI channel , :04c , is a C# note, on the 4th octave, through the 1st MIDI channel . Velocity is an optional value from 0 (0/127) to g (127/127). Note length is the number of frames during which a note remains active. See it in action with midi.orca.

5 Likes