Flora v1.3.7 (midi note quantization bug fix)
an L-systems sequencer and bandpass-filtered sawtooth engine
UI and Controls
Plant
e1: next page
k1+e1: select active plant
k1+e2: replace active plant
e3: increase/decrease angle
k2/k3: previous/next generation
k1+k3: reset plants to their original forms and restart their sequences
Modify
e1: next/previous page
k1+e1: select active plant
e2: select control
e3: select letter (‘suc’ and ‘axiom’ screens only)
e1 + e3: change control/letter value
Observe
e1: next/previous page
k1+e1: select active plant
e2: move up/down
e3: move left/right
k2/k3: zoom out/in
k1+k3: reset plants to their original forms and restart their sequences
Plow
e1: next/previous page
k1+e1: select active plant
e2: select control
e3: change control value
k2/k3: remove/add a control point
Plow modulation
(available with the v0.2.0-beta release)
k1+k3: show/hide plow modulation menu
k1+e1: select active plant
k2: select control
k3: change control value
Water
e1: previous page
e2: select control
e3: change control value
NEW: crow
As of v1.1.1, crow input 2 may be used to set the note scalar
parameter for greater pitch variation. crow input 2 is enabled from the process crow
in1 parameter in the crow sub-menu. the note scalar
parameter is found on the water page as well as in the water parameters sub-menu.
As of the v0.4.0-beta, crow outputs 2 and 4 may be set individually to send envelopes, triggers, or gates. The trigger length is 5ms by default, but may be updated using the crow_trigger_2
and crow_trigger_2
variables set in /lib/globals.lua. When setting gates, the length of the gate is set by the value of env length on the plow (env) screen.
In addition, this release gives each plant its own default envelope shape, set by the constant variables DEFAULT_GRAPH_NODES_P1 and DEFAULT_GRAPH_NODES_P2 (defined in flora/lib/globals.lua).
W/ Integration
As of v0.4.0, Flora provides I2C integration via crow with Whimsical Raps’ W/2 eurorack module. All three modes, W/Tape, W/Syn, and W/Del, are supported.
Flora’s integration with W/2 is accessed via the PARAMETERS>EDIT menu. Prior to utilizing the parameters for a particular W/2 mode, W/2 must first be put into that mode. See the W/2 documentation on the lines forum for mode switching instructions.
W/Syn sequencing
W/Syn can be sequenced with Flora by setting the wsyn parameter in the parameters>edit>w/syn submenu. When setting the wsyn parameter to plants
or plants + midi
, each of Flora’s plant sequences is sent to a separate W/Syn voice.
Karplus-Strong sequencing
W/Del supports Karplus-Strong style string synthesis, which can be sequenced with Flora by setting the Karplus-Strong parameter in the parameters>edit>w/del submenu.
Integration with other norns scripts
Flora’s code to integrate with W/2 may be relatively easily dropped into other norns scripts. See the documentation on GitHub for details.
Community gardening
As of Flora v0.4.0, a community gardening feature has been added, which leverages norns.online to allow custom plant shapes (i.e. sequences) to be shared with other Flora users through the norns’ UI.
To take advantage of the community gardening feature, install Flora v0.4.0 or later as well as the norns.online script.
Once Flora v0.4.0 (or later) and norns.online have been installed, the community gardening features may be accessed from the Gardening section at the bottom of the PARAMATERS>EDIT menu as follows:
Steps to share a plant shape with the community
-
Save plant to nursery: locally saves the active plant shape to the norns’ filesystem (in
data/flora/nursery/
) -
Select the Community gardening submenu
-
Select refresh directory
-
Select upload from nursery and choose a plant
-
Choose the plant you saved to your nursery in step 1 above
Steps to get a plant shape from the community garden
-
Select the Community gardening submenu
-
Select refresh directory
-
Select download to nursery and choose a plant
-
Exit the Community gardening submenu
-
Select Add plant to garden and choose the plant you downloaded from the community gardens
Note, selecting a plant to be added to your local ‘garden’ will append it to the of the list of selectable plants found on the plant screen. On this screen, use K1+E2 to select the plant. By default there are 11 plants, so the first plant added to the garden will be shown as plant i12, the second plant will be shown as plant i13, and so on.
Additional gardening features
-
Remove plant from nursery: locally removes a selected plant shape previously saved to the norns’ filesystem. Note, this cannot be undone as the plant definition is removed from the local filesystem.
-
Remove plant from garden: removes a plant from the garden. Note, removing a plant from the garden does not remove it from the nursery (that is, the plant definition remains on the local filesystem).
Flutter and wow
As of the v0.3.0-beta, flutter and wow may be set for the Bandsaw SuperCollider engine from the PARAMETERS->EDIT menu.
PSET sequencing
As of version v0.2.0-beta, a PSET sequencer has been built into Flora. Controls for the PSET sequencer are accessed from the PARAMETERS->EDIT menu.
See the documentation on GitHub for details.
Plant generation sequencing
As of version v1.3.2, a plant generation sequencer has been built into Flora. Controls work the same as for the PSET sequencer annd are accessed from the PARAMETERS->EDIT menu.
Midi
Midi in and out parameters are set from the PARAMETERS->EDIT->MIDI menu. As of the v0.3.0-beta, midi-in notes may be sent to norns to sequence the Bandsaw SuperCollider engine. If plants + midi
is selected as one of the outputs, midi-in notes will play alongside the Flora sequencer.
As of v1.3.5, midi stop/start messages may be used to stop and start the plant sequences.
As of v1.3.6 notes sent to the script via midi are now quantized. this featuret is turned on by default. to turn it off, there is a new parameter found in the ‘midi’ submenu under ‘inputs/outputs’ called ‘quantize midi.’
Preliminary Roadmap
-
(Done) Fix crow clock out.
-
(Done) Save modified l-system algorithms.
-
(Done) Community gardening: investigate using norns.online to share plant forms.
-
(Done) Improve outputs selection in params menu.
-
(Done) Fix intermittent plant freezing bug.
-
Support sending sysex messages to other midi controllers in addition to the 16n faderbank (currently supported)
-
Improve the quality and portability of the code.
-
Improve the documentation.
-
Utilize crow inputs.
-
(Done) Add option for crow outputs to send triggers and gates in addition to envelopes.
-
(Done) Add support for w/syn, w/tape, and w/del.
-
Create a detailed video walkthrough for the script.
-
Add microtonal scales.
-
Increase and decrease the brightness of the circles that appear when each note plays according to the level of the note’s graph/envelope.
-
Investigate infrequent error message when upgrading:
update failed: worktree contains unstaged changes
Suggestions for improvement are welcome.
Requirements
norns (required)
norns.online (for community gardening)
Midi, Just Friends, crow, W/2 (optional)
Computer (optional for generating custom L-system algorithms)
Documentation
Press K1+K2 on each screen for basic key/encoder commands.
Complete documentation on GitHub (jaseknighter/flora)
Acknowledgements
-
Flora’s L-system code is based on the code in Chapter 8.6 of Daniel Shiffman’s The Nature of Code.
-
Many of the specific L-system algorithms are based on code from Paul Bourke’s L-System User Notes.
-
Bandsaw, a bandpass-filtered sawtooth engine is based on SuperCollider code for a marimba presented by Eli Fieldsteel in his SuperCollider Tutorial #15: Composing a Piece, Part I.
-
Flutter and Wow SuperCollider code: instant nostalgia with wow and flutter
-
Penrose tiling code by Leo Corte: L-Systems and Penrose P3 in Inkscape | the Brick In the Sky
-
@infinitedigits and @vicimity for their kindness and assistance setting up and testing norns.online.
-
The code for this project was also deeply inspired by the following members of the lines community: Brian Crabtree (@tehn), Dan Derks (@dan_derks), Mark Wheeler (@markeats), Tom Armitage (@infovore), and Tyler Etters (@tyleretters).