Strudel知ってる?
Strudel 知ってる?
この記事は pyspa Advent Calendar 2025 の 20 日目の記事です。
こんにちは、私です。
今年も読書を継続してたのでその話(主にコードブッダの話)を書こうかなととも思ったのですが、少しテクノロジーよりな話でもいいかなと思いStrudelの話をしたいと思います。
Strudel とは
Strudelはいわゆるライブコーディング環境です。
StrudelはあのTidalCyclesの作者であるAlex McLean氏と、Web技術、音楽インタラクションなどに精通したFelix Roos氏の協働によって開発されました。
Strudelの最大の特徴はWebプラットフォーム上で完結する統合環境という点です。
TidalCycleはHaskellでパターンを記述するため、環境セットアップのためにはGHCやオーデイオエンジンであるSuperCollider、SuperDirt といったミドルウェアもセットアップしなければならず、導入障壁の高さが問題でした。 Strudelはその課題を見事に乗り越えています。
音楽だけではなくビジュアライゼーション部なども高いレベルで統合されておいます。 また最初から充実したサウンドバンクも用意されており、環境セットアップ無しにサイトにアクセスするだけですぐにコーディングをはじめることができます。 TidalCyclesユーザーはもちろんのことこれからライブコーディングを始めたいと思う人にもオススメできる環境です。
TidalCyclesと大きく違いコードはJavaScriptで記載します。TidalCyclesでは $ で関数適用をしていきますがStrudelではメソッドチェーンを使います。
choppingしたbreak beatを鳴らす例は以下のようになります。
samples('github:yaxu/clean-breaks')
s("amen/4").fit().chop(16).cut(1)
.sometimesBy(.5, ply("2"))
.sometimesBy(.25, mul(speed("-1")))
上記はランダム頻度を指定する関数 sometimesBy を適度に挟んでランダムなビートを鳴らします。
上記では50%で2倍速、25%で逆再生になります。
パターン関数だけでなく、音響合成の関数もかなり用意されており困るような事はあまり無いと思います。
高度なライブコーディングできるStrudelの設計思想は、TidalCyclesのみならず、過去10年間にわたるWebベースのクリエイティブコーディングの蓄積の上に成り立っていると言えます。
- JavaScriptによるメソッドチェーンベースのコードの採用
- Web Audio APIの本格採用
- Web MIDI APIによるMIDI出力
- ビジュアルライブコーディング環境 Hydraとの相互運用
- 音楽再生のための高度なスケジューリング
今後はWASMの活用なども計画されていたりなど更に高度な音響合成も可能になっていくでしょう。
内部的には色々なコンポーネント分かれており、pnpmのworkspaceで管理し、モダンな開発環境になっています。 開発言語はTypeScriptではなくJavaScriptベースですが、興味がある方は見てみると面白いと思います。
Strudelの情報
主に公式サイトが情報源ですが、Redditのライブコーディングサブレディットなどでも得ることができます。
またYouTubeで strudel で検索すると実際にどのようなコードで演奏しているかなども見ることができます。 恐らく検索するとSwitch Angel氏の演奏がヒットするので参考にしてみると良いでしょう。
実際に自身で曲を作る際には、標準のサウンドバンクで始め、そのあと自分で作成したサウンドバンク(ガバキックなど)に変えていくと良いでしょう。
AIとの共創
コードで曲を作っていくということはAIを使ったコーディングの可能性も高まります。
AIと共創するため既にStrudel MCP Serverが存在しています。
またWebのUI側にAIのパネルを追加したものstrudel-djも存在します。
安定して良い感じになるかというとまだまだこれからかも知れませんが、Strudelのコード、パターンを上手くコンテキストとしてAIに送信できればいろんな事ができるようになるかも知れませんね。
最後に
あ、最後に「ヘレディタリー 継承」がYouTubeで無料公開されてるので絶対に見ましょう。