| project name: | nisp |
| project url: | https://github.com/itsyourbedtime/NISP |
| author: | its_your_bedtime |
| description: | scheme dialect livecoding tracker for norns |
| discussion url: | https://llllllll.co/t/nisp/27596 |
| tags: | sequencer tracker |
Scheme dialect livecoding tracker for norns
Work in progress. Everything is subject to change
~|open / close repl
shift + ctrl|start / stop playback
capslock|toggle follow mode
shift + 1 - 4|mute track
enter|open text editor (third column of track must be selected)
esc|close text editor
shift + enter|save expression in cell (while in text edit mode)
ctrl + c / v|copy / paste
shift + esc|open / close norns menu
ctrl + left / right|switch menu tabs
shift + up / down|fast nav between samples in params menu
| function | arguments | description |
|---|---|---|
(def) |
symbol, value |
define a symbol |
(lambda) |
args, function |
anonymous function |
(quote) ' |
expr |
returns unevaluated expression |
(if) |
cond, expr 1, expr 2 |
evaluate expr 1 if cond is true, else evaluates expr 2 |
(when) |
cond, expr |
evaluate expr if cond is true |
(@) |
track optional |
returns current position |
(bpm) |
value |
set global bpm |
(length) |
value |
set pattern length |
(div) |
value |
set track speed divider |
(jmp) |
pos |
jump to position |
(skip) |
pos |
skip current step |
(ever) |
N, expr |
evaluate expression every N cycle |
(mute) |
track optional |
mute track |
(sync) |
track optional |
sync positions to track, or to global pos |
(save) |
id |
save pattern |
(load) |
id |
load pattern |
(note) |
value |
write note at current position |
(sample) |
value |
write sample at current position |
(pos) |
value |
set position of current sample |
(param) |
value |
set current sample param |
(help) |
- | display help |
(+) (-) (*) (/) (%) (^) (=) (eq) (>) (<) (<=) (>=) (rnd)
(list) (list?) (append) (apply) (begin) (car) (cdr) (cons)
(len) (get) (put) (nil?) (num?) (print) (concat) (map) (#t) (#f)
Functions can be executed either live in repl or from pattern cells.
```common-lisp
(def A 1) - sets symbol A to 1
(print "Hello") - double quotes for strings
(def A (lambda () (print "Hello"))) - defines a function (A) with no arguments
(def A (lambda (a b c) (+ a b c))) - defines a function (A) which takes 3 arguments and returns their sum.
(get '(1 2 3 4) 1) - returns first element from list
(bpm 120) - set bpm to 120
(jmp) - set current track position to the very beginning
(pos (rnd 1 99)) - set random start position for current sample
(atk 0.25) - set current sample attack to 0.25
```
copy-pasted expression cells are linked, so editing one would affect all others.