Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

ChatGPT で J-POP 楽曲の歌詞の感情分析

音楽の特徴分析について、当ブログでは音響信号からテンポや音色のような音楽的特徴を分析する手法を紹介してきました。 一方で、音楽は音響的な要素だけでないので映像や自然言語(歌詞)からのアプローチや、ソーシャルデータを用いた手法も数多くあります…

ChatGPT4にピアノ曲の演奏難易度・演奏の注意点を聞いてみる(ブルグミュラー25/18の練習曲)

ChatGPT Plus (有料版) を契約したのでいろいろ試しています。 その中でも、ピアノの練習曲の演奏難易度・演奏の注意点に関する回答が興味深かったので紹介したいと思います。 題材 プロンプトのポイント ChatGPT4の場合 ChatGPT3.5の場合 所感 おまけ (GTP4…

VST3 Project Generator を使ったエフェクタ (VSTe) の実装メモ

前回の記事でWindows11での VST3 開発環境構築が整ったので、試しに簡単なエフェクタを実装してみました。 VST3 SDK 3.7.0 から追加された VST3 Project Generator を使うことでプロジェクトを簡単に作ることができましたので、参考にしたWebページやメモを…

VST3開発環境の構築 (Windows11, Visual Studio 2022, VST SDK ver. 3.7)

[2023/5/2: Twitterで頂いたすずむし様からのご指摘を元に,VST SDK ver. 3.7.7での動作確認ができたため修正。ご情報ありがとうございました。] 前々からやろうと思っていたWin11,VS2022,VST3.7 でのVST開発環境の構築にトライしてみたところ、とりあえず…

振幅パンニング:サイン則(sine law)とタンジェント則(Tangent Law)の分配係数プロット

2台のスピーカを用いたステレオ再生において、左右のスピーカに振幅差をつけて再生することで両耳間位相差と両耳間強度差を実音源に近づくようにする手法を振幅パンニングといいます。 この振幅パンニングの代表的な手法としてサイン則とタンジェント則が知…

Overlap-Add法・Overlap-Save法(重畳加算法,重畳保留法)のPython実装

音信号処理の代表例として、コンボリューションリバーブ*1のような入力信号にインパルス応答を畳み込む処理が挙げられます。 この畳み込み演算をリアルタイムのブロック処理で実現する*2実用的な方法としては、 Overlap-Add法とOverlap-Save法が有名です。 …

Pythonで空間音響(バイノーラル)用ファイル形式 SOFA を処理(pysofaconventions)

需要が高まってきているバイノーラル処理にチャレンジする場合、まずはWeb上のSOFA形式のHRTFデータで試すことが多いかと思います。 Pythonであれば、SOFA形式のデータ読み込んで Numpy配列にさえ変換すればバイノーラル処理やプロットは容易です。 そこで、…

Lofi hiphop風の揺らぎのあるビートを作るドラムマシンのWebアプリ試作

lofi hiphop 風のビートをさくっと作れるリズムマシンの試作。前半がヨレたビートの生成,後半がランダムパターンのデモ #reactjs #webaudioapi #webapp #lofi #lofibeats #lofihiphophttps://t.co/L7qrtNEEmM pic.twitter.com/h0JvMf654O— Kurene (@_kurene…

シュレーダーリバーブ(人工残響エフェクタ)のPython実装と試聴デモ

今回は,以下の記事で紹介したオールパスフィルタによる残響生成を用いて、実用的な残響エフェクタとして有名なシュレーダーリバーブをPythonで実装してみました。 www.wizard-notes.com シュレーダーリバーブの概要 フィードバック型コムフィルタの回路につ…

Windows10/11でMelodyne 4 が起動しない事象への対処

DTM

音質と操作性に非常に優れていることから、ピッチ編集ソフトMELODYNE (Celemony Software)を長年愛用しています。 最近、新PCでの作曲環境再構築の際に、Melodyne 4 64-bit 版が起動しないということがありました。 結論としては、Intel CPU の第10・11世代…

Python:直列オールパスフィルタによる人工残響の生成と試聴

「信号処理に欠かせないオールパスフィルタ―」で紹介したオールパスフィルタの利用例として、人工残響フィルタを実装してみました。 設計方法 フィルタ応答の比較 試聴 Python実装 参考文献 設計方法 直列オールパスフィルタによる人工残響生成はシュレーダ…

Python:ヒルベルト変換で様々な信号の包絡線,瞬時位相,瞬時周波数を抽出

音の時間波形の包絡線を抽出や振幅変調(AM)の復調などで利用されるヒルベルト変換をPythonで実装し、いくつかの簡単な信号に対して適用してみました。 ヒルベルト変換の概要 ヒルベルト変換の仕組みや実装方法については、以下のWebページがわかりやすいで…

リアルタイム雑音抑圧処理:適応線スペクトル強調器 (ALE) のPython実装と適用例

音信号向けの簡単かつ実用的なリアルタイム向け雑音抑圧処理として,以下の書籍で適応線スペクトル強調器 (ALE) が紹介されていました. 上記の書籍を参考にしつつ,Pythonでの適応線スペクトル強調器 (ALE)の実装と,様々な信号への適用例を紹介します。 適…

xlsxやcsvのデータをExcelで間引く方法(INDIRECT, SUBSTITUTE, ADDRESS, ROW, COLUMN関数)

サンプル数が大きい時系列データや周波数応答が格納されたxlsxやcsvファイルをExcelで開くと、かなり動作が重くなることがあります。 そのようファイルでグラフをプロットのような操作をするのは動作が遅いため苦行ですし、Excelが突然落ちるリスクも高くな…

オーディオテクニカの耳掛けヘッドホンの耳掛け部の特許

オーディオテクニカは ATH-EW9 のような耳掛けヘッドホンを販売しています。 www.wizard-notes.com これらの機種の共通の特長として、耳にフィットしやすいイヤハンガーがあります。 この独特なイヤハンガーは、耳への締め付けを向上させるだけでなく、ヘッ…

和音のモダリティ(明るいー暗い/嬉しいー悲しい)を算出するモダリティ曲線 (Modality Curve) のPython実装

不協和度、緊張度に引き続き、“The Psychophysics of Harmony Perception: Harmony is a Three-Tone Phenomenon” より和音の明るさー暗さや嬉しさー悲しさを表すとされる和音のモダリティの算出モデルについて紹介します。 また、モダリティ曲線を算出するPy…

和音の緊張度を算出する緊張度曲線 (Tension Curve) のPython実装

前回に引き続き、“The Psychophysics of Harmony Perception: Harmony is a Three-Tone Phenomenon” より和音の心理数理モデルのPython実装を行います。 今回は、和音の緊張度を分析する数理モデルを扱います。 用途としては、減3和音や増3和音のような緊張…

和音の協和度を算出する不協和度曲線 (Dissonance Curve) のPython実装

和音の響きはその音楽の雰囲気を分析する重要な要素です。 長/短3和音のような明るい/悲しいといった響きから、ジャジーな和音の複雑で豊かな響きまで様々です。 このような和音の響きを計算機で分析する方法はいくつかあります。 今回は、和音がどのくら…

FL Studio で Miroslav Philharmonik 2 のクラッシュを防ぐ方法

IK Multimedia の高品質なオーケストラ音源 Miroslav Philharmonik 2 (CE) は、セール時だとCEで5~6千円、完全版でも1万円台で買えるコスパの良いオーケストラ音源です。 しかし、FL StudioではプラグインがDAWを巻き込んで頻繁にクラッシュするという問題が…

1次IIRオールパスフィルタでローパス/ハイパスフィルタを作る(Python実装)

「信号処理に欠かせないオールパスフィルタ―の概要・使い方・利用例」では、オールパスフィルタによって低演算量で様々な周波数特性のフィルタを作成できることを紹介しました。 www.wizard-notes.com この記事では、その具体例として1次IIRオールパスフィル…

信号処理に欠かせないオールパスフィルタ―の概要・使い方・利用例

※2022/9/28: λの算出式の符号が間違っていたためプロットとともに修正 信号処理におけるフィルタとしては、ローパス/ハイパスフィルタのような振幅特性を活用するフィルタが良く知られています。 しかし、一方で位相特性のみに影響を与えるオールパスフィル…

Python:エフェクター(音響効果処理)を簡単に実装・リアルタイム再生できるクラスの作成

入出力の管理リアルタイム音響信号処理を使った身近な機器としては、ボーカルやギターなどの楽器で利用されているエフェクターが挙げられます。 エフェクターは信号処理としては簡単なのですが、実際にPCでプログラミングをして音を出力するのは準備が割と大…

Python:numba (jit)で音響信号処理の高速化 - 2次IIRフィルタの処理時間計測

数値計算でよく利用されている Python (CPython) ですが、for文の処理が遅いという問題点があります。 音響信号処理ではC/C++風に配列の各要素にアクセスが必要な処理を for文を使って実装することが多いため、これは致命的です。 そこで、Python用のjitコン…

オーディオテクニカの耳かけヘッドホン ATH-EM700 の分解と音質比較

[px] オーディオテクニカの耳かけヘッドホン ATH-EM700 ですが、故障により1台を分解することにしました。 修理の際に役立つと思い、 ATH-EM700 の内部構造をメモとして記録しておきたいと思います。 また、せっかくなので ATH-EM700 と他のオーディオテクニ…

適応逆ノッチフィルタによるサイン波/調波成分の抽出(Python実装)

前回紹介した適応ノッチフィルタ は、正弦波信号を除去するアルゴリズムでした。 www.wizard-notes.com www.wizard-notes.com しかし、音楽信号処理でよくある楽音を抽出したいという要求には適応ノッチフィルタは利用しにくいです。 そこで今回は、正弦波信…

多段適応ノッチフィルタで複数の正弦波を除去/ドラム・打楽器音の抽出(Python実装)

前回の記事では、適応ノッチフィルタを使って音高が未知の正弦波を除去しました. www.wizard-notes.com しかし、正弦波が複数ある区間ではうまく動作しませんでした。 そこで、今回は複数の正弦波を除去できる、多段適応ノッチフィルタを紹介します。 また…

Python:sounddeviceを使った音声ファイルの再生・リアルタイム処理の実装方法

以下の記事では,Pythonで音の再生・録音を行うためのライブラリ sounddevice を紹介しました。 Python-sounddevice で音声や歌声をリアルタイム収音・再生・録音 - Wizard Notes この記事では、音の信号処理/アプリ開発でよく使う、音声ファイルの再生をso…

Python:適応ノッチフィルタで正弦波(周期性雑音)を除去

音響信号処理の良い参考書である プログラム101付き 音声信号処理 では、適応信号処理の一例として適応ノッチフィルタが紹介されています。 ただし、プログラムがC言語のみであり、また、数学的な説明が僅かであるため仕組みが分かりにくいです。 そこで、適…

グラフィックイコライザの周波数特性を補正するための最小二乗法による利得最適化

前回は、単純なグラフィックイコライザとして、1/Nオクターブバンドごとに双二次フィルタを用意し直列接続した実装を解説しました。 www.wizard-notes.com しかし、この手法だと、グラフィックイコライザ全体の周波数特性として各中心周波数での振幅値が指定…

Python:1/1, 1/3オクターブバンド グラフィックイコライザの実装

音源制作の現場で最も利用されているプラグインの一つとして、ある周波数帯域を増幅/減衰させるイコライザがあります。 その一種であるグラフィックイコライザをPythonで実装してみます*1。 グラフィックイコライザについて オクターブバンド分割(中心周波…