MIDI Bleep Blop(パッケージ名 midi-bleep-bop)は、ハッカソンの運営パートナーである IoTone による MIT ライセンスの TypeScript プロジェクトです。Snap Spectacles のレンズから MIDI ノートを生成し、実機シンセや DAW(KORG Volca、GarageBand、Logic Pro、Ableton が参照されています)で鳴らせます。これまで扱ってきた視覚系スターターに対する、音楽的でクリエイティブな対の存在で、音にまつわるアイデアならハッカソンの良い起点になります。

先にお断り:これはできたばかりの実験的なプロジェクトです。バージョンは 0.1.0、コミット数はわずか、登場から数日で、活発に開発中です。完成したパッケージではなく、クローンして改造する「これからに注目」のスターターとして捉えてください。

面白いのはここ:なぜブリッジがあるのか

このアーキテクチャこそが本当の学びです。Spectacles はハードウェアと直接 MIDI を話せません。理由は具体的です。Spectacles の Bluetooth API には createBond() のサポートがなく、市販の BLE-MIDI 機器は例外なくボンディングを必要とするため、ボンディングが必要なペリフェラルは無言でハングします。したがって、レンズからハードウェアへの直接 MIDI は現状では実現できません。

MIDI Bleep Blop はコンパニオンブリッジでこれを回避します。

Spectacles レンズ ──ws/wss──► ブリッジ(Node または Bun) ──► CoreMIDI / ALSA / WinMM ──► シンセ

レンズは Lens Studio の InternetModule WebSocket API を基にした SpectaclesWebSocketTransport を使い、ブリッジは JZZ ライブラリ経由で OS の MIDI サブシステムと話す小さな Node/Bun サーバーです。これは応用の効くパターンでもあります。Spectacles が直接届かないあらゆるハードウェアに対して使える「レンズが WebSocket でコンパニオンアプリと話す」手法そのものです。

リポジトリの中身

TypeScript のモノレポです。ハッカソンで重要な部分は次のとおりです。

  • lens/MidiBleepBop.lspkg — 配布用の Lens Studio パッケージ。MidiClientComponentMidiClient プレハブ、バンドル済みのコア+トランスポートスクリプトを含みます。自分のレンズに組み込めます。
  • lens/TesterLens — エンドツーエンドの Spectacles ‘24 Lens Studio プロジェクト。診断パネルと、受信 MIDI に反応する NoteCubeFlash を備えます。
  • bridge/ — Node/Bun の WebSocket→MIDI サーバー。
  • examples/docs/ — 実行可能なサンプルと、規模の割に充実したドキュメント(アーキテクチャ、ブリッジ、ワイヤープロトコル、Spectacles API、グルーヴ)。

上位の構成要素として、ChordSender グルーヴジェネレーター(triad、acid、house、trance のパターン)、PianoKeyboard コンポーネント、名前付き CC パラメーター用の DeviceCatalogComponent(例:Volca Bass の「Cutoff EG intensity」)があります。

動かしてみる

  1. リポジトリをクローンし、npm installnpm run buildnpm test で vitest が走ります)。
  2. MIDI の出力先を選びます。macOS でハードウェア不要の経路は、Audio MIDI 設定で IAC ドライバを有効化し、GarageBand/Logic/Ableton へ送ります。ハードウェアなら WIDI Master / KORG BLE-MIDI ドングルでシンセへ。
  3. ブリッジを起動します。例:GarageBand のコードループなら npm run play:gb、または node bridge/dist/cli.js --device "IAC Driver Bus 1" --log debugcurl http://127.0.0.1:8765/status で確認します。
  4. TesterLensLens Studio 5.9 以降(5.10 推奨)で開き、Project Settings → Experimental APIs を有効化して、Bridge URL にマシンの LAN IP を設定します。localhost は PC ではなくグラス自身を指します。
  5. Preview で Play を押し、ステータスが connecting → open に変わり、キューブが MIDI に反応するのを確認します。あとは MidiClientComponent を自分のレンズに入れ、sendNoteOn / sendCC / sendPitchBend を呼びます。

注意点

  • できたばかりで実験的。 v0.1.0、コミットは 1 桁、未解決の Issue が 9 件。粗さがある前提で。
  • npm パッケージはまだ公開されていない可能性があります。 リポジトリのルートは private のため、npx ではなくクローン&ビルドを起点にしてください。
  • コンパニオン PC が必要です。ブリッジはグラス上では動きません。Spectacles 実機は最初は任意で、Preview モードで動きます。
  • プラットフォームの注意: ws:// は Experimental APIs が必要で公開できません(公開レンズは wss:///TLS が必要)。デバイス探索はなく(IP は手動設定)、認証もないため LAN 上の誰でも MIDI を送れます。macOS が最も実績のある経路です。

関連リンク

ご質問はお問い合わせページからどうぞ。

// ニュース一覧へ戻る