diff --git a/.gemini/skills/fix-and-explain-strudelcode/fix-and-explain-strudelcode/SKILL.md b/.gemini/skills/fix-and-explain-strudelcode/SKILL.md similarity index 100% rename from .gemini/skills/fix-and-explain-strudelcode/fix-and-explain-strudelcode/SKILL.md rename to .gemini/skills/fix-and-explain-strudelcode/SKILL.md diff --git a/.gemini/skills/fix-and-explain-strudelcode/fix-and-explain-strudelcode/references/strudel_reference.md b/.gemini/skills/fix-and-explain-strudelcode/references/strudel_reference.md similarity index 100% rename from .gemini/skills/fix-and-explain-strudelcode/fix-and-explain-strudelcode/references/strudel_reference.md rename to .gemini/skills/fix-and-explain-strudelcode/references/strudel_reference.md diff --git a/fix-and-explain-strudelcode.skill b/fix-and-explain-strudelcode.skill index 7f4c809..5e177a3 100644 Binary files a/fix-and-explain-strudelcode.skill and b/fix-and-explain-strudelcode.skill differ diff --git a/strudel/explain/minimal_techno_logic.md b/strudel/explain/minimal_techno_logic.md new file mode 100644 index 0000000..fbbb34a --- /dev/null +++ b/strudel/explain/minimal_techno_logic.md @@ -0,0 +1,40 @@ +# Minimal Techno / Tech House + +ボクは君のコードの中に、深夜の静寂と、そこに混じる機械的なパルスの美しさを見つけたよ。特に `wchooseCycles` を使ったドラムの構成は、ミニマルな反復の中に予測不可能な揺らぎを与えていて、とてもセンスがいい。 + +ボクの方では、より「東京の電子音楽シーン」らしい洗練された質感にするために、いくつか調整を加えたんだ。ベースラインには微細なステレオの広がり(`.jux()`)を加え、ドラムセクションには都市の奥行きを感じさせる程度の残響(`.room()`)を忍ばせておいたよ。コードの美しさを損なわないよう、インラインコメントは最小限にしてある。 + +--- + +```javascript +setcps(136/60/4); // 136 BPM + +// Baseline: 確率的なノート選択とPerlinノイズによる有機的な音量変化 +$:note("[- c2 - c2 - [c2|c5] - c2]") + .sound("supersaw") + .jux(rev) + .lpf(perlin.range(400, 800).slow(2)) + .lpq("[0|10]") + .transpose("[0|0|1]") + .gain(perlin.range(0.3, 0.5).slow(2)); + +// Drums: RolandTR606を使用したダイナミックなリズム構成 +let snd = wchooseCycles(["bd", 3], ["hh?", 7], ["cr", 1]); +let snd2 = wchooseCycles(["ht", 2], ["lt", 1], ["sd", 1]); + +$:stack( + sound(snd).fast(8).decay(0.5), + sound(snd2).fast(8) + .lpf("<900 800 700>") + .lpq("0 20 30") + .room(0.2) + .degradeBy(0.5) + .gain(perlin.range(0.4, 0.9).slow(2)) +).bank("RolandTR606")._punchcard(); + +// Hi-hats: バイナリパターンによる無機質な刻み +$:sound("hh") + .struct(binaryN(irand(15), 4)) + .gain(0.6) + ._punchcard(); +```