krill
project name: krill
project url: https://github.com/jaseknighter/krill
author: jaseknighter
description: a Lorenz system sequencer and mod matrix with a physical modelling synthesis engine
discussion url: https://llllllll.co/t/54975

krill

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

requirements

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

  2. 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 @21echoes’ Pedalboard.

  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 Matt Allison and SPIKE the Percussionist. 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 credits go out 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

views

the krill script has two basic views:

use k1+e1 to navigate between views.

sequencer

the sequencer view is divided into three UI sections (from left to right):

  1. controls
  2. Lorenz system visualization
  3. Lorenz x/y and lfos

encoder and key controls

e1/e2/e3 are used to navigate the controls section.

all of the UI controls found in the sequencer view are also found in the main norns params menu (PARAMETERS>EDIT).

when changing numerical values, k2+e3 can be used to change values faster by a factor of 10.

notes on the grid overlay

to make the grid overlay and UI controls section always visible after the script has been loaded, there is a PARAMETER called grid display in the main norns params menu (PARAMETERS>EDIT) that can be set to always show.

alternatively, to make grid overlay and UI controls section always visible every time the script is loaded, open the /lib/globals.lua file and change the value of the UI_DISPLAY_DEFAULT variable to 3.

sequencer menus

five menus are available from the sequencer view:

use e1 to switch between sequencer menus.

seq (sequencer controls)

the notes generated by the krill script are based on the underlying Lorenz system algorithm. notes are selected by visualizing the algorithm and overlaying a grid on top of the visualization.

the grid is subdivided by note/octave to determine pitch, which is sent to the internal krill SuperCollider engine and/or the other supported outputs (midi, crow, Just Friends, and W/).

there are two sequencer modes: krell and vuja de

by default, when the script first loads, the vuja de sequencer is running.

scr (Lorenz system visualization controls)

the scr (screen) sub-menu’s params control how the Lorenz system is displayed, which effects sequence generation:

lrz (Lorenz system algorithm controls)

the lrz (Lorenz system algorithm) sub-menu’s params set a number of the Lorenz system’s parameters, effecting how it behaves and gets displayed, which subsequently effects sequence generation.

the lz speed param changes how fast the algorithm changes. the other params will effect the algorthm in other ways that i don’t really understand well enough to describe, but they are worth exploring and are generally “safe” to use (unlike some of the other params mentioned below).

lfo (lfo controls)

the lfo sub-menu’s params control two lfos:

eng (MI Rings SuperCollider engine controls)

the eng sub-menu’s params control the settings for the MI Rings SuperCollider engine:

mod matrix

the mod matrix allows any parameter to be used to modulate any other parameter.

the mod matrix UI is divided into four sections:

a. menu name
b. control parameters
c. input output labels and values
d. patchpoints

encoder and key controls

use k1+e1 to switch to the mod matrix view.

when changing numerical values, k2+e3 can be used to change values faster by a factor of 10.

data management

mod matrix settings are saved at the end of each krill session. multiple mod matrix configurations can also be saved. see the DATA MANAGEMENT section below for additional details.

mod matrix menus

the mod matrix has 5 menus:

use e1 to switch between mod matrix menus.

row/col (patchpoint navigator)

e2/e3 navigates the patchpoint matrix. on all mod matrix screens, k1+e2 and k1+e3 are used to navigate the patchpoint matrix.

the patchpoint circles indicate the state of each patchpoint:

in/out (input/output selection)

e2/e3 selects the inputs/outputs for the selected row/column of the matrix.

k1+e2 and k+e3 display parameter folders names for fast navigation between the various sections found in the main norns params menu (PARAMETERS>EDIT).

matrix rows (a-d) represent inputs. matrix columns (1-7) represent outputs.

changing a patchpoint’s input or output will disable all the patchpoints in the selected row/column.

a value with carrots at the front and end (e.g. “«Lorenz view»”) indicates a param sub-menu.

a value with dashes at the front and end (e.g. “–LORENZ–”) indicates a param separator.

the input and output for the row/column of the selected patchpoint can be cleared by pressing k2 + k3.

pp opt (patchpoint options)

the patchpoint options menu updates three controls for the selected patchpoint:

e2 selects the patchpoint option controls. e3 updates them.

crow (crow output settings)

there are three crow controls for the selected patchpoint:

e2 selects the crow output controls. e3 updates them.

midi (midi output settings)

there are three midi controls for the selected patchpoint:

note: to send mod matrix outputs to midi, a midi out device needs to be set in the midi sub-menu of the main norns parameters menu (PARAMETERS>EDIT).

e2 selects the midi output controls. e3 updates them.

misc parameters

read only params

a number of parameters have are listed beneath a “read only” separatator. these are intended to be used as inputs by the mod matrix.

inputs/outputs

settings for midi, crow, jf, and w/ are avaiable in the params menu.

DATA MANAGEMENT

the krill data sub-menu at the end of the PARAMETERS menu has all the options for saving, loading, deleting mod matrix settings. saving/loading mod matrix settings also saves/loads the script’s parameters.

there is a variable in the globals.lua file called AUTOSAVE_DEFAULT. setting this variable to 2 means autosave is on by default. setting it to 1 means autosave is off by default.

feature roadmap