ExSampling: a system for the real-time ensemble performance of field-recorded environmental sounds
ExSampling は、フィールドレコーディングでサンプリングされた環境音を用いたリアルタイムの音楽パフォーマンスのための、録音アプリケーションとディープラーニング環境の統合システムです。
ディープラーニング (MobileNetV2 の ESC50環境音分類モデル) による Ableton Live (DAW アプリケーション) 上のトラックへの自動サウンドマッピングにより、フィールドレコーディングをリアルタイムパフォーマンスに応用し、録音者、作曲家、演奏者の間にインタラクションを生み出します。
システム概要

ExSampling は3つのコンポーネントで構成されています。
- Web 録音アプリケーション: フィールドレコーダーが持ち歩き、環境音をリアルタイムに録音する。録音された音声データはネットワーク経由で推論サーバーへ送信される。
- Python 推論サーバー: 受信した音声データに対してディープラーニングモデルを実行し、環境音のカテゴリを推定する。推定結果は OSC (Open Sound Control) メッセージとして Ableton Liveへ送出する。
- Ableton Live(パフォーマー側): Max for Live等でOSCメッセージを受信し、分類カテゴリに対応するトラックにアサインされている音源を入れ替える。パフォーマーはリアルタイムで送信されてくる音源がを用いてアンサンブルパフォーマンスを行う。

録音者が野外で拾った音が、数秒のレイテンシでステージ上で用いられるサンプラーの音源に反映される仕組みには位置情報が組み込まれており,Ableton Live の画面上から周辺の航空写真が確認できる。パフォーマーは音を聴くか,その景色を見てどんな音が録音されてきたのかを確認する。
この構造により、「録音者(フィールドレコーダー)」と「演奏者(ステージ上のパフォーマー)」の間に有機的なインタラクションが生まれます。
分類モデルのアーキテクチャ

分類モデルには daisukelab 氏の ml-sound-classifier をベースとした MobileNetV2 を採用しています。
MIDIトラックへのマッピング

Python推論サーバーがOSCメッセージをAbleton Liveへ送出し、分類カテゴリに基づいてMIDIトラックのクリップが自動トリガーされます。
具体的な流れは以下の通りです。
- モデルが予測したカテゴリ(例:
bird,rain,sea_waves)をカテゴリID(整数)に変換 - OSCアドレス
/exsampling/categoryにカテゴリIDをアタッチして送信 - Ableton Live 側(Max for Live デバイス)でOSCを受信し、対応するMIDIノートをトリガー
- 各MIDIトラックにはあらかじめフィールドレコーディングされた環境音クリップ(サンプラー音源)がロード済み
- トリガーされたクリップが演奏音として再生され、パフォーマーがボリュームやエフェクトでリアルタイムに操作
ESC-50の50カテゴリすべてをAbleton Liveのトラックに直接1対1で割り当てるのではなく、パフォーマンス文脈に合ったカテゴリ群を選択してトラックを構成します。これにより、演奏者は事前に「どのような音が来るか」を把握した上で音楽的な構成を設計できます。
BibTex
@inproceedings{kobayashi_NIME20_58, author = {Kobayashi, Atsuya and Anzai, Reo and Tokui, Nao}, title = {ExSampling: a system for the real-time ensemble performance of field-recorded environmental sounds}, pages = {305--308}, booktitle = {Proceedings of the International Conference on New Interfaces for Musical Expression}, editor = {Michon, Romain and Schroeder, Franziska}, year = {2020}, month = jul, publisher = {Birmingham City University}, address = {Birmingham, UK}, issn = {2220-4806}, doi = {10.5281/zenodo.4813371}, url = {https://www.nime.org/proceedings/2020/nime2020_paper58.pdf} }