krill

krill

a Lorenz system sequencer and mod matrix running @okyeron’s UGen linux port of Mutable Instruments Rings for monome norns.

requirements

  • norns (required)
  • crow, W/, Just Friends, and midi (optional)
  • audio input to excite the MIRings engine (optional)

installation

the install process requires three steps to properly install:

  1. open maiden and below the “matron” tab, enter:
;install https://github.com/jaseknighter/krill
  1. in the same “matron” tab install the MIRings UGen with this command:
os.execute("wget -T 180 -q -P /tmp/ https://github.com/okyeron/mi-UGens/raw/master/linux-norns-binaries/mi-UGens-linux-v.03.tar && tar -xvf /tmp/mi-UGens-linux-v.03.tar -C /tmp && cp -r /tmp/mi-UGens-linux-v.03/* /home/we/.local/share/SuperCollider/Extensions/ && rm -r /tmp/mi-UGens-linux-v.03 && rm -r /tmp/mi-UGens-linux-v.03.tar")

note: you may skip step 2 above if you previously installed the MIRings UGen with either @okyeron’s MI-UGens for Norns or the resonator pedal that is part of @21echoesPedalboard.

  1. restart your norns.

about the script

the idea for the script and its name came from @mattallison and is inspired by Todd Barton’s Krell patch.
this script’s use of a chaotic Lorenz system algorithm differentiates it from the classic Krell patch. in theory at least, using chaos instead of randomness produces patterns that reside in a space between the random and the predictable.

krill studies for beginner scripters

i have created a study to accomany the krill script. the study includes notes and simple code that can be run in maiden’s matron REPL. it relates to a problem (one of many) i had to solve while putting this script together. i hope it is informative and useful for folks interested in learning more about coding on the norns platform.

credits

bunches and bunchs of credit are due to @mattallison and @SPIKE. i am deeply grateful to the two of them for working with me over many hours and days testing and discussing the script.

additional thanks and credit go to:

caution!!!

the mod matrix built into the krill script allows any parameter to modulate any other parameter. unexpected results may result (e.g. when modulating the compressor’s gain settings), so please proceed with care and caution when using this feature.

documentation

video walk-through

basic instructions

K1+E1 toggles between the sequencer and mod matrix

sequencer

E1 select menu
E2 select param
E3 change param value
K2+E3 coarse change to param value

mod matrix (all menus)
E1 select menu
K2+K3 clear patchpoint

mod matrix: row/col
E2 select row
E3 select col

mod matrix: in/out
E2/E3 select input/output
K2+E2 fast input navigation
K2+E3 fast output navigation

mod matrix: other menus
E2 select param
E3 +/- param value
K2+E3 coarse change to param value

complete documentation

complete documentation is on GitHub.

feature roadmap

  • fix issues with functionality, documentation, and usability
  • set vuja de loop length and probability separately for each pattern
  • publish the mod matrix as a mod that other scripts can use
  • bugs to fix:
    • mod matrix midi scaling issue reported by @SPIKE
    • show some values (like nil) when input value is static/has a value of 0 (e.g. Freq (v/8) ). right now, in this situation, in val and out val don’t show anything.
    • update docs with recommendations for good input params, like:
      dynamic, for example:
      • from the params lfo 1 and lfo 2 sub-menus: 1 lfo value and 2 lfo value
      • from the lorenz x/y outputs params sub-menu: lorenz x and lorenz y*
      • other features requested by the community
72 Likes

@jaseknighter happy release day!

It has been a true honour to work alongside you and @SPIKE in developing and beta testing this script.

From concept to deliverables you have exceeded any expectation I may have had and we’ve seen many a first that I hope others will build upon.

The script is so varied and vast and love your example above with the Lyra-8, below is a musing of my own using the internal engine with some delay and grains from a few Eurorack pieces.

I look forward to hearing all the wonderful music others will compose with it.

13 Likes

@mattallison, thank you once again and again for all your help and encouragement!

your video is sososo lovely as well! :hearts: :pray: :hearts:

7 Likes

