diff --git a/PRECAUTIONS.md b/PRECAUTIONS.md index b08c0f1..4c55919 100644 --- a/PRECAUTIONS.md +++ b/PRECAUTIONS.md @@ -35,4 +35,20 @@ * **Filter Type**: `.ftype(2)` を指定することで、TB-303 のような鋭い(ピキピキした)フィルターサウンドになる。 * **Resonance Modulation**: `lpq` (レゾナンス) も `sine` などで変化させると、より表情豊かなアシッドラインになる。 -* **OK**: `.ftype(2).lpf(sine.range(300, 3000).slow(8)).lpq(sine.range(15, 30).slow(4))` +## 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)` diff --git a/generate-strudel-template/assets/templates/deep_ambient_textures.md b/generate-strudel-template/assets/templates/deep_ambient_textures.md index 70365f4..63fcaf9 100644 --- a/generate-strudel-template/assets/templates/deep_ambient_textures.md +++ b/generate-strudel-template/assets/templates/deep_ambient_textures.md @@ -1,6 +1,6 @@ # Deep Ambient & Industrial Textures Template -ボクが君のために用意した、深みのあるテクスチャを重視した2つのパターンだよ。Strudelの標準的なメソッドチェーンを用いて、読みやすく洗練された響きに仕上げてある。 +ボクが君のために用意した、深みのあるテクスチャを重視した2つのパターンだよ。キーストロークを極限まで削ぎ落とした、プロフェッショナルなライブコーディング・スタイルに仕上げてある。 ## Pattern A: Deep Fluid (深海への没入) リバーブの中に溶け込むような、たゆたうテクスチャを多層的に重ねたスタイル。 @@ -10,30 +10,30 @@ setcps(126/60/4) // 1. Kick & Rumble (重心) // キックに深いリバーブとディレイ、LPFをかけて地鳴りのような質感を出す -$: s("bd*4").gain(0.8) -$: s("bd*4").rev(0.5).lpf(180).gain(0.4).delay(0.5).delayfeedback(0.4) +$: s("bd*4").gain(.8) +$: s("bd*4").rev(.5).lpf(180).gain(.4).delay(.5).delayfb(.4) // 2. Subbass (脈動) // サイン波によるピュアなサブベース -$: n("c1*4").s("sine").lpf(100).gain(sine.range(0.2, 0.4).slow(8)) +$: n("c1*4").s("sine").lpf(100).gain(sine.range(.2, .4).slow(8)) // 3. Fluid Texture (流動的な層) // ゆっくりと動くフィルターと深い残響によるドローン $: n("c3 [g3 eb3] c4").s("sine") .lpf(sine.range(300, 1200).slow(16)) - .rev(0.8).delay(0.75).delayfeedback(0.6) - .gain(sine.range(0.05, 0.15).slow(12)) + .rev(.8).delay(.75).delayfb(.6) + .gain(sine.range(.05, .15).slow(12)) // 4. Organic Grain (有機的な粒子) // 定位を揺らしたノイズによる粒子のテクスチャ -$: s("white*16").gain(osc(8).range(0, 0.12)) +$: s("white*16").gain(osc(8).range(0, .12)) .lpf(sine.range(800, 3000).slow(20)) .pan(sine.slow(4)) - .rev(0.4) + .rev(.4) // 5. Subtle Percussion // 高域のみを薄く鳴らすハイハット -$: s("hh*16").gain(osc(4).range(0, 0.25)).hpf(6000) +$: s("hh*16").gain(osc(4).range(0, .25)).hpf(6000) ``` --- @@ -45,26 +45,26 @@ $: s("hh*16").gain(osc(4).range(0, 0.25)).hpf(6000) setcps(126/60/4) // 1. Kick & Rumble (重心) -$: s("bd*4").gain(0.8) -$: s("bd*4").rev(0.3).lpf(200).gain(0.4).delay(0.25).delayfeedback(0.3) +$: s("bd*4").gain(.8) +$: s("bd*4").rev(.3).lpf(200).gain(.4).delay(.25).delayfb(.3) // 2. Subbass (脈動) -$: n("c1*4").s("sine").lpf(100).gain(sine.range(0.2, 0.4).slow(4)) +$: n("c1*4").s("sine").lpf(100).gain(sine.range(.2, .4).slow(4)) // 3. Resonant Pulse (共鳴するパルス) // 強いレゾナンスをかけたノイズによるポリリズム的なパルス $: s("white").struct("1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1") .lpq(35).lpf(sine.range(400, 1500).slow(8)) - .shape(0.4) - .gain(0.15).rev(0.3) + .dist(.4) + .gain(.15).rev(.3) // 4. Metallic Scrape (金属的な摩擦音) // 高域のノイズを加工した、インダストリアルな響き $: s("white*8").hpf(4000).lpq(20) - .gain(osc(2).range(0, 0.1).phase(0.25)) - .delay(0.125).delayfeedback(0.5) - .gain(0.08) + .gain(osc(2).range(0, .1).phase(.25)) + .delay(.125).delayfb(.5) + .gain(.08) // 5. Subtle Percussion -$: s("hh*16").gain(osc(4).range(0, 0.2)).hpf(5000) +$: s("hh*16").gain(osc(4).range(0, .2)).hpf(5000) ```