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.

19 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

12 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.

5 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

there was the U operator in older versions before eUclid was introduced, it would be nice to have it back in any form!

But first, changes!

Sorry for the lack of presence this week, I was traveling. But I did manage to slip in a bunch of updates, like:

  • In commander, navigate history with up/down arrows. Like, up arrow will let you re-input the same command as before, useful for things like rewind:
  • Well, the rewind:, and skip: commands, you can see it in action here.
  • Improved docs, added commonly asked patterns in TUTORIAL.md.
  • Improved resizing of the window, should lag no moar.
  • Bangs are now highlighted in yellow!
  • The Mono operator now works per-channel, that was a pretty damn involved change, but so worth it — You can see it in action here. It allows to have multiple mono channels at once, it’s your best friend if you’re building sets using modular pieces like I do.

Hello Vega

It would be awesome if an arrow key and an input key could be held down at the same time.

1 — That seems like a OS restriction, it doesn’t seem to be working on OSX no matter what I do, also it would be kind of dangerous, so I don’t think I would want to implement that.

To erase a whole line, hold down shift cmd right, and then press delete.

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.

2 — Select an area with cmd shift arrow, and then drag it around with alt arrow.

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.

3 — Orca C already does that, I don’t think I will implement this to OrcaJS just yet, I feel like this breaks some design rules, but I’m not quite sure which yet, so I haven’t moved on to implementing the viewport. Try the C version to have a feel for it. It might be present in the electron build at some point in the future, not sure yet.

I think having MIDI Pitch and sustain would be nice too.

4 — I’ve never had to use them, and it was requested so few times that I’m guessing that it’s not that needed, but if someone want to implement it, I would put this in the repo, just not in the master branch.

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.

5 — The cardinals transformers are very important to get used to, as I will not implement an operator that handles this alone, again. Since they can be reproduced easily in 2 or 3 characters, here’s a few of them:

#.CLOCKWISE.#...#.COUNTER.#.
............................
..2D4.....D4......2D4....D4.
32X.............32X.........
......H...............H.....
......E...H...........S.....
......j...S...........j.....
..........j................0
............................
.........................H..
..........S..........H...Ny.
...........H.........Ey..E.0
..........xW................
......0.....................

These are some excellent questions and suggestion, keep 'em coming! I need help improving the docs, if anyone wanna help me build the TUTORIAL.md or WORKSHOP.md with answers to these kind of questions, I would really appreciate it!

13 Likes

<3 those mountains! Thanks for the updates and for responding to all my points so thoroughly!
On the note of point (4), midi pitch bend and sustain, I thought about this a bit further and also thought that it might make sense to put them in some of the invalid space of the midi channels, so 0-f for midi notes, and ‘g-z’ for special midi functions might work? For example having the channel as g-u could map the 16 channels for pitch bend where octave and note become pitch bend ‘goal’ value and length how long long it takes for the pitch to bend to that goal, leaving velocity for sustain control. This avoids the awkward issues need to put operators next to one another or some other hacky solution and would make cool things like micro phonic music possible and sustain in general can be nice for arranging. I feel like this is one of those things you don’t realize you need until you have it

On (3), I just compiled ORCΛ-C and I’m really liking how scrolling and resizing works actually and with the location and size information in the bottom left it’s easy enough to navigate. Maybe using a different shade along a given edge to indicate an edge of the canvas has more off screen would help make it ‘feel’ better?

1 Like

Hello everyone! I think it’s time to share this companion app I’m making for Orca.
It’s a sampler (and soon synthesiser as well).

The unique aspect of it is that you live code the sampler configuration (channel, sample, start, duration…). And that configuration can be edited remotely via UPD commands (similar to the one used to trigger it).

Please try it if you’d like, feedback is appreciated :slight_smile: I expect it’s going to evolve a lot in the following weeks. It’s in heavy progress but it’s already playable!

21 Likes

@Vega The numbers 0-9 are unused in the midi operator, I was thinking they could either be octave down, or something else. Any thoughts?

@electret I’ve given a shot to Gull, I wanna add it to the list of companion apps on the repo! I was thinking, it could be nice if I could point to a folder on my computer to load the samples. I would put the samples next to the .orca file.

6 Likes