[CCLab21春] オーディエンスの趣向に合わせたその場限りの音楽

慶應義塾大学徳井直生研究室 活動報告

本記事は慶應義塾大学徳井研究室 — CCLabの2021春学期の活動報告も兼ねたものとなっています。

目次

  1. はじめに
  2. x-DJ
  • DJ Software + Spleeter
  • Spotify APIによるオーディエンスの趣向の収集
  • Variable Flavor Remix

3. 個人

  • やってみた
  • 卒業プロジェクト

4. 最後に

はじめに

今期でCC-Labに所属して3期目となりました。今学期も全学期と引き続きx-DJプロジェクトの活動をしながら、卒業プロジェクトについても考えた学期となりました。

x-DJでは今期は観客のSpotifyアカウントから好みの曲などを取得し、それをDJやその他の音楽パフォーマンスに活かすというアプローチをしました。これの背景としては、先学期より続いているコロナウイルスによる対面での音楽パフォーマンスが難しいという事情があります。DJによるライブ配信なども多い中その中でもいかに観客とパフォーマー間のコミュニケーションを増やすか、あるいはオンラインだからこそできる新しいパフォーマンスの形などを模索しました。

個人単位では先学期に立てた目標の一つであった自分のSpotifyのプレイリスト内の曲から機械学習モデルを用いて特徴量を抽出し可視化するサービスの作成に取り組みました。また、来期の卒業プロジェクトで取り組む内容の決定にも取り組みました。x-DJとの関連も含めてユーザーそれぞれのSpotifyプレイリストの曲の試聴音源からサンプリングをしその場でサンプリング作品を作成できるウェブプラットフォームの作成に取り組むこととなりました。

それぞれについて詳しく書いていきたいと思います。

x-DJ

x-DJでは前期まで取り組んでいた、機械学習を用いた楽曲選択やOnline B2Bに継続して取り組むのではなく、フレッシュに新しいことを始めるところから今期の活動がスタートしました。

DJ software + Spleeter

最初は音源分離ライブラリであるSpleeterに魅力を感じ、これをDJソフトウエアに組み込むことを考えました。音源分離の技術を取り入れることで新しいDJパフォーマンスの可能性やミックのクオリティの向上を意図していました。プロトタイプとして、Spleeterを前期に西門がCycling ’74 Maxで作成したDJインターフェースに組み込んだものを作成しました。

Spleeterを組み込んだDJインターフェース

しかし、作成段階で市販のDJソフトウエアのVirtual DJには音源分離の技術が組み込まれていることに気づき、取り組んでいることに新規性がないためこの取り組みは中断となりました。また、Virutal DJに新鋭の音源分離の技術が組み込まれているのにも関わらずその技術を使用しているDJがあまりいないことにも疑問を感じました。新しい技術があってもそれをDJプレイに取り組むことが容易でなければ使われるようにならないのではという議論をプロジェクト内で行いました。これらの理由からプロジェクトのアプローチの方針を変えることになりました。

Spotify APIによるオーディエンスの趣向の収集

続いて取り組んだものが、Spotify APIを使用してクラブなどのイベントのオーディエンスの音楽の趣向データを取得し、それをDJプレイに活かすことを可能にするウェブプラットフォームの作成でした。オーディエンスにQRコードを読み込んでもらうことでそれぞれのSpotifyアカウントからそれぞれのお気に入りの曲や、それらの曲のジャンル、Dancabilityなどの数値を取得しそれを可視化するようなものです。

DJがその日のオーディエンスの音楽の趣向をこういった形で把握することでそれを選曲に役立てることが可能になると考えました。

ここでは私が主体となってプロトタイプをPythonのウェブフレームワークであるFlaskを使用して作成しました。

取得したお気に入りの曲のリスト
取得した曲をジャンル別に集計しグラフ化

研究会の皆にも試してもらいしっかりとそれぞれのお気に入りの曲を収集することができました。しかし、ここで課題としてプロジェクト内で挙がったのが、集めた曲を元に実際にどういった選曲の提案などをDJにすれば良いのかということでした。ストリーミングサービスが主流となった影響か人の音楽の趣向は以前と比べて幅広く多様なものとなっているように感じます。J-Rockを聴いている人もいればK-popの人やdubstep, クラシックなどを聴いている人もいる中で全員が満足する曲を提案するのはとても難しいというものでした。教授の徳井さんも以前に似たことに取り組んだことがあり、その際にも結果的に全員の「最大公約数」的な選択、当たり障りのない選曲になってしまうことが課題だと仰っていました。

Variable Flavor Remix

どうすれば全員を満足させられるようなパフォーマンスができるかということを考えたときに、オーディエンスそれぞれのお気に入りの曲を混ぜ合わせ一つの楽曲として提供できれば良いのではないかと考え、作成しているものが、現在x-DJがメインで取り組んでいる、Variable Flavor Remixになります。

複数のオーディエンスのお気に入りの曲からループに適した箇所を抽出し、それらにSpleeterをかけたものを混ぜ合わせるというものです。どの曲から抽出したループを使うかもコードやSpotify API経由で取得できるDancabilityなどの値を判断基準に自動で選ぶようなシステムを現段階では想定しています。ただ、ループ選択をパフォーマーに任せたパフォーマンスもとても興味深いものになるとプロジェクトで話しており、そちらも方向も今後検討していく予定です。

Variable Flavor Remixのイメージ図

実装計画

Variable Flavor Remixシステム図

Web

「Spotify APIによるオーディエンスの趣向の収集」で作成したウェブプラットフォームをもとにgoogleのFirestoreにオーディエンスのお気に入り曲情報を保存し、そしてリアルタイムプッシュをします。

Python

4のPython側ではプッシュされた情報をもとに試聴音源(約30秒)をダウンロードします。

