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 |
a Lorenz system sequencer and mod matrix running @okyeron’s UGen linux port of Mutable Instruments Rings for monome norns.
the install process requires three steps to properly install:
open maiden and below the “matron” tab, enter:
;install https://github.com/jaseknighter/krill
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.
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.
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.
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:
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.
the krill script has two basic views:
use k1+e1 to navigate between views.
the sequencer view is divided into three UI sections (from left to right):
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
.
five menus are available from the sequencer view:
use e1 to switch between sequencer menus.
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.
krell sequencer
the krell sequencer is modelled after Todd Barton’s Krell script. the vuja de sequencer is modelled after MI Marbles eurorack module. new notes are generated in the krell mode based on the rise and fall of an envelope built into the krell script’s SuperCollider engine.
when the krell sequencer is active, seven parameters are accessible from the main UI’s seq menu:
vuja de sequencer
the vuja de sequencer is structured as a set of patterns (up to six) built using the norns lattice and sequins modules.
when the vuja de sequencer is active the seven parameters listed above are accessible from the main UI’s seq menu.
in addition to the seven parameters listed above, there are three additional controls on the main UI’s seq menu specific to the vuja de sequencer:
vjd div[1-6] (vuja de pattern divisions): sets a default division of the 1-6 enabled patterns. by default each pattern has the same set of default divisions: 1,1/2,1/4,1/8,1/16,1/32,1/64
note: the default divisions (vjd div[1-6]) can be modified for each of the 6 available patterns by editing a variable found in /lib/globals.lua
called VJD_PAT_DEFAULT_DIVS
. custom divisions may also be set while the script is running (see division patterns in the sequencer param listing below)
other sequencer params
additional sequencer params may be found in the main norns PARAMETERS>EDIT menu:
SCALES+NOTES section: param settings related to scale, quantization, and number of octaves. this section of the params menu also displays the active note of the sequencer
VUJA DE section: vjd num divs *: sets the number of active patterns (1-6)
**div pat assignments* sub-menu*: the outputs available to the script (krill SuperCollider engine, midi, crow, W/, and Just Friends) may be assigned to up to two of the vuja de division patterns.
** *division pattern[1-6] sub-menu ***
** *rthm patterns[1-6] sub-menu *** each pattern contains three rhythms that are defined as 8-step cellular automata patterns
the scr (screen) sub-menu’s params control how the Lorenz system is displayed, which effects sequence generation:
x/y input** the Lorenz system algorithm outputs three values: first, second and third. the x input and y input params are used to assign two of the three Lorenz system output values to x/y coordinates and visualize the algorithm. changing the x input and y input assignments will change the shape of the visualization.
as mentioned above, a grid is placed on top of the Lorenz system visualization which is subdivided by note and octave to set the pitch each time the sequencer plays a note.
x/y offset the x offset and y offset params move the Lorenz system visualization horizontally and vertically relative to the note/octave grid. this changes the pitches generated by the krill and vija de sequencers. setting these parameters to lower values will tend to lower the pitch of the notes and setting them to higher values will tend to increase the pitch of the notes.
x/y scale x scale and y scale changes the width and height of the Lorenz system visualization.
an increase to the x scale will tend to generate pitches across more notes and a decrease will tend to generate pitches of across fewer notes.
an increase to the y scale will tend to generate pitches across more octaves and a decrease will tend to generate pitches of across fewer octaves.
the scr params described above are found in the main norns PARAMETERS>EDIT menu under the LORENZ menu separator in the Lorenz view sub-menu.
Lorenz x/y output controls for sending Lorenz x/y values to crow and midi are found in the main norns PARAMETERS>EDIT menu under the MODULATION menu separator in the Lorenz x/y outputs sub-menu.
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).
additional lrz (Lorenz algorithm) params the lrz params described above are found in the main norns PARAMETERS>EDIT menu under the LORENZ menu separator in the Lorenz params sub-menu.
there are additional params related to the Lorenz system algorithm in the Lorenz params and Lorenz weights sub-menus. these additional paramschange a variety of settings for the Lorenz system algorithm.
USE CAUTION when changing the params in these two sub-menus as unexpected results may occur that sometimes cause the Lorenz system algorithm visualization to disappear and when this happens the sequencer tends to stop playing, requiring a restart of the script.
the lfo sub-menu’s params control two lfos:
freq: sets the speed of the lfo
additional lfo params the lfo params described above are found in the main norns PARAMETERS>EDIT menu under the MODULATION menu separator along with parameters to set how lfo values are sent to crow and midi.
the crow parameters in this sub-menu set slew and params to scale the lfos output values to a min and max voltage.
the midi parameters in this sub-menu set the cc and channel values to be used with the lfo as well as turn the midi version of the lfo on and off.
finally, the read-only lfo value param displays the current value of the lfo.
the eng sub-menu’s params control the settings for the MI Rings SuperCollider engine:
the eng params described above are also found in the main norns PARAMETERS>EDIT menu in the rings sub-menu.
the above parameter descriptions are copied with gratitude from @geplanteobsoleszenz SuperCollider help documentation.
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
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.
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.
the mod matrix has 5 menus:
use e1 to switch between mod matrix menus.
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:
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.
the patchpoint options menu updates three controls for the selected patchpoint:
e2 selects the patchpoint option controls. e3 updates them.
there are three crow controls for the selected patchpoint:
e2 selects the crow output controls. e3 updates them.
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.
a number of parameters have are listed beneath a “read only” separatator. these are intended to be used as inputs by the mod matrix.
settings for midi, crow, jf, and w/ are avaiable in the params menu.
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.