本プロジェクトは、ハウスミュージックにおける楽曲構成の決定要因や法則性を解明することを目的に分析を行うための環境である。本プロジェクトに関する論文はこちら。
.
├── Dockerfile # Omnizart用
├── docker-compose.yml # Omnizart用
├── requirements.txt # Pythonプログラムに必要なライブラリ
├── NATTEN/ # All-In-Oneの利用に必要なモデル
├── data/ # 実験用データ
├── images/ # 実験結果
├── notebook/ # 実験用プログラムのjupyter notebook環境
└── src/ # 実験用プログラム
└── scripts/ # 各種スクリプト
data/
は著作権の都合で一部のみpublicにしている。
src/
のプログラムを実行するには、必要なライブラリをインストールする必要がある。
pip install -r requirements.txt
もしくは、src/
と同じ内容のプログラムがnotebook/experiments.ipynb
に存在する。
実験用データはdata/
に適宜配置する必要がある。
また、実験用データはPROD版とDEMO版が存在しており、定数ファイルがsrc/data_const.py
にある。
src/experiment*.py
を実行するには、main
関数内の定数をsrc/data_const.py
に合わせてPRODもしくはDEMOを選択する。
本プロジェクトでは、ハウスミュージックの楽曲構成のセクションとして以下の4つを定義している。
Section | Description |
---|---|
Intro | 曲の導入部分 |
Drop | 曲における盛り上がり部分 |
Break | 曲の盛り上がり部分以外の部分 |
Outro | 曲の終結部分 |
各セクションと周波数特徴量の関連性の分析
- All-In-Oneを用いて楽曲のセグメンテーション情報を取得
- 楽曲から周波数特徴量(Spectral Centorid)を取得
- セグメンテーション情報から各セクションの周波数特徴量の平均値を可視化
各パートにおける各セクションと周波数特徴量の関連性の分析
- All-In-Oneを用いて楽曲のセグメンテーション情報を取得
- Demucsで楽曲を4パート(drums, bass, other, vocals)に音源分離
- RMSが閾値を下回る音源区間を除外
- 楽曲から周波数特徴量(Spectral Centorid)を取得
- セグメンテーション情報から各パートごとの各セクションの周波数特徴量の平均値を可視化
experiment2における各パートの有効時間を調査
- All-In-Oneを用いて楽曲のセグメンテーション情報を取得
- Demucsで楽曲を4パート(drums, bass, other, vocals)に音源分離
- RMSが閾値を上回る音源区間の長さ(有効時間)を取得
- 各パートにおける各セクションごとの有効時間を可視化
各パートにおける各セクションと音圧特徴量の関連性の調査
- All-In-Oneを用いて楽曲のセグメンテーション情報を取得
- Demucsで楽曲を4パート(drums, bass, other, vocals)に音源分離
- 楽曲から音圧特徴量(RMS)を取得
- セグメンテーション情報から各パートごとの各セクションの音圧特徴量の平均値を可視化
各セクションにおける各パートの音圧バランスの傾向を分析
- All-In-Oneを用いて楽曲のセグメンテーション情報を取得
- Demucsで楽曲を3パート(drums, bass, other+vocals)に音源分離
- 楽曲から音圧特徴量(RMS)を取得
- 3パートのセクションごとの音圧特徴量のバランスを3次元空間にプロットし可視化
各セクションのドラムの要素の傾向を分析
- Omnizartを用いて音源からドラムMIDIを取得
- 各セクションごとの各種ドラム要素の個数を集計し可視化
各ドラム要素の発音時刻の傾向を分析
- Omnizartを用いて音源からドラムMIDIを取得
- 各セクションごとの各種ドラム要素の個数とその時刻を集計
- 各ドラム要素の発音時刻を折れ線グラフからなるスパゲッティプロットとして可視化
各ドラム要素の発音時刻の傾向を分析
- Omnizartを用いて音源からドラムMIDIを取得
- All-In-Oneのテンポ推定結果を用いて楽曲の8小節の長さを計算
- 各セクションごとの各種ドラム要素の8小節ごとの個数を集計
- 各ドラム要素の8小節ごとの個数を折れ線グラフからなるスパゲッティプロットとして可視化
ドラムパターンの変化とセクションの変化の相関性について分析
- Omnizartを用いて音源からドラムMIDIを取得
- All-In-Oneのセグメンテーション情報からセクションの変化タイミングを取得
- ドラムMIDIにおける全ドラムイベントの間隔の長さを取得し、その標準偏差を閾値として、閾値を超えるドラムイベントの間隔がある場合をドラムパターンの変化として検出
- ドラムパターンの変化タイミングとセクションの変化タイミングの一致率をそれぞれが分母である場合について計算
- 一致率を可視化
ドラムパターンの変化を分母とした確率
セクションの変化を分母とした確率
Justin Wulf - [email protected]