Orca

Thanks for your reply, this is the output on matron:

?

pset >> write: /home/we/dust/data/buoys/buoys-144.pset
norns.script.load(“code/orca/orca.lua”)

script clear

script load: /home/we/dust/code/orca/orca.lua

including /home/we/dust/code/orca/lib/crow.lua
including /home/we/dust/code/orca/lib/engines.lua
including /home/we/dust/code/orca/lib/engines/_fm7.lua
including /home/we/dust/code/orca/lib/engines/_passersby.lua
including /home/we/dust/code/orca/lib/engines/_polyperc.lua
including /home/we/dust/code/orca/lib/engines/_timber.lua

MISSING INCLUDE: timber/lib/timber_engine

SCRIPT ERROR: load fail

/home/we/dust/code/orca/lib/engines/_timber.lua:1: MISSING INCLUDE: timber/lib/timber_engine
stack traceback:
/home/we/norns/lua/core/norns.lua:145: in function </home/we/norns/lua/core/norns.lua:145>
[C]: in function ‘error’
/home/we/norns/lua/core/startup.lua:48: in function ‘include’
/home/we/dust/code/orca/lib/engines/_timber.lua:1: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/startup.lua:42: in function ‘include’
/home/we/dust/code/orca/lib/engines.lua:6: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/startup.lua:42: in function ‘include’
/home/we/dust/code/orca/orca.lua:47: in main chunk
[C]: in function ‘dofile’
/home/we/norns/lua/core/script.lua:192: in function </home/we/norns/lua/core/script.lua:192>
[C]: in function ‘xpcall’
/home/we/norns/lua/core/norns.lua:146: in field ‘try’
/home/we/norns/lua/core/script.lua:192: in function ‘core/script.load’
(…tail calls…)

script clear

lua: /home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected) stack traceback: [C]: in function 'coroutine.resume' /home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume' lua: /home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected) stack traceback: [C]: in function 'coroutine.resume' /home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume' >>

I’m a noob to Norns, but it looks like the Timber engine is missing? I just downloaded it, how would I add it to Norns if not by Maiden?

After installing Timber, did you restart your Norns/Fates?

1 Like

That did it! Very happy.

1 Like

What is the expected output for comparing bangs?

.J.D2.
.*F*..
..🐒..

:banana: = :banana:?

I’m staring at

but there’s a lot going on on that line.:exploding_head:

PS. I still have no idea how to use / softcut operator, I’m trying to sample a conference livestream via audio in and mess with it in Orca but that’s not how to do it obviously.

if(a == b)
  bang
else
  no-bang

So, if a and b are both *, it will bang

Makes sense, ie. matches reasonable intention.

Seems there’s a bug lurking in the norns implementation. Here’s a more focused and lab-controlled video than the one above, expressing F not banging where the ladybug sits

.....
.D.D.
..F..
..🐞..
.....

According to Lua documentation the precedence is (classic) == > and > or, and Lua cuts and and or short.

If both are *, the second test will be true and "*" which will always be false. A logical contradiction, right?

no, all values in lua are truthy except false and nil.

people often use this expression as a stand-in for a ternary operator: <test> and <yes> or <no>. the pitfall indeed is that it breaks if the value returned by the <yes> expression is falsy, but it’s not here.

> function hm(a, b) return a == b and '*' or '-' end
> hm(1, 1) 
*
> hm(1, 2)
-
1 Like

Ah yeah truthiness, thanks for correcting!

The code runs ok on norns Lua, but *F* is not banging (excuse my language).

Or the bug is between the screen (admittedly in need of a wash) and the chair.

Is anyone else noticing that the scale operator “$” isn’t ever outputting the B note? I am pretty sure I am using it correctly. For example, 1$1C outputs C, and 6$1C outputs A, but when I try 7$1C, it outputs a blank. I’ve tried this with out scales too. Is something up, or am I just not thinking of it right?

(Also, I stepped away from Orca on norns for a while and HOLY COW - thank you so much devs! I am particularly happy to have the crow integration!)

4 Likes

FWIW there’s nothing explicitly in the implementation of $ that prevents B from being output. However, I’ll take a peek and see if there’s anything going on.

2 Likes

Hello hello. I have tried searching through the thread for this but don’t think I found anything concrete. Is there a way yet to modulate the bpm at all? Really desperately needing a way to get some swing/shuffle going. This can’t be that difficult right? If we could have control over bpm it would be easy to just setup quick shifts between say 120-122 bpm, that would surely achieve a shuffle-esque vibe. Anyone?

there is BPM control (and an APM, animate to speed) in the electron version but I don’t think there is in the norns port. there would have to be something worked out with the global norns clock system it seems.

Oh shoot I didn’t realize I was in a Norns thread, I thought I was in general Orca convo. Thank you though!

1 Like

Took a stab at creating an additional engine integration for Orca with the mi-engines MacroB engine. Probably got a bunch of bugs, but it came together pretty easily - here’s a quick and dirty test of changing timbre and model while playing:

Code is here, for the brave: GitHub - eethann/orca-norns: Lua port of @neauoire orca for monome norns

One known issue: you can’t currently access all 48 models, just the first 36. Suggestions on the best way to handle this most welcome…maybe add a “Model+36” param?

@akaye.world: I implemented swing/shuffle in the Electron version of Orca, PR is here. I don’t think that approach will work directly in the lua port, but could be a starting point. If you’re looking for swing in the Electron version, you can try downloading that and running via npm, if you’re comfortable with that…

Update: I’ve added the remaining MI Engines, so the following should be available if MI Engines is installed: MacroB (Braids), MacroP (Plaits), ModalE (Elements), ResonateR (Rings), and TextureC (Clouds). I’ve updated documentation, etc. on my fork and created a PR on the original app repo (is that the right place for it?)

I addressed the issue with the number of Braids models by adding a second model param for all those above 35. I also changed the engines a bit so that the run op only deals with notes and velocities, and the synth_param op - is used for all other parameters…that way everything can be modulated while notes play.

I’d like to update the way the triggers work to allow for held / tied notes, but don’t have that 100% clear on implementation.

I’ve tested MacroB and MacroP a lot more than the others, so any feedback with any most welcome.

6 Likes