[CC Lab 20春] コロナの息苦しさの中

初めてのMedium投稿になります。
慶應義塾大学環境情報学部B4のRyo Nishikadoです。今回は私が所属しているComputational Creativity Lab(以下CCLab)の2020年春学期での活動についてまとめたものを公開したいと思います。
注.本投稿はCCLabの最終課題を兼ねた内容になっています。

その前に、ちょっとした自己紹介と自身が所属してるプロジェクトについて説明を……

私は人間に備わる感覚機能である五感のうち、視聴触覚における表現の取り組みについて興味を持っており、VJやサウンドエンジニア(PA)、作品制作などの活動を行っています。CCLab内では自身の興味や活動と一致しているということもあり、

DJ文化のさらなる発展のために、機械学習の分野からあらゆるアプローチを試みる

というのをテーマに研究や開発を行うX-DJ Projectのメンバーの一員として研究や開発などをしています。

X-DJ Projectは昨年2019年の春学期に発足し、CCLabに所属する前から親交があったYuga Kobayashi君と2人体制で進行し、今学期からは新たにRyo Hasegawa君を迎え、プロジェクトのテーマと個々人の問題意識を元に研究および開発などをしています。

昨年度は主にYuga君と一緒に、PoseNetと呼ばれる骨格認識の機械学習モデルを応用し、クラブなどの場で人間の動きに合わせて曲にアクションを起こすDJミキサーシステムであるMotion Crossfaderの開発や展示をおこないました。

Motion Crossfader(リンク)

また、CCLab内では自身のサウンドエンジニアとしての経験を生かして、イベントごとにPA(パブリックアドレス)を担当したりしています。

昨年のORF実行委員会特別企画 The x-Music Live ORF 2019

昨年のORFの特別企画ではサウンドエンジニアとしてスピーカーや機材、ケーブルの管理や結線図を書くなどして裏方として参加してました。

以下本題…
今学期取り組んだ内容、主にOnline B2Bツールの開発とtSA(track Select Assistant)の開発についてやその他述べたいと思います。

目次

  • Online B2Bツールの開発
  • tSA(track Select Assistant)の開発
  • tSA (track Select Assistant) (作品紹介、活動報告)
  • その他
  • 最後に

Online B2Bツールの開発

今年の2月から勢いが強くなった新型コロナウイルス(COVID-19)により、スポーツクラブやライブハウス、クラブなど営業や各種イベントの開催の中止など、人の密集が懸念される場の自粛が進み、あらゆる社会の動きが一時的にダウンするという事態に見舞われました。大学をはじめとする教育機関も例外ではなく、生徒たちの登校(キャンパス立ち入り)禁止、授業開始時期移行および授業の全面オンライン移行など、講師陣や生徒陣どちらも過去に体験したことない状況での対応を余儀なくされました。

そのような状況下にもかかわらず、CCLabは定例や作業日を当初予定していた4月頭から開始し、4月末から再開が決まった授業よりも早いスタートダッシュで始まりました。そして、毎学期3回行われるx-Music NightのCCLab担当回が4月18日に控えていました。

昨年2019年のCCLab主催のx-Music NightではSFCのキャンパスにて、Pioneer DJの方をお呼びしてDJワークショップおよびDJイベントを行う、SFC卒業生である細井 美裕さんをおよびして講演会を設けるなどして開催していました。前回や前々回とは異なり、コロナという前代未聞の状況下でフィジカルに会場を設ける事ができない、人を集めることができないという制約がある中で、今回はxMusicOnline vol.0.0と銘打ち、オンラインでのDJ/VJのイベントを開催するという流れになりました。

https://twitter.com/CCLab_SFC/status/1251122493642817538

当時Music Unity 2020やその他オンラインDJイベントなど、様々なアーティストが自身のパフォーマンスのライブストリーミングを行なっていました。まだ数々のオンラインストリーミングがイベントとしてのフォーマットが整っておらず、正解がない状況下かつコロナの影響の最中で、X-DJ Projectとしてどのようなアプローチができるか考えた時、人と人の物理的な距離がありながらも、つながりとしての距離を感じさせないような、コロナ禍ならではのDJパフォーマンスを行いたいと考えるようになりました。そういった中で、Rhizomatiks Researchの真鍋さんや徳井さんが初回(?)のStaying TOKYOでやっていたB2Bからインスピレーションを受け、物理的な距離が離れていてもDJ同士が繋がってこそできるOnline B2Bツールの開発および制作に取り組むに至りました。

