Strudelライブコーディング:コードで音楽制作

音楽パターンをコードとして書き、埋め込みのStrudelエディターですぐに聴けます。ブラウザー向けのTidalCyclesです。

下からスターターパターンを選び、エディター内の再生ボタンを押してから、実行中にコードを変更します。それがライブコーディングです。再評価した瞬間に音楽が更新されます。

Strudelライブコーディング:コードで音楽制作
音楽パターンをコードとして書き、埋め込みのStrudelエディターですぐに聴けます。ブラウザー向けのTidalCyclesです。
スターターパターン

パターン: ドラム

sound("bd hh sd hh")

音はエディター内で再生を押した後にのみ始まります。サンプルブラウザーとビジュアルを備えた完全な環境が必要ですか? 完全版Strudelで開く

Strudelミニ記法クイックリファレンス

パターン言語の大半を使いこなすための10の構文です。二重引用符内はすべてミニ記法で、引用符付きの1シーケンスはちょうど1サイクル続きます。

構文動作
sound() / s()sound("bd hh sd hh")名前付きサンプルまたはシンセを鳴らします。bd = バスドラム、sd = スネア、hh = ハイハット。4イベントは1サイクルを均等に分けます。
note()note("c4 e4 g4").sound("piano")音名(c4、eb3)またはMIDI番号でピッチを鳴らし、後ろにチェーンした音色へ送ります。
*(反復)sound("hh*8")8つのハイハットを1イベント分の時間に詰め込みます。高速な細分を記述する標準的な方法です。
~(休符)sound("bd ~ sd ~")無音のスロットです。イベントグリッドのタイミングは維持され、チルダは何も鳴らしません。
[ ](グループ)sound("bd [sd sd] bd sd")角括弧は複数イベントを1スロットに詰めて時間を細分化します。ここでは2つの速いスネアが2拍目を共有します。
< >(交替)note("<c2 eb2 g2>")山括弧は1サイクルごとに1項目を鳴らして順番に巡回します。即席のコード進行です。
stack()stack(sound("bd*4"), sound("hh*8"))パターンを重ねて同時に演奏します。フルドラムキットを作ったり、ドラムの下にベースラインを加えたりできます。
fast() / slow()sound("bd sd").fast(2)パターンを速くしたり引き延ばしたりします。fast(2) は1サイクルに2回繰り返し、slow(2) は1回を2サイクルに広げます。
rev()note("c4 e4 g4 b4").rev()各サイクル内でパターンを逆再生します。1語でできるメロディー変奏です。
.euclid(k, n)sound("bd").euclid(3, 8)k回のヒットをnステップにできるだけ均等に配置します。euclid(3,8) は多くのダンスやラテンのグルーヴを支えるトレシージョです。

Strudelとライブコーディングについて

ライブコーディングとは、音楽を鳴らしながらコードを書き換えて演奏することです。タイムラインに音符を並べる代わりに、四分音符ごとのキック、サイクルごとに変わるコード、三連符に詰めたハイハットといったパターンを記述し、言語が即座に音へ変換します。1行を変えて再評価すれば、止まることなく次のサイクルで音楽が変化します。この実践を中心に、演者のコードを観客へ投影するクラブイベント、algoraveの文化が育ちました。 StrudelはTidalCyclesのJavaScript版です。TidalCyclesはAlex McLeanが2009年頃にHaskellで作ったパターン言語で、ライブコーディング音楽の共通語になりました。StrudelはTidalの考え方をブラウザータブ内で再実装しています。HaskellツールチェーンもSuperCollider音声サーバーもインストールも不要です。このページはstrudel.ccの公式Strudel REPLをフレームに埋め込んでいるため、評価時のフラッシュ、エラーメッセージ、内蔵音色を備えた本物のエディターを使えます。スターターボタンは動作するパターンを読み込みます。完全版Strudelを開くリンクは現在のパターンをサンプルブラウザーと可視化を含む環境へ持ち込みます。 Tidal系言語の中心はサイクルです。これは既定で約2秒の繰り返される時間幅で、すべてのパターンはこれを基準に測られます。二重引用符内のミニ記法がこのサイクルを切り分けます。bd hh sd hh と書けば、キック、ハット、スネア、ハットという4つの均等なイベントになります。小さな編集が大きな音楽的変化を生みます。アスタリスクはイベントを増やし、チルダは無音を入れ、角括弧は1スロットを高速イベントへ分割し、山括弧は連続サイクルで値を交替させます。 パターン言語を夢中にさせるのは変換を組み合わせられる点です。rev()でメロディーを反転し、fast(2)で倍速にし、euclid(3,8)でヒットをキューバのトレシージョへ再配置できます。どれも単音ではなくパターン全体に適用されるため、1回の編集で質感全体が変わります。ドラムパターンから始め、サンプル名を替え、アスタリスクを1つ加えれば、もうライブコーディングです。