DITTO @mattallison!
thank you to you and the code wizard @jaseknighter for bringing me in!
so cool to be involved with the manifestation of a norns script! :stuck_out_tongue:

looking forward to see/hear what everyone does with Krill and it’s matrix patchbay! :smiling_imp:

it’s such an inspiring script that it’s been woven into many a Late Night Noiz for Late Night Fiends session even with it in a work in progress state,

so…without flooding the topic here with a horde of video performances…i’ll just post last night’s. :stuck_out_tongue:

Krill running alongside an updated version of DUNES that has some requested features and tweaks added by @sonoCircuit!

other noiz support from Gotharman’s LD3, Deluge, MBase11, Access Virus B

9 Likes

@SPIKE thanks one again for all your tremendous kindness and generosity and of course your noiz. :hearts:

5 Likes

Have just spent a few minutes noodling with it but so far it has created some lovely sounds :grin:. Excited to take a deeper dive into this!

I have one question so far, coming from the perspective of using Rings in the Eurorack context, what signal from the Lorenz is actually triggering the “strum” of Rings?

1 Like

@geometric.soul, I am so glad you are enjoying your noodle(ing)s.

the first thing that dictates how strumming/excitation occurs is the state of the trig type parameter. if it is set to external, the strumming happens based on audio sent to the norns from its input jacks (this is how its working in the video i posted above).

with trig type set to internal, strumming depends on whether the seq mode parameter is set to krill or vuja de. if set to krill, strums are triggered based on when an attack decay envelope built into the SuperCollider engine completes its cycle. in krill mode, the envelope’s cycle is partly set by the values of three params: rise (ms), fall (ms), and env scalar. the value of this last parameter scales the values of the other two equally.

the last thing that determines when strumming happens in krill mode is a S&H that takes values calculated based on the “location” of the Lorenz shape in x/y space when rise and fall completed in the last cycle of the envelope.

if seq mode is set to vuja de, triggers are set according the the parameters you’ll find under the vuja de section of the params menu. how these parameters work is a bit complicated and you’ll find my attempt to explain them in the GitHub doc (search for vuja de sequencer).

apologies for the long winded explanation, but i hope this helps makes things a bit more clear (and not less). i’m working on a video walkthrough that will hopefully demonstrate a bit of how this all works. also, i expect to have an online workshop scheduled in the next few weeks for folks to get questions answered in real time.

7 Likes

Oh my. Sounds (and looks!) beautiful. I will be all over this for sure!!

1 Like

Amazing! Thank you so much! :slight_smile:

1 Like

What’s the best way to update the script? Just re-run the first ;install command in maiden REPL?

1 Like

yes, but i’d first remove the existing krill folder. i’m not sure if this step to remove the folder is absolutely required but it can’t hurt.

1 Like

Thank you! Will do it later today.

1 Like

I just installed this and had a quick try before running off to work, but it sounds fantastic! Thank you very much!

One quick question - the level of the internal sound engine was pretty low, even though I tried raising the master output and the “engine” outputs. Is this because I didn’t have any audio input connected to excite the Rings engine? If so, is there a way to have the internal sounds running without external audio input?

Thanks again for a wonderful script - can’t wait to dig deeper on this one.

1 Like

thank you for your kind words @bharris22!

what you are hearing would be due to no audio connected only if you have the trig type param set to external. otherwise, try playing with the eng params (use e1 to get there or go to the rings sub-menu in the main norns params).

i hope you have a lovely day at work.

3 Likes

Will do - thank you very much!!

1 Like

Awesome krelly vibes! :metal:

1 Like

@jaseknighter thanks so much for the explanation! Definitely clears things up. Looking forward to the video walkthrough!

1 Like

Wow!! So excited to try this later today. Amazing work.

1 Like

it could use some more edititing but i’ve posted a link to a video walk-through in the documentation section of the posting above.

also, thank you @blueroses, @swhic, @Ukasz and @Medenine!

7 Likes

a very tiny update has just been published, adding a new env actv (envelope active) param that allows the AD envelope to be disabled.

@bharris22, this update may help address the issue you encountered with the internal sound engine being low. you’ll need to set the param to off to hear the change.

2 Likes