# Precautions for Strudel Coding

ボクが Strudel のコードを生成する際に、過去に犯したミスや注意すべき点をここに記録するよ。二度と同じ間違いを繰り返さないための、ボク自身への戒めだね。

## 1. Sound Bank & Sample Name Consistency
特定の `.bank()` を指定した際、そのバンクに存在しないサンプル名を指定しないこと。

### TR-606 (`tr606`)
*   **使用可能なサンプル名**: `bd`, `cr`, `hh`, `ht`, `lt`, `oh`, `sd`
*   **注意**: `perc` や `rim` など、上記以外の名前は存在しない。タム系を使いたい場合は `ht` か `lt` を選択すること。
*   **NG**: `s("perc(3,8)").bank("tr606")`
*   **OK**: `s("ht(3,8)").bank("tr606")`

## 2. Function Specificity & Typos
特定の音源でしか機能しない関数や、よくあるタイポに注意すること。

### `sine` vs `line` (Important!)
*   **注意**: `line` という関数は Strudel には存在しないよ。周期的な変化や LFO が欲しい場合は必ず `sine` (または `sawtooth`, `square` 等の有効なシグナル) を使うこと。
*   **NG**: `gain(line.range(0.6, 0.9).slow(4))`
*   **OK**: `gain(sine.range(0.6, 0.9).slow(4))`

### `density()`
*   **使用条件**: 主に `crackle` 音源で使用すること。
*   **NG**: `s("white").density(12)`
*   **OK**: `s("crackle").density(12)`

## 3. Chord Symbols
デフォルトで使用可能なコードシンボルを正しく使用し、存在しないシンボル（例: `maj7` など）を推測で使わないこと。

### 使用可能なコードシンボルのフルリスト（ルートCの例）
`C2`, `C5`, `C6`, `C7`, `C9`, `C11`, `C13`, `C69`, `Cadd9`, `Co`, `Ch`, `Csus`, `C^`, `C-`, `C^7`, `C-7`, `C7sus`, `Ch7`, `Co7`, `C^9`, `C^13`, `C^7#11`, `C^9#11`, `C^7#5`, `C-6`, `C-69`, `C-^7`, `C-^9`, `C-9`, `C-add9`, `C-11`, `C-7b5`, `Ch9`, `C-b6`, `C-#5`, `C7b9`, `C7#9`, `C7#11`, `C7b5`, `C7#5`, `C9#11`, `C9b5`, `C9#5`, `C7b13`, `C7#9#5`, `C7#9b5`, `C7#9#11`, `C7b9#11`, `C7b9b5`, `C7b9#5`, `C7b9#9`, `C7b9b13`, `C7alt`, `C13#11`, `C13b9`, `C13#9`, `C7b9sus`, `C7susadd3`, `C9sus`, `C13sus`, `C7b13sus`, `C`, `Caug`, `CM`, `Cm`, `CM7`, `Cm7`, `CM9`, `Cm13`, `CM7#11`, `CM9#11`, `CM7#5`, `Cm6`, `Cm69`, `Cm^7`, `C-M7`, `Cm^9`, `C-M9`, `Cm9`, `Cmadd9`, `Cm11`, `Cm7b5`, `Cmb6`, `Cm#5`

## 4. Acid Sound Design (TB-303 Style)
アシッドサウンドを作る際の重要なテクニック。

*   **Filter Type**: `.ftype(2)` を指定することで、TB-303 のような鋭い（ピキピキした）フィルターサウンドになる。
*   **Resonance Modulation**: `lpq` (レゾナンス) も `sine` などで変化させると、より表情豊かなアシッドラインになる。
## 5. Syntax & Preferred Styles (Updated 2026)
Strudel の構文とスタイルの最新ルール。

### `$: ` (Output Operator) の正しい使い方
*   **ルール**: `$:` は各トラック（パターン）の**先頭にのみ**置くこと。
*   **NG**: `$: s("bd*4").$.gain(0.8)` （途中に `$.` を挟むのは冗長）
*   **OK**: `$: s("bd*4").gain(0.8)`

### 短縮記法 (Short-hand functions) の優先
*   **ルール**: `delayfeedback` よりも `delayfb` のような短縮記法を優先して使用すること。ライブコーディングらしい簡潔さを保つため。
*   **数値の省略**: `0.5` や `0.25` のような数値は、キーストロークを減らすために `0` を省略して `.5` や `.25` と表記すること。
*   **例**: `.delayfb(.5)`, `.gain(.8)`, `.dist(.4)`

### `dist()` (Distortion) の使用
*   **ルール**: `shape()` は非推奨。歪みを加えたい場合は `dist()` (または `distort()`) を使用すること。
*   **NG**: `.shape(0.4)`
*   **OK**: `.dist(0.4)`
