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,...)