| project name: | silos |
| project url: | https://github.com/justmat/silos |
| author: | justmat |
| description: | live grains |
| discussion url: | https://llllllll.co/t/43804 |
| documentation url: | https://norns.community/authors/justmat/silos |
| tags: | granulator audio_fx keyboard grid arc |
live granular processing
silos granular engine, thresher, contains 4 tracks; each with 8 seconds of record time. the parameters for controlling the engine are:
nb: speed and pitch work like rate controls. 1 is base pitch/speed, 2 = 1 octave up/twice as fast, 4 = 2 octave up/twice as twice as fast, 0.5 = 1 octave down/half speed
in addition to granulation, thresher also includes an fx bus featuring a lush modulated reverb followed by a bit crusher. the fx parameters are:

launching silos lands you in a fairly minimal state. in the top right corner of your screen are indicators for gate, recording, and your current track number. at the bottom of your screen you'll find the command prompt.
key 3 = record toggle
alt + enc 2 = track/voice select
alt + enc 3 = info display navigation
alt + key 3 = info display toggle
if you'd like to see a bit more information, press alt + key 3 or ESC on your keyboard to toggle the info display. there are pages for engine parameters, fx, control assignments, and snapshots.
use alt + enc 3 or your LEFT/RIGHT arrow keys to navigate.





the arc adds four extra encoders. assign controls with arc id track/fx control_number
arc 1 3 4 = assign track 3 jitter to arc ring 1arc 4 fx 1 = assign fx gain to arc ring 4the grid has two modes of operation. mode 1 is two 8x8 x/y pads, mode 2 is snapshot mode. switch modes with grid_mode n where n = 1 or 2. more grid modes will likely be added in the future.
assign controls to the x/y coordinates using gridx or gridy.
gridx id track/fx control_number
* gridy 2 1 5 = assign track 1 size to the second y coordinate (right side oof grid)
* gridx 1 fx 1 = assign fx gain to the first x coordinate (left side of grid)
in snapshot mode, holding the lower dimly lit cell and pressing one of the top 4 rows will save a snapshot of your parameter settings. row 1 will save snaps for track 1, row 2 for track 2, and so on.
a cell containing a snapshot will glow brightly. pressing a brightly lit cell will recall the associated snapshot.
there are several commands to configure controls, set parameter values, and save/load various sets of data.
controller id track control_numbercontroller id "fx" fx_control_numbercontrollers are:ids are:control_numbers are:fx_control_numbers are:cc midi_device midi_chan cc_number track/fx control_numberenc 3 1 6 = set encoder 3 to track 1 density controlarc 2 fx 6 = set arc ring 2 to fx mod_depthcc 1 14 4 1 8 = assign track 1 density to 1st midi device channel 14 cc 4nb: control lists can be viewed in app by toggling info display
macro encoder_id track/fx control_number multipliermacro 3 1 8 .5 = add track 1 density to macro 3 at half strengthmacro 3 2 5 -1 = add track 2 size to macro 3 at -1 strength (full speed backwards)macro 3 fx 6 1 = add the reverb modulation depth control to macro 3 and full strengthenc enc_id macro stateenc 3 macro 1 = enable macro control on encoder 3enc 3 macro 0macro macro_id clearmacro 3 clear = clear encoder 3 macronb: multiplier can be negative numbers! this allows one param to increase while others decrease or vice versa
control_name track/fx valuesize 2 150 = set track 2 size to 150msrand track/fx control_numberrand 1 8 = set track 1 spread to a random valuerrand track/fx control_number low highrrand 3 5 10 150 = set track 3 size to a random value between 10 and 150gate state1 state2 state3 state4gate 1 1 0 0 = set gates 1 and 2 to on, gates 3 and 4 to offrecord state1 state2 state3 state4record 0 0 0 1 = set records 1, 2, and 3 off, 4 ongate and record have the aliases g and r for convenienceg 1 1 0 1 and r 0 0 1 0 are validsnap id tracksnap 10 2 = save a parameter snapshot for track 2 in slot 10load id trackload 5 3 = recall track 3 parameter snapshot in slot 5id = a number 1-16snap and load have the aliases s and l for conveniences 1 1 and l 1 1 are validsave_state idsave_state test = save your current script state in a file called test.stateload_state idload_state new_song = load new_song.state if it exists.save_pset = this is the same as saving a pset in the parameters menu.load_pset = this is the same as loading a pset in the parameters menu.nb: save/load_state id's can be any string. state includes control assignments, macros, snapshots etc..
from the maiden Repl, type ;install https://github.com/justmat/silos