※B2BとはBack to Backの略称であり、2人以上のDJが交代で曲をかけてDJをするパフォーマンス形態のことを指します。

今回は主にはPioneer DJ社が提供するDJソフトウェアである「rekordbox」と、「Max/Msp」(Max8)を使用しました。

※rekordboxをはじめDJソフトウェアでは自社が取り扱うコントローラー以外のコントローラーも使用できるようMIDI Settingの欄があるため、本ツールのシステムを使えばSeratoやTracktorといったrekordbox以外のDJソフトウェアでも同様なことはできると思います。

システム制作で用いたソフトウェアの画面

System:

まず、ホストとゲストそれぞれのPCを用意し、DJコントローラーをセッティングし、ゲストのDJコントローラーの演奏データであるMIDI信号をOSC(OpenSound Control)と呼ばれる音楽演奏データ用の通信プロコトルを用いて送受信できるフォーマットに変換します。変換した演奏データをゲスト側のMaxからOSCを通して送信し、ホストがMax経由でゲストから送信されたOSCを受信し元のMIDI信号へ復元。復元されたMIDI信号をMaxからのMIDI Outとしてrekordboxに認識させ、遠隔からホストのrekordboxでコントロールできるするというものです。
(文章だけでは分かりづらいのでイメージ図を載せておきます)

イメージ図を見ていただければ、文章よりイメージが湧きやすくなると思います。ゲストのコントローラーの信号をホストのPCではMax経由で仮想的に入力し、ホストのPCには実質2つのコントローラーが接続されているということになります(構造自体はとてもシンプルです)。Main Outの音や画面のUIなどの情報はzoomの機能を用いて共有しました。

そして、xMusicOnline vol.0.0ではこのシステムをメインに用いてYuga Kobayashi君とRyo Hasegawa君の二人によるOnlineB2Bのパフォーマンスを行いました。(主にシステム制作を行った自分はVJとして参加しました。)

配信時の様子

Issue:

このシステムの制作自体は全て自分単独の環境で行なっており、OSCでのコントローラーの情報の送受信のパケットロスによるコントローラーのツマミの値の抜け落ちなどは見受けられなかったのですが、いざこれを使ってパフォーマンスをするとなると、大きく2つの問題点が浮き彫りになりました。

まず、最初に挙げられるのはオーディオ関連の問題です。本来DJを行うときはフロアに聞かせるためのMain Outと呼ばれる出力系統と、次の曲の頭出しを行うためのプレイヤーの確認用のHeadphone Outの出力系統に別れており、DJはこの2の出力系統を交互に確認しながらDJプレイを行います。

しかし、今回開発したシステムでは音声の共有はzoomで行なっていたため、一系統の音声出力のみの対応となり、ゲスト側がホスト側のrekordboxからのMain Outのみしか共有されず、Headphone Outが聞こえないという問題がありました。

それにより、ゲスト側は曲選択ができるものの、音の頭出しをするときに聴覚情報を用いて確認できないという事になります。

その次にDJコントローラーのマッピングに関する問題です。DJソフトウェアは基本的に自社が取り扱うコントローラー以外のコントローラーも使用できるようMIDI Settingが行えるようになっており、それに付随するDJコントローラーのマッピングはDJ Tech Toolsといった海外のDJの技術コミュニティなどで公開されていることがあります。しかし、今回のツール開発において、当時MIDI信号の送受信によるB2Bを行うという技術関連の記事が全く見当たらず、ほぼ独自にフォーマットやマッピングラッパーを制作して、各々のコントローラーに最適化したセッティングを行うのにかなり時間を要してしまいました。それに加え、rekordboxではジョグホイールをはじめ、いくつかの機能に対応するマッピングが用意されておらず、マッピングをするにもフェーダーやバンドEQのHigh、Mid、Lowそしてフィルターのノブ、Hot Cueといった最低限の機能のみの対応となってしまいました。

