- 共享引擎(app/src/main):GestureEngine 6 手势识别、AudioEngine 三层音频 (ExoPlayer BGM 交叉淡入 / 对白 ducking / SoundPool 低延迟)、Game/GameEngine 状态机接口、MainActivity 全屏封面 + TalkBack - 《声命线》storyline:末世互动广播剧,3 幕 8 抉择点 4 结局 - 《声东击西》reflex:听声辨位反应,12 波战斗 + BGM 三档 BPM 变速 - 《暗室》escape:3x3 网格密室逃脱,钥匙→铁柜→保险丝→电箱→大门谜题链 - 文档:setup(从零搭建)/ architecture(架构)/ engine-api(引擎 API)/ asset-pipeline(资产流水线)/ games/*(三款游戏设计文档) - 资产管线:Qwen3-TTS 对白 + 程序合成音效/BGM + Mureka BGM 的 gen 脚本与台账, 全部 ogg 资产入库可复现 - env.d 环境脚本:android/tts 入库;sfx/mureka 含密钥不入库,仅提交 .example.sh 模板
67 lines
2.0 KiB
Markdown
67 lines
2.0 KiB
Markdown
# Ableton Live integration (Experimental!)
|
|
|
|
Insert `sa3` generations directly into Ableton Live at the current playhead position.
|
|
|
|
Two pieces work together:
|
|
|
|
| File | Where it runs |
|
|
|------|--------------|
|
|
| `AudioInserter/` | Inside Ableton — a MIDI Remote Script that listens on a local socket |
|
|
| `insert_audio.py` | On the command line — sends files to that socket |
|
|
|
|
## 1. Install the AudioInserter Remote Script
|
|
|
|
There are two places Ableton looks for Remote Scripts on Mac:
|
|
|
|
| Location | Notes |
|
|
|----------|-------|
|
|
| `~/Music/Ableton/User Library/Remote Scripts/` | **Recommended** — persists across Ableton updates |
|
|
| `/Applications/Ableton Live *.app/Contents/App-Resources/MIDI Remote Scripts/` | Works, but gets wiped when you update Ableton |
|
|
|
|
Install into the User Library (create the folder if it doesn't exist yet):
|
|
|
|
```bash
|
|
mkdir -p ~/Music/Ableton/User\ Library/Remote\ Scripts
|
|
cp -r AudioInserter ~/Music/Ableton/User\ Library/Remote\ Scripts/AudioInserter
|
|
```
|
|
|
|
Then in Ableton: **Preferences → MIDI → Control Surfaces** — add a new surface and choose **AudioInserter**. No MIDI port needed.
|
|
|
|
Verify it's running:
|
|
|
|
```bash
|
|
python3 insert_audio.py --ping
|
|
# ✓ Ableton is connected and ready
|
|
```
|
|
|
|
## 2. Insert audio
|
|
|
|
```bash
|
|
# Insert a specific file at the current playhead
|
|
python3 insert_audio.py /path/to/out.wav
|
|
|
|
# Insert whatever wav was most recently dropped on your Desktop
|
|
python3 insert_audio.py
|
|
|
|
# Watch a folder and auto-insert each new file as it appears
|
|
python3 insert_audio.py --watch ~/Desktop
|
|
```
|
|
|
|
The track is named after the file by default. If the env var `_SA3_LAST_PROMPT` is set, that prompt text is used as the track name instead — handy if you wrap `sa3` in a shell alias.
|
|
|
|
## 3. Typical workflow with sa3
|
|
|
|
```bash
|
|
# Generate
|
|
./sa3 --prompt "driving techno loop" --dit medium --decoder same-l --out out.wav
|
|
|
|
# Insert
|
|
python3 ableton/insert_audio.py out.wav
|
|
```
|
|
|
|
Or use watch mode: start it once and every `out.wav` you generate lands in Ableton automatically:
|
|
|
|
```bash
|
|
python3 ableton/insert_audio.py --watch /path/to/sa3/output/dir
|
|
```
|