不器用貧乏

広く浅く手を出したり出さなかったりする.

Python+librosaでお手軽メロディ抽出

1.はじめに


本GistはFUN Advent Calendar 2018,16日目の内容です.
ギリギリ間に合いましたね. adventar.org

昨日の記事はぜろちゃんの線路ネットワークを解析してみたでした.
町田市は神奈川!勉強になりましたね. cer0un0.hatenablog.com

自己紹介


名前: さとり(Twitter
研究: 音楽情報処理, メドレーとか楽曲認識の研究してます
趣味メドレー,マッシュアップ,麻雀(Mリーグ),ガチャ


この記事の内容


楽曲の.wavファイルから,音響情報処理をしてメロディを抜き出してみました.
なるだけ難しいものは使わず,簡単な実装にした(ほんまか?)ので,音楽をプログラミングで扱う,ということに触れる機会になればと思います.

実装は,Python3.6と,音響情報処理ためのライブラリのlibrosaを主に使いました.

2.実装してみた


Gistに.ipynb形式でコード置いときました
light_melody_extraction.ipynb · GitHub

jupyter上で再生できるように実装したのに,Gistで再生できなくて泣いた. jupyter環境ある人はお手元で見てみてください.

元楽曲とメロディ抽出した結果を重ねたやつ置いときますね.

  • 元楽曲
  • 元楽曲+メロディ抽出結果



3.おわりに


音の高さ(オクターブ)が考慮されてなかったり,無音の区間が考慮されてなかったり,叩けばホコリがでる結果となりました. が,簡易な実装でなんとなくメロディ抽出できてる...?くらいの結果になったかと思います.

音楽をプログラミングで扱うことに少しでも触れる機会になれば幸いです.
音響情報処理楽しいから(ほんまか?)みんなやろう!

明日は僕の研究分野の先輩であるKieferさん
すごい音楽情報処理のことか,すごいわかりやすい機械学習・深層学習周りの技術か,パワポの使い方について書くと思ってます.

kmybrstco

使用曲リスト
 
メルト
ようこそジャパリパークへ
ぼくのフレンド
リアルワールド
  君の知らない物語  
メルト
 
さよならメモリーズ  
Treasure
コネクト
 
 
オレンジ
ようこそジャパリパークへ
 
 

Dairy-KKNK

 
使用曲リスト
どかーん
撲殺天使ドクロちゃん true my heart
 
Daydream café
リフレクティア
光るなら
 
カレンダーガール
First kiss
Romantic Now
魔理沙は大変なものを盗んでいきました
U.S.A.
HOT LIMIT
極上スマイル
どう考えても私は悪くない
L・O・B・M
 
ファミリーマート入店音
家に帰ると妻が必ず死んだふりをしています
ハンマー音
スーパーマリオブラザーズ メインテーマ
中二の俺がスーパーマリオブラザーズ
頑張って耳コピしてみた
Southern Cross スーパーマリオワールド 地上BGM
かくしん的 めたまるふぉ~ぜっ!

 


 
Twitterで「毎日駆け抜けチャレンジ - Twitter Search」というタグを見かけたので便乗して作りました.
音の共有とか類似を中心に使って短く楽曲を繋いでいくっていう,僕の思う駆け抜けメドレーを作りました.本当は重ねる気はなかった.
甲子園面白かったので,その応援歌と,頭の中でぐるぐるしてたU.S.A.周りの繋ぎを中心に構成しました.
 
頭にあるメロディのタイトル特定する時間 + その合間に観たインパルスとアンジャッシュの時間 = 打ち込み + 構成
くらいの時間配分で結構時間かかりました.
 
つづかない. 
 

SuddenMedley - 1

 

使用曲リスト
My Silky Love
疾走あんさんぶる
 
ロマンス
 
千本桜
吹雪
 
VOLT-AGE
 
VOLT-AGE
 
Matching
 
Matching
 
地球最後の告白を はやくそれになりたい!
それは僕たちの奇跡
地球最後の告白を
はやくそれになりたい!
True my heart
ゆりゆららららゆるゆり大事件
ゆりゆららららゆるゆり大事件(安元ver.)
ゆりゆららららゆるゆり大事件
はやくそれになりたい!
恋の2-4-11
Happy Girl
 
 
 

 
 サッカー観てて暇で思い立って作った.
 つなぎ被ってたらごめん.

DailyMedley-20180324-13

 
使用曲リスト
Wind Climbing
~風にあそばれて〜
あなたの歌姫
 
いすゞのトラック
ガーネット
なわとび
 
Best Friend
 
Just Be Friends
Dear
初めての恋が終わる時
君の知らない物語
ようこそジャパリパークへ
 
君の知らない物語
LOVE & JOY
ニコニコ動画流星群 時報 (LOVE & JOY)

 


 
9日ぶりメドレー.もはやデイリーじゃないじゃんと思ってたら,今日ウィークリーという都合の良い単語をひらめいた.
次からは流星群にのせて,耳コピしたりしなかったりして,組曲『ニコニコ神社』っぽく別の曲被せたり被せなかったりする予定.

 
あ,ニコニコ動画流星群10周年おめでとうございました!!!

 

 
正直メドレーの繋ぎが今回ボロボロで,投稿するまでにウンウン悩んで時間がかかりました.頭の中とかピアノで仮繋ぎしたときは,なわとび→Best Friend,Best Friend→ JBF,Dear→初恋終時,初恋終時→LOVE&JOYらへんは,めっちゃ良いつなぎ思いついた!!!!!!と思ってました.実際に打ち込んで見ると違和感アリアリで,テンポ揺らしまくったりとか色々と試行錯誤しました.ちょいちょい思ってたんですが,テンポが結構違う曲って繋ぎにくいなーと思います.アレンジでなんとかしちゃうが吉なのかな.
 

 
流星群をコピーしつつ打ち込みの勉強しようかとも思ったんですが,最初の楽器選ぶ時点で挫折しました.楽器適当の劣化コピーであることに萎えつつ流星群パート作ってこうと思います.
 

DailyMedley-20180323-12

 
使用曲リスト
secret base~君がくれたもの~
 
KiRa-KiRA Sensation!
StargazeR
Wind Climbing~風にあそばれて〜

 


 
中1日のメドレーです.
いつもはもう1曲くらい行くんですが,スタミナ切れたので,いつもより編集する楽器少ないくせに短めで上げました.泣きパ①ってことで.次くらいに抜ける予定.
 

 
前回bpm128で終わったんですが,ゆっくり過ぎてイライラしてくるので,bpm160で進行しようと思って変えちゃいました.
ラブライブ!大好きマンみたいな構成になってしまいました.secret base→スタダと,スタダ→僕光はずっと頭にあったのでつなげたら,せっかくなのでラブライブ!もう一つ重ねたくなってしまいました.ちゃんと考えて作るメドレーは,あんまり構成が偏らないやつがいいなーとか,ラブライブ!の曲がメドレーで出てきたときに「は?」コメ弾幕の文化なくなればいいなーとか思いつつ作ってました.
メロディがアウフタクトで入る曲が欲しくてStargazeRを,サマーウォーズの曲に繋がる曲として魔法陣グルグルを選曲しました. 
 
 

 
ピアノ出身のくせにピアノの動きのボキャブラリが少なくて萎えながら作ってました.ずっと同じ動きだとマンネリ化するので,ピアノのパターンをちょいちょい変えていますのつもり.ドラムとかアコギとか入れる気持ちではないので.
僕光→StargazerRでつなぐ時に,三連符から八分にどうしても移行したくて音切ったんですけど,やっぱどうしても違和感があるなーと思いました.でもsecret baseはちゃんと三連符でメロディ動かしたいじゃん,ね.
 

DailyMedley-20180322-11

 
使用曲リスト
Calc.
WORLD'S END UMBRELLA
東京サマーセッション
世界は恋に落ちている
secret base~君がくれたもの~

 


 
大サボりメドレー.12日ぶりらしいです.連続記録は10でストップ.
DailyMedley(デイリーとは言ってない)のナンバリングですが,めんどくさいので,今日は4月3日ですが,20180322のままいこうと思います.
メドレーはなんなら次の泣きパートまで行ってるんですが,打ち込みに時間がかかるマンなんですよこれ.
 

 
前回Calc.の後に泣きパ入るって言ったんですが,ちょっと不自然だと思ったし,ハニワから入ったほうがまだ自然だと思ったので,高校から温めておいたCalc.→WORLD'S END UMBRELLAで繋ぎました.
WORLD'S END UMBRELLA→東京サマーセッションの音同じ所は,DailyMedley作らずにうだうだしてたらひらめいた.
 

 
今回はベースの楽器変えたり,ピアノ入れてみたりとか,楽器構成の変わり幅が過去一でした.
Arpeggiaterで何やってるかわかんない音入れまくってごちゃごちゃになる病と,曲ごととかパートごとでの躁鬱病にかかってる.
一番時間がかかったのは,世界は恋に落ちているの前の水の音のエフェクト.ホントはもっと水感なくしたかったんだけども.
というか原曲とか恋に落ちる音入ってなかった?入ってた気がしたんだけども.10thメルトみたいな.とか思いつつ水滴音入れました.