studio-engineer-mcpv0.1.0 · SIM
MCP · JSON-RPC 2.0Tools · Resources · Promptsstdio + SSEFFmpeg filter_complex

StudioEngineer MCPAutonomous Multi-Track DAW & Podcast Producer for LLMs

Stateful MCP resources hold a timeline manifest. FFmpeg sidechain DSP ducks the music under every voice. Millisecond stem orchestration lets hosts interrupt each other with negative overlap_ms.

PR DIFF INPUT

PR #402: Replace distributed Redis lock with in-memory global dictionary for 10x faster checkout

diff --git a/checkout/lock.py b/checkout/lock.py
@@ -1,18 +1,9 @@
-import redis
-from redlock import Redlock
-
-dlm = Redlock([{"host": REDIS_HOST, "port": 6379}])
-
-def acquire_cart_lock(cart_id: str, ttl_ms: int = 3000):
- lock = dlm.lock(f"cart:{cart_id}", ttl_ms)
- if not lock:
- raise CartLockedError(cart_id)
- return lock
+# 10x faster checkout 🚀 no more network hop
+_LOCKS: dict[str, bool] = {}
+
+def acquire_cart_lock(cart_id: str, ttl_ms: int = 3000):
+ if _LOCKS.get(cart_id):
+ raise CartLockedError(cart_id)
+ _LOCKS[cart_id] = True
+ return cart_id
MCP JSON-RPC 2.0 INSPECTOR16/16 msgs

Click a packet to inspect request/response — the matching stem lights up on the timeline.

00:00.000
L
R
-16.0 LUFS-1.5 dBTPSidechain GR: 0.0 dB
ses_99a
0s2s4s6s8s10s12s14s16s18s20s22s24s26s28s30s32s34s36s38s40s42s44s46s
Host Alex (Staff SRE)
Pan 25% L
stem_02
stem_04
stem_06
stem_08
Host Sam (Builder)
Pan 25% R
stem_01
stem_03
stem_05
stem_07
SFX Bus
cues
⌨️keyboard_clack
💿record_scratch
🚨pager_alert
🌀transition_whoosh
BGM · lofi_synth_bed.wav
sidechain

Try: play, then Solo [S] Alex or Mute [M] the BGM — the mix responds live in your browser.

SIDECHAIN · sidechaincompress threshold=0.03 ratio=6 attack=50 release=6000.0 dB
FFMPEG FILTERGRAPH · hover a node
→
→
→
→
→
→
[bgm][vb_key]sidechaincompress=threshold=0.03:ratio=6:attack=50:release=600

The voice bus keys a compressor on the music. It ducks ~12 dB within 50 ms of speech and swells back over 600 ms.

Generated -filter_complex for this session
[0:a]adelay=600|600,pan=stereo|c0=0.2*c0|c1=0.8*c0[d0];
[1:a]adelay=8519|8519,pan=stereo|c0=0.8*c0|c1=0.2*c0[d1];
[2:a]adelay=13518|13518,pan=stereo|c0=0.2*c0|c1=0.8*c0[d2];
[3:a]adelay=16203|16203,pan=stereo|c0=0.8*c0|c1=0.2*c0[d3];
[4:a]adelay=23518|23518,pan=stereo|c0=0.2*c0|c1=0.8*c0[d4];
[5:a]adelay=27615|27615,pan=stereo|c0=0.8*c0|c1=0.2*c0[d5];
[6:a]adelay=35312|35312,pan=stereo|c0=0.2*c0|c1=0.8*c0[d6];
[7:a]adelay=41130|41130,pan=stereo|c0=0.8*c0|c1=0.2*c0[d7];
[8:a]adelay=7839|7839,volume=-6dB[s0];
[9:a]adelay=13268|13268,volume=-3dB[s1];
[10:a]adelay=27795|27795,volume=-3dB[s2];
[11:a]adelay=41080|41080,volume=-4dB[s3];
[d0][d1][d2][d3][d4][d5][d6][d7][s0][s1][s2][s3]amix=inputs=12:normalize=0[voice_bus];
[voice_bus]asplit=2[vb_key][vb_mix];
[12:a]volume=-8dB[bgm];
[bgm][vb_key]sidechaincompress=threshold=0.03:ratio=6:attack=50:release=600[bgm_ducked];
[vb_mix][bgm_ducked]amix=inputs=2:normalize=0,loudnorm=I=-16:TP=-1.5:LRA=11[master]