>_DEVELOP

strudel.cc デモ

strudel.ccというJavascriptで書ける作曲ツールがあるとのことで、

試しにループを作ってみた。

 

目次


🎶 音楽ジェネレーターのコード解説

以下は、ドラム、ベース、シンセ、コードなど複数の音を重ねて再生するスクリプトです。

📜 コード(整形済み)

stack(
  // 🥁 ドラム
  sound("bd hh bd hh bd hh bd hh*2")
    .bank("TR909")
    .gain(1),

  // 🎸 ベースライン
  note("<e2 e3 e2 e3*2 e2*2 e3 e2 e4*4>") 
    .sound('square')
    .fast(8)
    .cutoff(900)
    .gain(1),

  // 🎹 シンセ1(ミュート中)
  "<e4 e5 e4 e5>" 
    .sound('sawtooth')
    .fast(8)
    .note()
    .cutoff(1500)
    .gain(0),

  // 🎹 シンセ2(ミュート中)
  "<g3 b4 a4 b4 a4 g3 g3 a3>" 
    .sound('square')
    .fast(8)
    .note()
    .cutoff(500)
    .gain(0),

  // 🎵 コード(和音)
  "<Am7!3 <Em7 Bm7 Em7 Bm7>>"
    .voicings('lefthand') 
    .note()
    .sound('sawtooth')
    .lpf("<600 900 1200 1500>")
    .release("<0 .1 .4 .6>/2")
    .gain(1)
)

🔍 詳細解説

stack(...)

  • 複数のサウンドレイヤーを同時に再生する関数。

🎧 ドラムセクション

sound("bd hh bd hh bd hh bd hh*2")
  .bank("TR909")
  .gain(1)
  • bdはバスドラム(kick)、hhはハイハット。
  • "bd hh bd hh bd hh bd hh*2":最後のhh*2でハイハットを2倍の長さで演奏。
  • 使用ドラム音源はTR-909
  • 音量(ゲイン)は通常の1

🎸 ベースライン

note("<e2 e3 e2 e3*2 e2*2 e3 e2 e4*4>")
  .sound('square')
  .fast(8)
  .cutoff(900)
  .gain(1)
  • note(...)でベース音程を指定。
  • <...>の中では音の繰り返しができる:e3*2はe3を2回、e4*4はe4を4回。
  • 波形は**square(矩形波)**で、クラシックなチップチューンサウンドに。
  • fast(8):1小節を8等分のテンポで再生(8分音符)。
  • cutoff(900):ローパスフィルターのカットオフ周波数を指定。
  • gain(1):音量。

🎹 シンセ1(現在は音量0でミュート)

"<e4 e5 e4 e5>" 
  .sound('sawtooth')
  .fast(8)
  .note()
  .cutoff(1500)
  .gain(0)
  • 音程:e4とe5を交互に再生。
  • 波形:sawtooth(ノコギリ波)
  • gain(0):現在ミュート状態。必要があれば1に上げてONにできる。

🎹 シンセ2(現在はミュート)

"<g3 b4 a4 b4 a4 g3 g3 a3>" 
  .sound('square')
  .fast(8)
  .note()
  .cutoff(500)
  .gain(0)
  • 複雑なメロディライン。
  • 使用波形:square
  • cutoff(500)でローパスフィルターをきつくかけて柔らかめの音に。

🎵 コード(和音)

"<Am7!3 <Em7 Bm7 Em7 Bm7>>"
  .voicings('lefthand') 
  .note()
  .sound('sawtooth')
  .lpf("<600 900 1200 1500>")
  .release("<0 .1 .4 .6>/2")
  .gain(1)
  • 和音進行:
    • Am7!3:Am7コードを3回繰り返す。
    • <Em7 Bm7 Em7 Bm7>:Em7とBm7を交互に再生。
  • voicings('lefthand'):左手風のボイシング(低音域中心の和音構成)。
  • lpf(...):ローパスフィルターのカットオフを時間で変化させる。
  • release(...):音の余韻(リリース時間)を変化させる。
  • gain(1):通常音量で再生。