Initial commit: Strudel live coding environment with gemini-cli guidelines

This commit is contained in:
HarakaraSite
2026-02-11 20:05:21 +09:00
commit 44b4a543ee
5 changed files with 545 additions and 0 deletions

45
dubtechno.md Normal file
View File

@@ -0,0 +1,45 @@
# Genre: Dub Techno
Dub Technoダブ・テクは、デトロイト・テクの機械的なグルーヴと、ジャマイカのダブDubの音響処理ディレイやリバーブを融合させたジャンルです。
このコードでは、深く沈み込むようなキック、透明感のある「ダブ・コード」、そして催眠的なリズムパターンを再現しています。
### 主な特徴とコードの解説
1. **BPM**: `126` に設定。テクノとしては標準的ですが、ダブのゆったりとした余白を感じさせる速度です。
2. **Dub Chords (ハーモニー)**:
- `sine`(サイン波)を使用することで、従来のノコギリ波よりも丸く、冷ややかで透明感のあるトーンを作っています。
- `sine.range(200, 800).slow(16)` により、フィルターの開き具合がゆっくりと変化し、波のようなうねりを生み出します。
- `.delay(0.7).delayfeedback(0.8)` で、ダブ特有の「やまびこ」のような反響音を作り出し、空間を埋めます。
3. **Rhythm (ドラム)**:
- `.bank("tr909")` を使用し、太く乾いたキック(`bd`を4つ打ち`*4`)で配置。
- ハイハット(`hh`)やリムショット(`rim`)に `.jux(iter(4))` を適用し、ステレオ空間での広がりと揺らぎを持たせています。
4. **Bass (低音)**:
- `saw`(ノコギリ波)に強いローパスフィルター(`lpf(100)`)とレゾナンス(`lpq(10)`)をかけ、唸るような太いサブベースを作っています。
- `"c1*4".add(...)` により、微妙にピッチをずらした音を重ね、厚みのあるリズミカルなベースラインを構築しています。
5. **Texture (環境音)**:
- `wind`(風の音)のゲインを上げ、フィルターを開放することで、楽曲全体を包み込むような強力な空気感(アトモスフィア)を演出しています。
```javascript
setcps(126/60/4)
// Rhythm: Deep Kick & Spatial Percussion
$: s("bd*4").bank("tr909").lpf(2000).gain(1.2)
$: s("- [hh|oh] - hh").bank("tr909").gain(0.8).jux(iter(4))
$: s("rim(3,8)").bank("tr909").room(0.6).delay(0.5)
// Harmony: Dub Chords (The Core Element)
// "Sine" wave for a colder, glassier dub tone + evolving LFO
$: chord("Cm9").voicing().s("sine")
.lpf(sine.range(200, 800).slow(16)) // Evolving filter sweep
.attack(0.05).decay(0.3).sustain(0) // Short stabby envelope
.room(0.9).roomsize(0.9) // Massive cavernous reverb
.delay(0.7).delaytime(0.1875).delayfeedback(0.85) // Dotted 8th note delay (3/16 cycle)
.gain(0.3)
// Bass: Sub Anchor with Drive
// Detuned Saw wave with resonance for a thick, driving bottom end
$: note("c1*4".add(0.05,0.1,0.15)).s("saw").lpf(100).lpq(10).gain(1.1)
// Texture: Prominent Atmosphere
// High-gain wind texture for immersive noise
$: s("wind").slow(3).gain(1.2).pan(sine.range(0.2, 0.8).slow(6))
```