I’ve made some updates to Orca to address bugs, augment documentation, etc… Once @its_your_bedtime has a chance to review my PR, they’ll be merged into Orca that’s available via Maiden.

Here’s an excerpt for improved Softcut documentation. If you’re familiar with writing your own scripts you can also see how Softcut is implemented in Orca here and here


The SOFTCUT operator / takes up to 6 inputs (playhead rec play level rate position).

  • playhead
    • values: 0: beginning of buffer, z: length of buffer.
  • rec
  • play
    • values: 0: disables play; 1: enables play
  • level
    • values: 0: off, z: max
  • rate
    • values: 0: stop, z: 2x speed (forwards)
  • position
    • values: 0: beginning of buffer, z: length of buffer.


A subset of Softcut’s params are availabe with the SOFTCUT PARAMS operator \ (playhead param value). These 3 params are always required (along with a bang) to modulate a given parameter.

  • playhead

    • values: 0: beginning of buffer, z: length of buffer.
  • 1: Source

    • values: 0: 0 ADC level, 0 Softcut engine level; 1: 1 ADC level, 0 Softcut engine level; 2: 0 ADC level, 1 Softcut engine level; 3: 1 ADC level, 1 Softcut engine level;
  • 2: Pan

    • values: 0: full left, 1: centered, 2: full right
  • 3: Rate slew time

    • values: 0: 0s, z: 35s
  • 4: Level slew time

    • values: 0: 0s, z: 35s

thanks for this. curious, is there a significance to the first parameters being italicized and the others having a little box around them?

I believe that’s the difference between mandatory and optional parameters.

Thanks for the write-up! I’m still a bit puzzled about the difference between playhead and position but I’ll see if I can read the source.

@Frederickk: I think the MIDI comment is a copy/paste?

I think maybe playhead should be either 1 or 2 for the two buffers, and not position?

Reading the source I was surprised that pre_level and rec_level are the same parameter.

Am I right in that a bang (from left) resets the play position but that the rest of the parameters do not require a bang to update?

It seems you can clear the buffer by sending a bang to the rec position or am I completely off there? This will clear both buffers.

Once again thanks for the write-up. It really helped!



Hi all, there’s a new update for Orca available via Maiden. :raised_hands:

Maiden showing how to update Orca

Documentation has been updated on the Norns Community page.

  • Fixed Midi stuck notes bug as reported by @easterner and @fourhoarder

  • Updated documentation; fixed typos, added additional details for Softcut and Timber, and fixed inaccuracies for Crow operators.

  • Fixed Midi CC bug, I wasn’t able to reproduce what @ldezem, @ldezem, and @yaw were experiencing. but I did fix the logic to be 1:1 with Orca’s core. So hopefully behaviour matches other Orcas.

  • :warning: Breaking change :warning: Changed the way Softcut’s rate works, so that it’s now possible to have negative (e.g. reverse) values. /001.i. or /001... would playback content at normal speed, /001.z. would playback content at 2x speed, /001.0.would playback content at 2x speed in reverse

    • values: 0: 2x speed (reverse), i: normal (default), z: 2x speed (forwards)
  • Removed clear region from Softcut input, because the referenced sc_clear_region is not a valid param, if this is a desired feature, I’ll need to adjust param structure to accommodate start and duration. for buffer_clear_region (start, dur)


Absolutely great! CC behavior unification is super news.


YES. happy friday! thanks so much for your continued excellent work on this.

1 Like

Super! MIDI cc is a huge thing and very many strange sounds emanate through it :loudspeaker:

1 Like

I bought a cheap tiny RF USB keyboard from Ebay for £5 i8 Wireless Mini Keyboard Air Mouse Keypad Remote Control Android TV Box T95 | eBay …and it works with Norns Orca with a few caveats (caps lock doesn’t work, there’s only a left shift button).


But Softcut on Norns Orca is proving hard to get my head around.

I assume ‘in-playhead’ should be from 1-6 to select a Softcut voice but it’s scaled from 0-z so how does that work?

I take it Norns Orca only uses 1 Softcut buffer? How do I clear the buffer?

Is ‘in-position’ the buffer position for the playhead to reset to when it receives a bang? Is the buffer 5 minutes long and scaled from 0-z accordingly? Does it play or record from the ‘in-position’ at the ‘in-rate’ until another bang is received? How do I set the end point for the loop?

Thanks for any pointers.

1 Like

