概要
Tidal/Strudel の mini-notation サブセットを純 Python で実装し、テキストパターンから直接クリップにノートを書き込めるようにする。
ableton-cli clip pattern set 0 0 --map "36:kick,38:sd,42:hh" \
--pattern "kick ~ kick [~ kick] sd, hh*8" --length 4
動機
ドラム/リフの記述量を notes JSON 比で 1/10 程度に圧縮できる。Jersey Club の七つ打ちや Deep House のオフビート OHH が 1 行で表現できる。Strudel 本体 (JS) への依存なしで決定的にテスト可能。
提案仕様 (サブセット)
- ステップ列:
bd ~ sd ~ (~ は休符)
- 細分割:
[a b]
- 繰り返し:
a*4
- サイクル交代:
<a b>
- ユークリッドリズム:
a(3,8)
- 並列レイヤー:
, 区切り
- 確率:
a?0.5 (シード指定 --seed で再現可能、後続でも可)
--map でシンボル→MIDI ピッチ対応を指定。x...x..x 形式の単純ステップグリッド記法も併設検討
実装方針
- パーサは純 Python 200〜300 行想定、
src/ableton_cli/ 配下に notation モジュールを新設
- 出力は既存 notes JSON 中間表現 → 既存
clip notes add/replace 経路を再利用 (Remote Script 側変更なし)
- ゴールデンテスト (パターン文字列 → ノート配列) を整備
関連: 表現力拡張ロードマップ Step 2。フル Strudel 互換は別 issue (Node ブリッジ) に分離。
概要
Tidal/Strudel の mini-notation サブセットを純 Python で実装し、テキストパターンから直接クリップにノートを書き込めるようにする。
動機
ドラム/リフの記述量を notes JSON 比で 1/10 程度に圧縮できる。Jersey Club の七つ打ちや Deep House のオフビート OHH が 1 行で表現できる。Strudel 本体 (JS) への依存なしで決定的にテスト可能。
提案仕様 (サブセット)
bd ~ sd ~(~は休符)[a b]a*4<a b>a(3,8),区切りa?0.5(シード指定--seedで再現可能、後続でも可)--mapでシンボル→MIDI ピッチ対応を指定。x...x..x形式の単純ステップグリッド記法も併設検討実装方針
src/ableton_cli/配下に notation モジュールを新設clip notes add/replace経路を再利用 (Remote Script 側変更なし)関連: 表現力拡張ロードマップ Step 2。フル Strudel 互換は別 issue (Node ブリッジ) に分離。