🗂

発音タイミング全体の可視化

2023/02/06に公開

はじめに

発音タイミング全体の可視化をしよう!
ジャズの演奏はスウィングなど独特の演奏があり、ジャストなタイミングからずれて発音することがあります。そこで今回はジャズ演奏の発音タイミング全体を可視化することでずれをわかろう!という記事です。

【対象】ジャズのピアノの演奏
【手法】既存の発音時刻検出技術やビート解析技術を使って発音時刻やビート時刻を検出し、描画

プログラム

プログラムプログラム
プログラムの概要は以下の図で表しています。
program

使用データ

RWC研究用音楽データベース:ジャズ音楽よりNo.16 Jive(Piano Trio)
JiveJive
ピアノ、ベース、ドラムのピアノトリオの演奏のmp3です。

1. 発音時刻・ビート時刻検出

音源分離

Hybrid Demucs from Colabを用いて、ピアノ・ベース・ドラムで構成されたピアノトリオの楽曲からピアノ・ベースを抽出します。音源分離した音源ファイル
pianoピアノ音源
bassベース音源

時刻の検出

librosaを用いて、ピアノ音源から発音時刻・ベース音源からビート時刻を検出します。

  • ベース音源の音が小さいとビート時刻の検出がうまくいかないため、pydubを用いて、ベース音源を4デシベル音割れする程度に音量を上げます。

ビート時刻の調整

ビート時刻が一定の間隔で刻まれているようにするため、間隔を求めて中央値の1.5倍以上のとき、中央値を補うことで調整します。

2. ビート間隔内の発音時刻の検出および変換・ヒストグラム化

  1. ビート時刻の間隔にある発音時刻をビート時刻の間隔毎に求めたいため、発音時刻の直前のビート時刻のインデックスを検出します。
  2. 検出されたインデックスをもとに、ビート時刻の間隔にある発音時刻をビート時刻の間隔毎にリスト化し正規化したものに変換します。
  3. ヒストグラムにするため、正規化したものに120かけて階級を120として横軸がビート間隔内の正規化した発音時刻、縦軸が出現回数としたヒストグラムを作成します。

3. 単位円上にヒストグラムを描画

ビートの周期性を考慮して単位円上にヒストグラムを描画するために、単位円を描画し、単位円から円の中心とは逆向きにヒストグラムの度数分を赤で線画します。

実験結果

1拍内に16分音符が4つ並んでるとして考えたとき以下のように考えます。

Jiveの1分から2分の1分間を入力した結果、以下のヒストグラムが完成!

図から以下のことが読み取れます。

  • 第1テータムでジャストなタイミングと後ろにずれての発音が同じくらいある
  • 第2,3,4テータムでジャストなタイミングから後ろにずれて発音しているものが多い

→16分音符レベルで発音のずれがわかった!
→全体的に後ろにずれて演奏していた!

おわりに

専門家いらずで、既存の技術を使って発音タイミング全体の描画を試みました!
最後までお読みいただきありがとうございました。

Discussion