For me also there’s something not clear in the doc.

I assume also playhead corresponds to the 6 voices cause if not I didn’t catch the difference between position and playhead where 0 and Z have the same kind of parameters.

I see also that the pan goes from 0 to z and not from 0 to 2

I think the only way to clear the buffer is to just record over it. I normally set record to a or thereabouts and that will fade out what was on it. Looking through the code I don’t see a way of explicitly clearing it


@Frederickk / @its_your_bedtime, just a small question regarding contributing.

if i understand correctly, i should open a PR against frederickk/orca and not itsyourbedtime/orca.

am i right?

1 Like

you can do a PR against either really.

tl;dr if it’s an egregious bug or something is broken PR itsyourbedtime/orca if it’s a feature or a bug that can wait then PR frederickk/orca

I try to manage things in a way that makes it easy for @its_your_bedtime to review PR’s as releases (e.g. multiple bug fixes and features updates) instead of piecemeal, especially given his limited bandwidth.

I should update the contributing part of the documentation to be clearer.


Your and @its_your_bedtime’s efforts to development and maintenance of norns Orca is recognized and appreciated.


Edit. I’m just reading Shurui Zhou, Bogdan Vasilescu and Christian Krästner: How has forking changed in the last 20 years?: a study of hard forks on GitHub, IEEE/ACM 42nd International Conference on Software Engineering, 2020).


The notion of forking has changed with the rise of distributed version control systems and social coding environments, like GitHub. Traditionally forking refers to splitting off an independent development branch (which we call hard forks); research on hard forks, conducted mostly in pre-GitHub days showed that hard forks were often seen critical as they may fragment a community Today, in social coding environments, open-source developers are encouraged to fork a project in order to contribute to the community (which we call social forks), which may have also influenced perceptions and practices around hard forks. To revisit hard forks, we identify, study, and classify 15,306 hard forks on GitHub and interview 18 owners of hard forks or forked repositories. We find that, among others, hard forks often evolve out of social forks rather than being planned deliberately and that perception about hard forks have indeed changed dramatically, seeing them often as a positive noncompetitive alternative to the original project.

It makes me think of this collaborative fork situation with norns Orca, and is giving me the warm fuzzy feels. PLUR.


Is anyone using Orca on Android to play on the go?
I can run orca with uxnemu on Android (X server installed), but I don’t know how to produce sound. There is no Linux ALSA on Android, there is some android midi system, but there needs to be some bridge app that listens to OSC/ MIDI input from orca and talks to android sound system. Any tips?

This is not really related to the Norns version of Orca, it might have to be moved to this thread.

You could use the very basic built-in synth operator[=], or you could control another instance of Uxn running any of the sound making program, using the unix pipe.

If you have a little midi synth on your phone(supercollider/sunvox/yoshimi/etc.), you could also convert Orca’s stout data to midi signals with the shim(that’s what I do).


I’ve done the unix pipe thing (long live *nix!).

But when I tried to get shim going under Termux on Android I always got this and didn’t find a way around it:

~/.../uxn-roms/shim $ git pull
Already up to date.
~/.../uxn-roms/shim $ ./build.sh
shim.c:4:10: fatal error: 'portmidi.h' file not found
#include <portmidi.h>
1 error generated.
./build.sh: line 33: ./bin/shim: No such file or directory
~/.../uxn-roms/shim $ apt search portmidi
Sorting... Done
Full Text Search... Done
~/.../uxn-roms/shim $

The thing is, I figure, that the PortMedia library is not available for Android, and PortMidi is part of PortMedia. For the same reason, SuperCollider won’t run on Android as far as I understand.

PS. Oopsie sorry for replying in the norns-thread, this would be better placed in the Orca or Uxn threads.

1 Like

Hi all,

Has somebody experienced ORCA not following the keyboard layout selection introduced in the recent firmware. It seems that the layout is followed “outside” ORCA, e.g. when naming presets, but still defaults to US layout. I had a look at the code and wondered if there is something that has to be added besides the usual connect to hid.

Any pointers?


Yep, orca predates the keyboard module and uses hard coded layout. It could be patched up for sure

One of those nice patches where you end up with lots less code

1 Like

@opty & @zebra welp i did a PR back when i was working on the keyboard layout feature.

i guess @Frederickk hasn’t checked his github notification for a while.


Thanks for the bump, I’ll review!

EDIT: Merged! I’ll roll this together with some bug fixes for the next release.