feat: komplette Codebase vom Board ins Repo gespiegelt

app/ = /opt/callrec (Node-Backend, Vite-Frontend, Python-Inferenz,
Audio-Skripte, rkllm_server.cpp), system/ = systemd-Units,
WirePlumber/PipeWire-Drop-ins, sudoers. Modelle, Binaries, Aufnahmen
und node_modules bleiben draussen (.gitignore).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude
2026-07-16 11:18:29 +02:00
parent 560622e125
commit f9e1eb82c4
61 changed files with 5546 additions and 0 deletions
@@ -0,0 +1,15 @@
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Mic Gate"
filter.graph = {
nodes = [
{ type = ladspa name = gate plugin = "/usr/lib/ladspa/gate_1410.so" label = gate
control = { "LF key filter (Hz)" = 50.0 "HF key filter (Hz)" = 8000.0 "Threshold (dB)" = -45.0 "Attack (ms)" = 5.0 "Hold (ms)" = 250.0 "Decay (ms)" = 200.0 "Range (dB)" = -60.0 "Output select (-1 = key listen, 0 = gate, 1 = bypass)" = 0 } }
]
}
capture.props = { node.name = "micgate" media.class = Audio/Sink audio.channels = 1 audio.position = [ MONO ] }
playback.props = { node.name = "micgate.out" node.target = "alsa_output.platform-fc000000.usb.stereo-fallback" node.passive = true audio.channels = 1 audio.position = [ MONO ] }
}
}
]
@@ -0,0 +1,10 @@
[Unit]
Description=CallRec iPhone HFP call auto-routing (gated mic uplink + far-end into rec mix)
After=wireplumber.service
[Service]
ExecStart=/opt/callrec/aime-iphone-route.sh
Restart=always
[Install]
WantedBy=default.target
@@ -0,0 +1,15 @@
[Unit]
Description=CallRec mic noise-gate (PipeWire filter-chain: kills far-end self-echo)
After=wireplumber.service pipewire-pulse.service
Wants=wireplumber.service
[Service]
# Loads ~/.config/pipewire/filter-chain.conf.d/micgate.conf via the stock
# filter-chain.conf boilerplate; creates the "micgate" Audio/Sink (LADSPA
# gate_1410) whose output feeds the UAC2 gadget sink (Teams/Discord mic).
ExecStart=/usr/bin/pipewire -c filter-chain.conf
Restart=always
RestartSec=2
[Install]
WantedBy=default.target
@@ -0,0 +1,10 @@
[Unit]
Description=CallRec USB-headset audio topology (null-sink mix + loopbacks)
After=wireplumber.service pipewire-pulse.service
Wants=wireplumber.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/opt/callrec/aime-usb-audio-setup.sh
[Install]
WantedBy=default.target
@@ -0,0 +1,11 @@
[Unit]
Description=CallRec Windows volume -> USB headset bridge
After=aime-usb-audio.service
Wants=aime-usb-audio.service
[Service]
Type=simple
ExecStart=/opt/callrec/aime-volbridge-headset.sh
Restart=always
RestartSec=2
[Install]
WantedBy=default.target
@@ -0,0 +1,4 @@
monitor.bluez.properties = {
bluez5.roles = [ a2dp_sink hfp_hf hsp_hs ]
bluez5.hfphsp-backend = "native"
}