A³ Core files
How a file arrives decides what an update does to it:
How |
What |
On every update |
|---|---|---|
dpkg |
everything in the package tree |
replaced with the package’s version |
dpkg, conffile |
the files under |
kept if you changed them; dpkg asks |
postinst, file by file |
|
new files arrive; a differing file is replaced only if its part is chosen, after a backup (see step 4) |
Written rather than copied: network files, ~/.config/a3/network.json (once),
headless X config, ~/.venv, ~/.config/a3/osc.env, the beat-analyzer’s
.env block, REAPER and plug-ins.
Edit the package, not the machine, except where noted: a replaced file loses local edits.
Under /etc
Conffiles: dpkg keeps a version you changed.
File |
What it does |
|---|---|
|
1 s menu; |
|
autologin |
|
|
|
the three system units |
Written by the postinst, not shipped:
File |
When |
|---|---|
|
network answered yes (see step 1) |
|
lines for the configured interfaces commented out |
|
headless answered yes; renamed to |
~/.local/bin — programs
Replaced on every install.
Program |
What it is |
|---|---|
|
the OSC router, run by |
|
the truth as text: |
|
i3bar per workspace |
|
waits (max 1 min) for X to report the screen, so a UI starts at the right scale |
|
link to |
~/.local/lib — Core’s modules
Imported by a3-core.py and a3-osc-render; replaced on install.
Module |
What it does |
|---|---|
|
reads the one truth |
|
writes the one truth out for what cannot read JSON |
|
where the OSC addresses and REAPER track numbers live ( |
|
what Core asks REAPER to do beyond setting values |
|
turns REAPER’s feedback back into an A³ message |
|
turns a REAPER value back into the A³ value that produced it |
|
how much of a channel moves: the 3D law (the band’s gain; the steady rest stays at 0 dB) and the filter messages for both Isolators |
|
what a button message asks for, when two senders mean two things |
|
tells Core’s own echo apart from news |
|
passes the tempo on, but not every flicker |
|
who gets told, and how a new one is added |
|
which truth each device speaks, and whether it is Core’s own |
|
what only Core knows, kept across a restart |
|
the evening as Core saw it, for the next start |
|
saves in between, so a power cut does not cost the evening |
|
opens main, booth, phones and the main meter’s track after the start-up recall, with a 1 s fade. See the silent start |
|
Core saying its state again |
|
what Core has to say at start-up so everyone means the same |
|
the addresses Core has seen, kept across a restart |
|
the catalogue of addresses the system can speak, held against the traffic |
|
what went past Core, counted |
|
the window onto what Core is passing about |
~/.config — the configuration
Copied file by file (step 4). These are tuned at the
rig; an install replaces a tuned file when its part is chosen (backup in
~/.config/a3-replaced/). Keep a tuning by taking it into the package
(Machine and package stay one).
In |
What it is |
|---|---|
|
the project every start opens, outputs muted (REAPER) |
|
REAPER’s OSC pattern file |
|
a JSFX crossover effect |
|
an FX chain |
|
plug-in presets: the IEM encoders, decoders and DualDelay, Airwindows Consolidated, the container |
|
a REAPER project file shipped next to the template |
|
the loudspeaker layout for the AllRADecoder |
|
the IEM decoders’ own settings |
|
QjackCtl’s settings |
|
the JACK patchbay |
|
the window manager — see The screen |
|
the user units, with |
Written, not copied: a3/osc.env and two keys in REAPER/reaper.ini.
Installed by user_install.sh
Path |
What |
|---|---|
|
REAPER |
|
TAL-Filter-2 |
|
Airwindows Consolidated |
|
the built beat-analyzer, and its |
Machine and package stay one
What the development Core runs is what the package ships.
tools/mirror_check.py (a3-core) lists shipped files changed on the machine
but not in the package; the push script stops when they differ (an older
copy is reported as behind, not blocking). --take copies the machine’s file
into the package — check each diff. tools/config-status.py compares the
$HOME files both ways (--export, --install).
The screen: i3 workspaces and the bar
~/.config/i3/config names the workspaces and places each program:
Workspace |
Rule |
|---|---|
|
|
|
|
|
|
|
|
|
|
Both touch apps’ switches and i3bar read the names from i3, so renaming here
needs no app change; $mod+1 … $mod+5 still work. StemDeck’s main window is
tiled borderless (i3 full screen would make its dialogs full screen); dialogs
float.
The bar (bar { id a3 … }, top, strip_workspace_numbers yes,
i3status): a3-bar-per-workspace.service sets dock on workspaces 3+,
invisible on 1–2, where Motion and StemDeck fill the screen.
StemDeck runs as stemdeck.service from the StemDeck repository
(Always running on the Core). Not restarted
during a set: it causes xruns.
The i3 config also disables screen saver and power management, re-sets the touch panel’s output at start (off/on, rotated: a first mode-set can leave it black) and hides the cursor on touch.
REAPER: the template, the plug-ins, the routing
IEM Plug-in Suite
IEM Plug-in Suite, from Debian. Used:
Plugin |
What it does here |
|---|---|
MultiEncoder |
channel position; Core writes |
AllRADecoder |
fit to your speakers ( |
BinauralDecoder |
headphones |
SimpleDecoder |
|
EnergyVisualizer |
energy field to |
DualDelay |
FX bus; tempo from Core on |
Warning
Receivers to open by hand, silently shut otherwise: DualDelay Listen to
port (dualdelay.osc’s port) → OPEN, Sync off; EnergyVisualizer OSC
send on; MultiEncoder receivers. This is plug-in state in the REAPER project,
not in any repository.
TAL-Filter-2
TAL-Filter-2, one per channel:
the HPF/LPF the FX key switches. From user_install.sh.
Airwindows Consolidated
Airwindows through the Consolidated
container: 14 parameters per instance, gains on 1, 15, 29, … (gain_params in
layout.json). Channel gains, EQ, bus volumes. From user_install.sh.
Inputs and outputs
All on Patchbay — audio inputs and outputs. REAPER’s internal routing is not documented yet.