Slide 1

Slide 1 text

マッシュアップ曲を聞いてビックリしたので、 音楽のコードを分析してみた @Linus_MK 2019年2月23日

Slide 2

Slide 2 text

自己紹介 ● ライナス(@Linus_MK) ● SIerにて、音声通信系のソフトウェア開発(C/C++) ● 趣味でPython/機械学習を勉強中 ● ブログ:子供の落書き帳 Renaissance https://linus-mk.hatenablog.com/

Slide 3

Slide 3 text

今日は何について話すのか? 音楽の和音(コード)の類似性を分析する話

Slide 4

Slide 4 text

きっかけ (音楽分野での)マッシュアップ: 複数の楽曲を編集して複合し、1つの曲にする手法(ニコニコ大百科より) ある日ニコニコ動画を見ていて、あるマッシュアップ動画を見つけた 【マッシュアップ】ぼくらはみんな意味不明×妄想感傷代償連盟

Slide 5

Slide 5 text

きっかけ 「元になった2曲を何度も聴いたことあるけど、 この2曲がきれいに合うわけ無いやろ」 曲がちゃんと合ってる!?一体何でだ!? ……というわけで、 2つの曲が何で合ってるのかを分析してみたくなった

Slide 6

Slide 6 text

2つの曲をマッシュアップしたときに合って聞こえる 「2つの曲が合っている」とは 主観的で曖昧……

Slide 7

Slide 7 text

2つの曲をマッシュアップしたときに合って聞こえる 「2つの曲が合っている」とは 主観的で曖昧…… 曲Aのメロディ 曲Bのメロディ 曲Aのメロディ 曲Aの伴奏 曲Bの伴奏 曲Bの伴奏 + → マッシュアップの構造 つまり「曲Aと曲Bの伴奏を入れ替え可能」なら良い →和音が似ていれば入れ替えても適合するだろうという仮説

Slide 8

Slide 8 text

2つの曲をマッシュアップしたときに合って聞こえる 2つの曲の和音(コード)が似ている 「2つの曲が合っている」とは 主観的で曖昧…… 曲から和音を抽出・比較すればよい →どうやれば抽出できる?

Slide 9

Slide 9 text

楽曲から和音を抽出する方法 ● iOSのアプリ で和音を分析して抽出してくれるものがある iOSがないので断念 ● プログラムの音楽系ライブラリ Pythonだとlibrosaが有名だが、実施例が見つからず断念 ● Web API SongleというAPIが使えそう(次ページで詳述)

Slide 10

Slide 10 text

Songleによる自動分析例

Slide 11

Slide 11 text

Songleによる自動分析例 サビ/繰り返し区間 拍(ビート) 和音(コード) 音程 youtube/ニコ動の音楽が対象

Slide 12

Slide 12 text

楽曲から和音を抽出する方法 Web上から確認する他に APIを叩いて自動分析結果を取得できる (JSON / XML)

Slide 13

Slide 13 text

楽曲から和音を抽出する方法 ぼくらはみんな意味不明×妄想感傷代償連盟 の元になった2曲の和音を取得し、 ● サビの区間を抽出 ● 欠損値補完(自動分析に失敗した箇所を入力) ● 転調を反映 ● 時間軸×音程(ピッチ) でグラフ化(クロマグラム)

Slide 14

Slide 14 text

2曲のサビ部分を比較

Slide 15

Slide 15 text

2つの曲の和音(コード)が似ている とは? 和音のうち2音が共通していれば似ているという仮説 C = ドミソ Em = ミソシ (和声理論の代理和音を参考にした)

Slide 16

Slide 16 text

2つの曲をマッシュアップしたときに合って聞こえる 2つの曲の和音(コード)が似ている 2つの曲の和音(コード)の構成音が2個以上共通している 「2つの曲が合っている」とは

Slide 17

Slide 17 text

2曲のサビ部分を比較 和音(コード)の構成音が2個以上共通している区間を塗りつぶし コードが似ていると言えそう

Slide 18

Slide 18 text

まとめ 2つの楽曲について和音(コード)を抽出し、 音程を比較して類似性を調べた結果、 和音が似ていることが分かった ソースコード:GitHub Linus-MK/audio_chord_analysis ブログ記事:後日公開予定