試聴音源をまずは音源分離ライブラリであるSpleeterやopenunmixerを使用してドラム、ベース、ボーカル、その他の4トラックに分離します。

分離した音源それぞれからループ抽出を行うのですが、それには論文Nonnegative tensor Factorization For Source Separation Of Loops In Audio(smith, goto)で使われているloopextractorを使用しています。波形のパターンとダウンビートをもとにループに適している箇所を検出するものとなっています。

Max

Cycling 74 Maxのインターフェース

抽出したループ音源をOSC経由で受け取り、再生できるようなインターフェースをMaxで作成。

デモ

Variable Flavor Remixは9月のCCLab主催の展示会にての展示に焦点をあているため、完成にはまだ至っていませんが、8月の時点ではどのような楽曲が最終的に出来上がるかのテストを含めたデモを作成しました。

展示会に向けて

Web、Python、Maxそれぞれのパーツはできていますが、まだその間の連携の実装ができていないのでそこに取り組む必要があります。

また、デモ動画からわかるように、出来上がる楽曲のクオリティがまだ低いためそちらの改善にも努める必要があります。クオリティの向上のために以下のことに取り組む必要がありそうです:

  • ループのクオリティの向上

デモ動画には音源分離→ループ抽出したものを使用していますが、順番を入れ替えることでクオリティの向上を図れると考えています。また他のライブラリを使うなどの模索も必要そうです。

  • ループ選択アルゴリズムの実装

同じキーのループを重ねわせることでより違和感のない楽曲になると思いますので、キーに基づいた選択ができるようにする。

  • Max上での頭拍を合わせた再生

現状Max上で頭拍を合わせた再生はできているはずですが、いまいち精度が高くないため実装の見直しが必要そうです。

個人

やってみた

今期からCCLabで始まった取り組みとして、やってみたという個人個人で興味のあるものを実装するというものがありました。

自分はSpotify APIを使用し、ユーザーのお気に入り曲を特徴量に合わせてマッピングするウェブサービスの作成を行いました。

こちらもSpotify APIを使用し、ユーザーのSpotifyのお気に入り曲の試聴音源から機械学習モデルを用いて楽曲の特徴量を取得、それをグラフ化するというものです。モデルは音楽ジャンルの判別のために学習されたもの(M1 小林作成)を使用しました。特徴量は何百次元のデータ出てくるので、それをt-sneを使用して2次元に落とし込んだものをグラフ化しました。

実際に出力されたグラフ

目的

目的としては、自分が普段聴いている曲の特徴量を可視化することで、特徴量の数値にどれほど納得感があるかを確かめたかったというのがあります。

考察

可視化されたグラフを見てもイマイチ曲の特徴量が自分で納得できるようには感じませんでした。tsneのパラメータをいじることでわかりやすくクラスタを作成することは可能ですが、どうしても元のモデルの目的であるジャンルごとに特徴量にクラスタが分けられてしまうと感じました。自分の目的である「雰囲気」を機械学習モデルに検出させることは難しい、また人によって「雰囲気」の定義も違うので誰にとっても満足のいくレコメンデーションを機械学習モデルに行わせるのは難しいと改めて感じました。

最近になって、自分の求めている曲が見つからないからこそ見つけた時の感動があるというような見方もするようになり、機械学習モデルによる楽曲レコメンデーションの追求は一旦中断となりそうです。

卒業プロジェクト

機械学習モデルによる楽曲レコメンデーションへの熱がいったん冷めたこともあり、卒業プロジェクトでは今期新しく考えたものの作成をすることに決めました。

それは、Spotifyアカウント上の曲の試聴音源を使用したサンプリングやリミックス作品を作成できるウェブプラットフォームです

x-DJで現在取り組んでいるVariable Flavor Remixの延長線上にあるようなものです。似たようなものにUnmixerというものがあり、そちらを参考にしながらさらに拡張したものの作成を考えています。

unmixer

Unmixerでは楽曲の音源ファイルをアップロードすることでその曲からループを抽出してくれ、それを用いてリミックス作品をウェブ上で作れるものになっています。

卒業プロジェクトではそれに加えて以下の機能を付け加えたいと考えています:

  • Spotifyでユーザーがお気に入りに登録している試聴音源を使用できる機能

ストリーミングが主流な今では実際に音源ファイルを持っている人は少なく、それがリミックスやマッシュアップに取り組む障壁となっていると思うので、それを取り除く狙い。

  • ループ音源に対してのSpleeterなどの音源分離システムの使用

Spleeterを使用し楽器ごとのループに分離することでよりクオリティの高い最終作品を作成することを可能にする。

  • ループ選択のサポート

抽出したループをキー順やジャンルごとに並べたりするインタフェースを通してより質の高い作品の制作を可能にする。

目的

作成の目的としては主に2つあります:

  • 自分の知ってる曲からサンプリング、ミックスして楽しめるプラットフォームを通してDJ、DTM、サンプリングなどの楽しさに触れてもらう

海外に比べてDJやDTM、サンプリングなどへの興味は日本薄いように感じる中で、こういったものに興味を持つ人が増えればと思っています

  • 新しい形の音楽パフォーマンスなどのインスピレーションになれば良い

既存のDJパフォーマンスや音楽パフォーマンスを超えるような新しいもののインスピレーションに。

最後に

今期は今までで一番手を動かし実装を進めた期となりました。自分は来期で大学の最後の期ということもあるので、今までより一層手を動かしいければと思います。特に卒業プロジェクトは自分が大学に入って取り組んだWebプログラミング、そして音楽を組み合わせた集大成となると思うので、しっかりと作り切りたいと考えています。

以上で今期の活動報告となります。文書量がかなり多くなってしまい申し訳ありませんが、最後までお読みいただきありがとうございます。

--

--