The documentation here is primarily meant for future me, though I might release a more polished config/package in the future.
If you do want to get this config working, reach out to me on one of my socials
All commands besides the Top-Level bindings need to be prefixed with <space> before executing.
If a command is listed as f, it really means actually <space> f.
You can press space twice to enclose the entire statement in parenthesies (Unless otherwise specified).
For example <space> f gives you fast (2) $, then <space><space> f gives you (fast (2) $).
This works for all commands besides top-level commands.
"block" = "paragraph"
"" = "Alt + s" " s" = "Alt + s, s"
<c-l>
- sends hovered block to tidal
- works in modes: x n i
<c-m-l>
- sends hush then sends hovered block to tidal
- works in modes: x n i
<m-h>
- sends hush to tidal
- works in modes: x n i
<m-H>
- sends streamHush tidal to tidal
- stops tidal from sending any signals to external programs
- stops pulu-clock
- works in modes: x n i
<m-r>
- resets global cycle counter
<c-k>
- sends hovered line to tidal
- works in modes: x n i
<c-m-k>
- sends hush then sends hovered line to tidal
- works in modes: x n i
<c-j>
- the text highlighted by the next command will be sent to tidal
- works in modes: x n i
<m-)>
- sends all $ id to tidal
- think of the binding more as "Alt+Shift+0"
<space> e<space>
- resets global effects and clears effect string
- (NOTE: please read the system explanation first)
<space> ee
- re-evaluates current effect string
- (NOTE: please read the system explanation first)
Only for use with tidal-looper
<m-r>
- Brings up the prompt "RecordingEval" for recording
- Ex: if you hit <m-r>, input 7 (so the prompt reads :RecordingEval'r',7), then hit enter, the command rec 7 "rec" 0 will be sent to tidal
- superdirt will record 7 cycles worth of mic-input and save it in a sample titled "rec" at sample-index 0
<m-m>
- Brings up prompt "RecordingEval" for recording from a monitor of the system audio
- (NOTE: requires the system audio monitor to be enabled and connected to inputs 2 and 3 of supercollider's audio-in)
<m-p>
- Brings up prompt "RecordingEval" for recording from a monitor of pulse audio
- (NOTE: requires a pulseaudio monitor to be enabled and connected to inputs 4 and 5 of supercollider's audio-in)
<c-d>
- Toggles NERDTree
<c-u>
- u
- can hold down ctrl while undoing in any mode
<c-r>
- <esc><c-r>i
- can hold down ctrl while redoing in insert mode
<m-d>
- Jump forward to next instance of do and evaluates block
<m-D>
- Jump backward to next instance of do and evaluates block
L
- Jump to next seperator
- jumps forwards to $ # & and |+
H
- Jump to previous seperator
- jumps backwards to $ # & and |+
<m-1>
- Jump forward to next instance of d1 and evaluates block
<m-2>
- Jump forward to next instance of d2 and evaluates block
<m-3>
- Jump forward to next instance of d2 and evaluates block
.. (etc)
NOTE: <m-!> is the same as <m-S-1> (alt + shift + 1)
<m-!>
- Jump backward to next instance of d1 and evaluates block
<m-@>
- Jump backward to next instance of d2 and evaluates block
<m-#>
- Jump backward to next instance of d2 and evaluates block
.. (etc)
<space-1>
- Jumps to the mark stored at 1 (if it exists) and sends the block to tidal
- NOTE: will jump across files
<space-2>
- Jumps to the mark stored at 2 (if it exists) and sends the block to tidal
...
<space-9>
- Jumps to the mark stored at 9 (if it exists) and sends the block to tidal
_
- in normal mode, inputs 0
_
- in normal mode, inputs 1
<backspace>
- in normal mode, inputs ~
<m-backspace>
- in normal mode, inputs (3,8,0)
o
- Inserts newline and space below
- space inserted so it doesn't jump back when returning to normal mode
O
- Inserts newline and space above
- space inserted so it doesn't jump back when returning to normal mode
<space> R
- Brings up the prompt "InsRange" for inserting ranges of numbers
- Ex: if you hit <space> R, input 7 (so the prompt reads :InsRange7), then hit enter, the numbers 0 through 8 will be typed from your cursor, with brackets around each number
- [0] [1] [2] [3] [4] [5] [6] [7]
<space><space> R
- Same as previous command, but the values are all wrapped in double quotes
- "[0] [1] [2] [3] [4] [5] [6] [7]"
<c-w><c-e>
- Saves and closes all open buffers, then exits vim
Global effects are stored in one long string of variables representing tidal functions and/or effects. Every character, upper and lowercase, has an associated variable of the form eff_?, where ? is a letter-character. The set of effect variables are defined in a tidal boot script. They must evaluate to an expression that can prefix a pattern, for example (fast 2), (# lpf ((1/8)*2000)), (& speed (7/8)), etc...
(NOTE: not all possible effects are currently defined)
Effect strings end up looking like all $ eff_L . eff_i . id where eff_L might be (linger (1/8)) and eff_i might be (iter 4).
The bindings to add effects all take the form: <space> e_ where _ is any letter on the keyboard. This appends the effect to the end of the string and re-evaluates it.
If the string was originally all $ eff_L . eff_i . id, and I typed <space> ef, the new string would be all $ eff_L . eff_i . eff_f . id.
Since the effcts need to be defined in a bootfile, I can't enumerate what keys correspond to what functions here.
a - slice (4*8) (fast (4) $ "0 1 2 3 4 5 6 7"+"<0 8 16 24>") $
f - fast (1) $
s - slow (1) $
D - discretize (8) $
T - trigger (1) $
l - linger (8/8)
p - ply (1) $
c - chop (1) $
i - iter (1) $
d - degradeBy (4/8) $
b - shiftBy (1/8) $
S - & speed (8/8)
G - & gain (8/8)
P - # pan (8/8)
A - # accelerate (8/8)
C - # cut (0)
O - # orbit (0)
U - # up (0)
Ea - # att (8/8)
Eh - # hold (8/8)
Er - # rel (8/8)
Es - # sus (8/8)
fl - # lpf ((8/8)*2000)
flr - # lresonance (8/8)
flq - # lpq (8/8)
fh - # hpf ((8/8)*2000)
fhr - # hresonance (8/8)
fhq - # hpq (8/8)
fb - # bpf ((8/8)*2000)
fbq - # bpfq (8/8)
fd - # djf ((8/8)*2000)
fv - # vowel "a"
rd - # delay (8/8)
rdt - # delayt (8/8)
rdf - # delayfb (8/8)
r - # room (8/8)
rs - # size (8/8)
rd - # size (8/8)
ds - # shape (8/8)
dd - # distort (8/8)
dc - # crush (8/8)
do - # coarse (8/8)
dk - # krush (8/8)
dw - # waveloss (8/8)
dt - # triode (8/8)
db - # binshift (8/8)
le - # leslie (8/8)
lr - # lrate (8/8)
ls - # lsize (8/8)
lt - # tremolo (8/8)
All of the form: <space> o_
where _ is one of
s - sine _
q - square
c - cosine
t - tri
w - saw
a - rand
i - irand 8
e - envL
Alternatively, any binding can be prefixed with r
(in the form of <space> or_)
to prefix the object with range
range (1/8) (1) $ sine
-- TODO: all the functions are pretty simple, -- But I still need to make docs for them
BindTidalEffect(effect,binding,prefix,...)