※SeratoやTracktorを含め、他のDJソフトウェアでの検証は行なっていないため、この問題に関してはrekordboxのソフトウェアの仕様上による者の可能性もあります。

xMusicOnlineでのパフォーマンスの時には、DJの二人があらかじめプレイリストを共有し、秒数やrekordbox上の曲の波形からテンポを合わせる。念密に情報共有を行い工夫を凝らすなどして対応してもらいました。

上述したパフォーマンス後に浮き彫りになった問題についてですが、以下のような手法を取ることで解決するのではないかと思います。

オーディオのMaster Outしか共有されない問題に関してはDJソフトウェア内のオーディオ設定とSoundflowerBlackHoleなどの仮装オーディオドライブを連携させループバックのルーティングを行い、ホストとゲスト間で二系統以上の音声の送受信をVoIPなどで組み込むことで解決できるのではないかと考えられます。(MaxのJitterを応用すれば擬似的にVoIPのシステムを再現することで可能です。)

※VoIPとはVoice over Internet Protocolの略称であり、IPネットワーク上で音声通話を実現する技術のことです。

各種マッピングに関する問題に対しては、使用するDJソフトにこだわらず、柔軟性の高いDJソフトウェアを使用するというのが対処法になるのではないかと考えます。

今回用いたOnlineB2Bの一連のシステムはGitHubにて公開します。使ってみたいなどということがあればレポジトリをForkして使用、Issueを投稿するなどしていただければと思います。
https://github.com/ryo-simon-mf/max-OnlineB2B#max-onlineb2b

tSA(track Select Assistant)の開発

track Select Assistant(以下tSA)はAIを用いたDJのための選曲援助システムです。このシステムを簡単に説明すると、30秒の音源をサンプルとして取り込み、自分のプレイリストの中から取り込んだサンプル音源の特徴量に近い5つの曲を提案し、選曲を手助けするというものになっています。この取り組みではデータセットやモデルの学習に関してはYuga Kobayashi君が、特徴量抽出に関してはRyo Hasegawa君が行い、自分は主に2人が作った部分をどう操作していくかというUIなどのフロントエンドとパイプライン周りの一部バックエンドMaxでの実装を主に担当しました。

UI画面

tSAのコンセプトや構想についての大まかな内容は別途Yuga Kobayashi君の記事で説明されています。ここではこの取り組みにおいて自分が担当した部分について説明します。

自分が担当した部分は、具体的には30秒のサンプルを検証用に保存するサンプリングパートとサンプルの音源と自分のプレイリストの曲の中で特徴量に近い5つの曲を提案するサジェストパート。大きく分けると2つに別れています。

Sampling Part:

サンプリングパートでは、オーディオインターフェース経由で30秒サンプリングするモードと自分の手持ちの曲から好きなポイントから30秒サンプリングできるモードがあります。オーディオインターフェース経由でサンプリングする場合はDJなどが操作しているDJミキサーから出力される音源をオーディオインターフェース経由で取り込み、手持ちの曲からサンプリングを行う場合は録音の始点を自分で決められるようになっています。それぞれ用意してあるバッファーに格納し、検証用にwavファイルとして保存できるようになっています。

DJ自身がクラブに行く前にセットリストや曲順などを仕込む時にこのシステムを使うように想定したのはもちろんのこと、リアルタイムでクラブで使用するのも前提にシステム構想をしていたため、30秒サンプリングするパートには2つのモードを用意しました。

Suggest Part:

サジェストパートでは先ほどサンプリングした検証用データ(wav)と、あらかじめ作っておいた自分のプレイリストのリストデータ(csv)をドラッグアンドドロップし、スクリプトを実行させることで、サンプリングした特徴量と近しい5曲が提案されます。Max単体では機械学習などで主に使われるPythonを使うことはできないため、Max8から搭載されたNode for Max経由でpython shellというnodejsのモジュールを用いてPythonのファイルを実行しています。

System flow image

動作の様子は以下のデモ動画にて…

