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=600The 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]