エディターで試せるパターンレシピ

いずれかを埋め込みエディターにコピーして再生し、トークンを一度に1つずつ変化させてみましょう。

コード聴こえるもの示すアイデア
sound("bd hh sd hh")基本のバックビート:キック、ハット、スネア、ハットを毎サイクル1回4イベントで1サイクルを均等に分割。ミニ記法のHello Worldです。
sound("bd*4, hh*8")4つ打ちキックの下で流れる8分音符ハット引用符内のコンマはシーケンスをレイヤーします。コンパクトなstack()のようなものです。
note("<c2 eb2 g1 bb1>").sound("sawtooth").lpf(500)毎サイクル新しいルートへ動く暗いフィルター付きベースライン山括弧はサイクルごとに交替します。lpf(500) はノコギリ波を抑える500 Hzローパスフィルターです。
sound("bd").euclid(3, 8)トレシージョ:8ステップの1、4、7でヒットユークリッドリズムは3ヒットを8ステップへ可能な限り均等に配置します。キューバン・ソンからEDMまで使われます。
note("c4 e4 g4 b4").rev().fast(2)毎サイクル2回演奏される下降アルペジオ変換は左から右へ連鎖します。パターンを反転してから速度を倍にします。

ライブコーディングを始める方法

  1. ドラム、メロディー、ベースライン、ポリリズムのスターターをクリックし、コードを埋め込みStrudelエディターへ読み込みます。
  2. エディター内の再生ボタンを押します(ブラウザーでは音を始める前にクリックが必要です)。
  3. 再生中にコードを編集します。サンプル名を変え、イベントに*2を加えるか音符を入れ替え、Ctrl+Enter(MacではCmd+Enter)で再評価します。
  4. stack()でパターンを追加し、上の早見表にあるfast、slow、rev、euclidで形作ります。
  5. パターンがスケッチを超えたら、完全版Strudelで開き、音色ブラウザーとビジュアルを含む環境を使います。

StrudelライブコーディングFAQ

StrudelとTidalCyclesの違いは何ですか?
TidalCyclesはHaskellで書かれ、通常SuperCollider合成エンジンと組み合わせる元祖のパターン言語です。Strudelは同じパターンシステムをJavaScriptとWeb Audio APIへ移植する公式姉妹プロジェクトで、現代的なブラウザーならインストールなしで動きます。パターンと概念はほぼそのまま両者間で使えます。
なぜスターターボタンはエディターを再読み込みするのですか?
StrudelはURL経由でプログラム全体を受け取れます。パターンのソースは#記号の後のアドレスにbase64エンコードされます。各スターターボタンはそのパターンを含む新しいURLへ埋め込みエディターを向けます。完全版Strudelを開くリンクが現在のパターンを引き継げる理由もこれです。
エディターで再生を押すまで音が出ないのはなぜですか?
ブラウザーは、音を生成するページをユーザーが操作するまで、すべての音声をブロックします。これは自動再生保護です。Strudelフレームは独自のページなので、最初の再生クリックはエディター内で行う必要があります。その後はコードを再評価するだけで止めずに音楽を更新できます。
サイクルとは何ですか?
サイクルはTidalとStrudelにおける音楽時間の単位です。既定テンポでは約2秒の繰り返し時間幅で、すべてのパターンはこれを基準に測られます。bd hh sd hhのような引用符付きシーケンスは1サイクルを等分し、fast(2)は2サイクル分を1つへ入れ、山括弧はサイクルごとに1つの値を配ります。
algoraveとは何ですか?
algoraveは、演者がコードを書いて音楽(多くの場合ビジュアルも)をライブ生成する音楽イベントです。通常は画面を投影し、観客がソースの変化を見られるようにします。この語は2012年頃にTidalCyclesコミュニティで生まれ、今では世界中でalgoraveが開催されています。
Strudelは無料ですか?なぜフレームに埋め込まれているのですか?
はい。StrudelはStrudel/TidalCyclesコミュニティがAGPL-3.0ライセンスで公開する無料のオープンソースソフトウェアです。公式strudel.ccエディターを埋め込むことで、コードベースを独自オリジンでこのサイトと明確に分離しながら、コピーではなく本物で常に最新のREPLを提供できます。