デモ動画(前半英語、後半日本語)

システムとしては制作段階だということもあり、対応するジャンルがまだ少ない、プログラミングやテックへの理解が高くないDJに使ってもらうには敷居が高いなど様々な問題があると思いますが、既存のDJソフトウェアに組み込めるようにするなどアップデートを続けられたらと思います。

また、現在はこのシステムを用いてYuga Kobayashi君主導でシステムの評価などを行なっています。気になる方は連絡していただければと思います。

その他

以上の2つのシステムの開発以外に研究会で行ったことですが、研究会内の論文輪読ではワシントン大学とFacebookの共同リサーチであるConsistent Video Depth Estimationについて発表しました。

https://roxanneluo.github.io/Consistent-Video-Depth-Estimation/

この研究では畳み込みニューラルネットワークを使用して従来の深度推定よりも詳細な奥行きを推定することを可能とした単眼カメラによる深度推定モデルを開発しています。

単眼映像を入力として、(潜在的に遠い)フレームのペアをサンプリングを行い、事前に訓練された手法を用いて深度を推定し、単画像深度推定モデルを用いて初期深度マップを得る。ペアにした画像から,前方後進一貫性チェック付きのオプティカルフローを用いて対応関係を確立して、これらの対応関係とカメラのポーズを用いて,3次元の幾何学的制約を抽出。3次元の幾何学的制約を2つの損失に分類し空間損失と視差損失に分け、それらを使用して標準的な誤差逆伝播法を行う。これによりビデオの複数のフレーム間の幾何学的不整合誤差を最小化する。これを繰り返し行いビデオの深度推定に反映することで従来よりも詳細な奥行き推定を可能にしています。

Online B2Bツールの開発の冒頭でも述べましたが、新型コロナウイルス(COVID-19)の影響のより人の密集が懸念される場の自粛が進んでいます。また、都心では感染者数が日に日に増えており、近々2度目の緊急事態宣言が発令がくるのではないかと考えられます。そのような状況下で、現在の我々のコミュニケーションは実際に対面して会話をするような3Dコミュニケーションから一転し、テレワークやオンライン授業によるモニターやカメラ越しに会話をするという2Dコミュニケーションを強いられている状況であると言えます。そういった中でこの深度推定モデルを用いることでモニターなどの平面画面に立体的なエフェクトをかけることを可能にし、奥行きをより感じられるコミュニケーションになればコロナの影響前にはなかった平面上でのコミュニケーションによる閉鎖感は少しは拭えることができるのではと感じます。そのほかにも、クラブやライブなど音楽イベントが自粛になってる中で、この技術を用いてアーティストの映像を組み合わせオンラインイベントを行うなど、今だからこそこの技術を用いることでできるエンターテイメントなどが生まれるのではないかと考えます。

(この論文をピックアップした理由としては、CCLab内でX-DJ Projectの他にx-visualのグループにも参加しており、この論文のサーベイからアイデアスケッチを行なっていたことから選びました。今学期はx-visualの方はなかなかコミットできなかったので来学期以降はもっとコミットできるように頑張りたいと思います。)

論文輪読以外ではスクレイピングやデータ処理関連のコーディングや、2つの開発したシステムのパフォーマンス用のビジュアライズのプロトタイピング、音情報を学習するために音源ファイルをメルスペクトログラムという音特徴量に変換するためのpythonモジュールであるlibrosakapreなど、基礎的なことをベースに習得および実践、制作を行いました。また、とある企業からプレイリストなどの膨大なデータを提供していただき、それらのデータを学習するためのデータセットを必死に制作してました。夏休みの間はこのデータセットを用いて、新たに機械学習を用いてDJの選曲の良し悪しを評価できるようなAIを作れればと思います。それに加え、来学期はMixxxと呼ばれるコミュニティにより開発されたオープンソースのDJソフトに、今学期開発したシステムを組み込んで誰でも簡単に使用できるようにしたいと考えています。

最後に

最後まで読んでいただいた方はありがとうございます!
かなり技術に寄った内容になってしまいましたが、気になることがあればお気兼ねなくコメントに書いていただければと思います。

それではまた。

--

--