playr-app 0.19.0

What playr's Rust frontends share: actions, : commands, key bindings, settings and dispatch
# playr's default theme and key bindings, which both frontends read from
# settings.toml.
#
# The rest of the defaults are in crates/playr-core/src/settings.toml. The
# format is described in README.md, under Configuration.

# system, light or dark.
theme = "dark"

# How the mixer's faders map to levels: db, even in decibels over 60 dB, or
# cubic, the position cubed, as PulseAudio's volume. :mix law switches it for
# the session.
fader = "db"

# How the DJ decks' and the tape's read heads find a sample between stored
# ones: sinc, a 32-tap windowed sinc that filters what a fast read would fold
# back; or hermite, a 4-point cubic, cheaper and brighter, with images and
# folding above about 5 kHz. :interp switches it for the session.
interp = "sinc"

# Keys for every view. Each value is a : command; "nop" makes a key do nothing.
[keys]
q = "quit"
"?" = "keys"
":" = "command"
tab = "view next"
backtab = "view prev"
1 = "view library"
2 = "view queue"
3 = "view selection"
4 = "view playlists"
5 = "view sampler"
9 = "view loops"
# The window's views; the terminal has none of these three.
6 = "view tape"
7 = "view dj"
8 = "view mix"
j = "down"
down = "down"
shift-down = "down"
k = "up"
up = "up"
shift-up = "up"
pagedown = "down 10"
pageup = "up 10"
g = "first"
home = "first"
G = "last"
end = "last"
enter = "play"
"/" = "search"
s = "save"
space = "pause"
n = "next"
p = "prev"
x = "stop"
R = "restart"
right = "seek +5"
left = "seek -5"
shift-right = "seek +30"
shift-left = "seek -30"
"+" = "volume +5"
"=" = "volume +5"
"-" = "volume -5"
_ = "volume -5"
")" = "speed +1"
"(" = "speed -1"
'\' = "speed 0"
# The player's EQ flat, and back.
t = "eq bypass"
# The row's waveform in the sampler, without playing it; there, the playing
# track's again.
v = "preview"
m = "mode +"
M = "mode -"
b = "mark"
B = "mark-undo"
C = "mark-clear"
# In the sampler view these also select the mark and play it to the next.
"}" = "mark-next"
"{" = "mark-prev"
# The sampler takes these for slices.
"." = "mark-next"
"," = "mark-prev"

# Keys for one view, which win there over the keys above.
[keys.library]
a = "toggle"
A = "enqueue all"
e = "enqueue"
E = "enqueue next"
esc = "search-clear"

[keys.selection]
d = "remove"
backspace = "remove"
delete = "remove"
A = "enqueue all"
e = "enqueue"
E = "enqueue next"
J = "move +1"
K = "move -1"
shift-down = "move +1"
shift-up = "move -1"
c = "clear"

[keys.queue]
a = "add"
d = "remove"
backspace = "remove"
delete = "remove"
c = "clear"
J = "move +1"
K = "move -1"
shift-down = "move +1"
shift-up = "move -1"

[keys.playlists]
a = "add"
o = "edit"
e = "enqueue"
E = "enqueue next"
d = "delete"
r = "rename"

[keys.sampler]
z = "zoom +"
Z = "zoom -"
0 = "zoom all"
w = "display"
enter = "write"
esc = "discard"
# Finer than seeking: a column, or a tenth of the view.
right = "nudge +1"
left = "nudge -1"
shift-right = "nudge +10%"
shift-left = "nudge -10%"
S = "snap"
f = "fit"
# Back to the whole range after [ or ] centred the view on one end.
"|" = "fit on"
i = "in"
o = "out"
l = "loop"
# Loops kept with the track: F1-F8 recall one, or save the range to an empty
# one; with shift, save the range over it.
f1 = "loop 1"
f2 = "loop 2"
f3 = "loop 3"
f4 = "loop 4"
f5 = "loop 5"
f6 = "loop 6"
f7 = "loop 7"
f8 = "loop 8"
shift-f1 = "loop 1 save"
shift-f2 = "loop 2 save"
shift-f3 = "loop 3 save"
shift-f4 = "loop 4 save"
shift-f5 = "loop 5 save"
shift-f6 = "loop 6 save"
shift-f7 = "loop 7 save"
shift-f8 = "loop 8 save"
# Hear the selection, or the range, slice or region, once.
a = "audition"
# Step through planned slices, hearing each once.
"," = "audition prev"
"." = "audition next"
# { and } select a mark, [ and ] a range end; these act on the selection.
"[" = "edge start"
"]" = "edge end"
"<" = "move -1"
">" = "move +1"
"#" = "onset"
backspace = "remove"
D = "deselect"
u = "undo"
r = "redo"

# Browsing and editing only: loops load from the Tape tab's lanes, or with :load N.
[keys.loops]
d = "remove"
backspace = "remove"
delete = "remove"
esc = "search-clear"

# The window's views only; the terminal has the commands.
[keys.tape]
space = "tape play"
x = "tape stop"
l = "tape load"
t = "tape take"
r = "tape reset"
w = "tape save"
R = "tape rec"
# The read heads' interpolation, sinc or hermite, to compare by ear.
i = "interp"

# j, k and enter still move through and play the library listed here.
[keys.dj]
a = "dj a load"
b = "dj b load"
z = "dj a play"
x = "dj a pause"
c = "dj a cue"
"," = "dj b play"
"." = "dj b pause"
m = "dj b cue"
left = "dj xfade a"
right = "dj xfade b"
down = "dj xfade centre"
i = "interp"

[keys.mix]
r = "mix rec"
l = "mix law"
P = "mix player mute"
T = "mix tape mute"
D = "mix decks mute"
H = "mix headphones mute"
i = "interp"