Wizard Notes

音楽信号解析の技術録、音楽のレビューおよび分析、作曲活動に関する雑記です

楽曲解析

Audacity でラウドネスノーマライゼーション

最近の音の配信サービスでは様々な音源を聴感的に同じ音量で聞けるように、ラウドネスノーマライゼーションが採用されています。 身近なオーディオ加工用ソフトウェアでは、2020年5月にリリースされた Audacity ver. 2.4.0 もしくはそれ以降のバージョンでラ…

librosaにおける16-bitでのWAV書き出し

問題 最近のバージョンの librosa では、信号を保存する時、16-bit 整数(int)型のWAVファイルで書き出そうとすると、以下のようなエラーが出てしまい、ファイル出力できません。 >>> import numpy as np >>> import librosa >>> y = np.sin(2.0*np.pi*440*…

Python で iTunes Search API を叩いて iTunes Storeの音楽を検索する

はじめに iTunes の Search API を使うと、iTunes Storeで販売されているコンテンツを検索することができます。 iTunes Search API – Partner Resources 検索用のAPI自体は、デベロッパーとしての登録やAPIトークンが必要ないため、手軽に利用できます。 こ…

レーベンシュタイン距離で曲・アーティスト名検索(Python実装)

はじめに 表記に一部誤りを含む曲名・アーティスト名を入力として、正しい名前を出力 or マッチ度を計算する関数を作る必要があったため、調査・実装など検討してみました。 はじめに レーベンシュタイン距離 使ってみた 付録・実装 レーベンシュタイン距離 …

L'Arc-en-Ciel 130曲から、人気楽曲15曲と似た曲を検索

概要 ラルクの似た曲検索、とりあえず類似度プロットまで。 pic.twitter.com/FbIF4Wf9tm— Kurene (@_kurene) December 24, 2019 これまでに、Perfumeや東方プロジェクトなどの楽曲を使って、同一アーティストの似た曲を検索するアルゴリズム構築をしてきまし…

Spotify Web API で取得できる音響・楽曲特徴量の一覧

はじめに Spotify の Web APIを調べていたら、APIを叩いて取得できる音響・楽曲特徴量のドキュメントを発見しました。 developer.spotify.com 非常に興味深い特徴量がいくつかあったので、紹介したいと思います 各特徴量の説明 duration_ms: int 楽曲の時間…

Pythonで邦楽アーティスト名一覧をスクレイピング

日本の音楽アーティスト名に関するを調査するために、Pythonを使ってアーティスト名一覧をWeb上からスクレイピングしました。 情報を抽出するWebサイト 実装 結果 まとめ 情報を抽出するWebサイト HTMLのパースしやすさを考え、今回はRockin'on.comの邦楽ア…

全オーディオファイルとオーディオファイルを含む全ディレクトリを取得

概要 タイトル通り、あるディレクトリ以下にある、全てのオーディオファイルと、オーディオファイルを含む全ディレクトリを取得するスクリプトになります。 深いディレクトリ構造でも、 オーディオファイルが含まれるディレクトリを列挙したり、全オーディオ…

Python+Mutagenで、複数の楽曲から情報(楽曲の長さなど)を高速に抽出

Pythonで複数の楽曲データの長さを調べる時、真面目に楽曲ファイルを読み込んでNumpy配列のshapeを調べて…とすると、かなり時間がかかってしまいます。数百曲以上になると、それだけで時間の無駄です。 そこで、Mutagenを利用して、メタタグ情報から長さを得…

Perfume The Best "P Cubed" の全52曲をデータ分析:テンポ特徴+主成分分析+類似度行列で楽曲推薦

東方プロジェクトの音楽をデータ分析:テンポ特徴+主成分分析+類似度行列で楽曲推薦 に引き続き、「Perfume The Best "P Cubed"」で似たテンポの楽曲を探すためのデータ分析をしてみました。 (以下の記事で)以前にも分析しましたが、今回は類似度行列を…

Perfume The Best "P Cubed" の全52曲で、テンポの似た曲を探せるデータベースの作成

東方プロジェクト原曲の、テンポの似た曲データベースを作ってみた と同じ手法を使って、Perfume The Best "P Cubed" の全52曲の中から、テンポの似た曲を列挙し、データシート/プレイリストとしてまとめてみました。 技術の詳細は、以下の記事をご参照くだ…

東方プロジェクトの音楽をデータ分析:テンポ特徴+主成分分析+類似度行列で楽曲推薦

前回、東方プロジェクト原曲(紅魔郷~輝針城)のBPM(テンポ)分析では、近年の作品ほどテンポが速くなっている傾向があるなど、いくつも興味深い結果が得られました。 今回は、BPMではなく、テンポ特徴(サイクリックテンポグラム)という最近の手法を使う…

東方プロジェクト原曲の、テンポの似た曲データベースを作ってみた

東方プロジェクトの音楽をデータ分析(テンポ特徴+主成分分析+類似度)にて作ったアルゴリズムで、東方プロジェクトの曲で似たテンポの楽曲を算出し、データベース化してみました。 基本的には、BPMが近い楽曲が似ている曲として列挙されています。しかし…

プレイリストやランキングの利用・著作権に関しての調査

法律に関する疑問を弁護士に無料で法律相談できる「弁護士ドットコム」というWebサービスがあります。このWebサービスの特徴は、無料相談の場合、質問と回答が公開されます。 その弁護士ドットコムに、音楽のプレイリスト・ランキングに関するFAQがいくつか…

マルコフ連鎖でコード進行を自動生成(Python実装)

伝統的な自動作曲・文章生成システムで使われている代表的アルゴリズムとして、マルコフ連鎖があります。 アカデミックな研究やアプリケーションとしては常套手段なのですが、Web上には音楽での 利用例・実装例があまりないようです。 そこで、マルコフ連鎖…

Python + LibROSAでクロマ特徴(クロマグラム)を使って和音推定:(1) テンプレートマッチング

音楽の三大要素、メロディ・ハーモニー・リズムの内、ハーモニーの根幹を担っているのが和音です。 おそらく、楽器を演奏したり、曲の耳コピをしたことがある人は、一度は計算機で和音(進行)を自動で分析できたらいいな、と思ったことがあるはずです。 一…

LibROSA:Pythonで手軽に始める音楽データ分析

LibROSA とは? 出典:https://librosa.github.io/ 「自分の好きな音楽をPCで分析したり、音楽データで機械学習やディープラーニングをやってみたい。でも、音データの信号処理やデータの扱いに困っている」と、悩んでいるエンジニアの方は多いと思います。 …

MS処理のためのMid/Side変換の実装解説(Pythonスクリプト付き)

MS処理(Mid/Side変換)とは? MS処理のイメージ 音響機器やマスタリングプラグインでMS処理という表記を見かけたことはありませんか? MS処理は、通常左右に分かれているステレオの信号を、 中央(ミッド)成分と非中央(サイド)成分に変換し、それぞれに…

LibROSA で MFCC(メル周波数ケプストラム係数)を算出して楽器の音色を分析

MFCC 算出の流れ この記事では、 音に関するデータ分析や機械学習・深層学習で良く使われている MFCC*1 (メル周波数ケプストラム係数)という特徴表現を使って、楽器の音色を分析できるかどうか確認したいと思います。 MFCC とは? LibROSAを使ったMFCCの算…

BPMから楽曲、楽曲からBPMを検索できるWebサイト: GetSongBPM

はじめに https://getsongbpm.com BPMを検索できそうなWebサイトやデータベースを探していると、このGetSongBPM という海外のサイトを見つけました。 getsongbpm.com 洋楽のBPMを調べたり、DJをやっている人には便利そうと感じたので、紹介したいと思います…

付録:東方プロジェクト原曲(紅魔郷~輝針城)のBPMデータシート

概要 東方プロジェクト原曲(紅魔郷~輝針城)のBPM(テンポ)分析 で使ったデータシートです。 多くの曲のBPMは以下のサイトを参考にさせていただきました。ありがとうございます。 w.atwiki.jp 掲載されていないものや、テンポ変動がある楽曲については、 …

東方プロジェクト原曲(紅魔郷~輝針城)のBPM分析

概要 おそらくBPM(テンポ)は、音楽を区別・認識したり音楽ジャンルを体系化したりするための、最重要な手がかりです。 そこで、BPM(テンポ)を使って身近な楽曲で音楽コンテンツを分析できないかと考えて、東方プロジェクト原曲(紅魔郷~輝針城)のBPM(…

PyAudio で作るリアルタイム音高アナライザ

デモ・概要 前回のリアルタイムスペクトルアナライザ を応用して、リアルタイムで音高を表示するプログラムをPyAudioとmatplotlib を使って作ってみました。 www.wizard-notes.com デモ・概要 実装 main.py AudioInputStream: PC上の音の取得 SpectrumAnalyz…

Python + PyAudio で作る、リアルタイムスペクトルアナライザ(ループバック録音対応)

デモ+概要 Python のPyAudio と matplotlib を使って、PC上で流れている音をリアルタイムで表示・分析できるスペクトルアナライザを作りました。以下の実装では VB-Audio社の仮想ミキサ "Voice Meeter" 向けの設定となっていますが、PortAudio 対応かつルー…

Perfume The Best "P Cubed" の全52曲をテンポ特徴でクラスタ分析

事始め Perfume のベストアルバム Perfume The Best “P Cubed” を購入しました。 これまで(~2018年)の楽曲の中から全50曲 + 新曲2曲が収録されています。 全52曲。なかなかのデータ数です。 そういえば、最近のPerfumeの楽曲ってFuture BassやDub系が増え…

Python (LibROSA) で音高 ・クロマ特徴を算出する方法

はじめに 音楽の分析では、メロディー、ハーモニー、リズムの3つ要素から特徴を捉えるのが重要です。 特にハーモニーに関しては、音楽理論による体系化(例:コード、コード進行)が出来ています。そのため、 分析した結果の意味付けがしやすいので、計算機…

Mutagenチートシート: MP3, AAC (.m4a), FLACのタグ・メタデータ抽出

Mutagen チートシート オーディオデータのタグ・メタデータ抽出に便利なPythonモジュール Mutagen。 この記事では、よく使う3つのコーデックでのメタデータ抽出でよく使いそうな、 mutagen オブジェクトのキーおよびインスタンス変数をまとめました。 https…

Python: 複数のAAC (.m4a) 音源からタグ・メタデータを抽出する

はじめに 音楽分析をやる際、大量の音源のメタデータの抽出・編集・読込/書込が必要となることが多々あります。手動で出来る簡易だと Mp3tag のようなソフトウェアを使うのが楽ですが、大量の音源のメタデータを処理しようとすると効率がよくありません。 …

Pythonで楽曲のリズム・テンポ分析: テンポグラム (Tempogram)

はじめに 楽曲分析では、メロディー、ハーモニー、リズムの3大要素から特徴を捉えるのが大事です。 ハーモニーに関しては、音楽理論による体系化(コード、コード進行など)が出来ていることもあり、計算機による分析も他の要素よりも普及しています。 一方…

Pythonで楽曲のリズム・テンポ分析: Novelty Function

はじめに この記事では、Onset 検出や局所/大域のテンポ分析などリズム分析においてよく使われる、Novelty Function についてPythonのコードとともに紹介します。実装と理解の助けになれば幸いです。 はじめに Novelty Curve/Function (Onset_envelope) 実…