TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

2025-09-01から1ヶ月間の記事一覧

CQTで和音を解析する その3(コレスキー分解)

前回実装した、NNLSのLawson–Hansonアルゴリズムで、能動集合(passive set)に制限した最小二乗問題を解くときにコレスキー分解を行っている。辞書行列Eが、各半音ごとに独立した倍音スペクトル分布を列として持つため、ほぼフルランク(すべて線形独立)で…

CQTで和音を解析する その2

前回Pythonで実装したNNLSをWindowsプログラムに組み込んで、リアルタイムで処理できるか検証する。 NNLSの実装 Pythonでは、scipy.optimize.nnlsを使用したが、C++に組み込むため、Lawson–Hansonのアルゴリズムを独自実装した(GPT-5で実装)。 static void n…

CQTで和音を解析する

スペクトログラム解析VST3プラグインに和音の解析機能を加えたい。ミックスされた音源から和音の構成音を取り出すのは容易ではなく、古典的にはCQT や HPCPをピッチクラス化して推定する方法がある。 この方法では、倍音が構成音と誤検知される場合があり、…

スペクトログラム解析VST3プラグイン

先日、実装したリアルタイムスペクトログラム解析VST3プラグインをPayhipで公開した。 payhip.com Audio Spectrogram Monitor VST3 — Windows対応 リアルタイムCQTスペクトログラム(ピアノロール軸表示) Audio Spectrogram Monitor は、トラックに挿入する…

Payhip使ってみる

先日開発したVocal Pitch MonitorのVST3版をPayhipで公開した。payhip.comはじめGumroadで公開したがPayoutの設定がうまくいかなかったので、Payhipに変更した。Payhipは、PayPalもしくはStripeと連携することができる。 PayPalのアカウントがあったので連携…

CQTでスペクトログラムを描く その10(拡大縮小)

自作スペクトログラム解析VST3プラグインにマウスホイールによる拡大縮小とスクロール処理を実装した。はじめ解析範囲をVSTのパラメータに使用としたが、マウスホイールの方が操作しやすいのでそちらで実装することにした。 操作 Ctrl + ホイール → 垂直方向…

CQTでスペクトログラムを描く その9(補間方法変更)

その6で、低域をバンク分割することで、時間分解能を上げつつ、最小音階をC1まで下げることができた。その際に、低域のバンクでは、オクターブあたりのビン数が高域の半分になるため、本来のCQTのビンの間隔の半分の間隔でスペクトルカーネルを作成すること…

ピッチ解析VSTプラグイン

リアルタイム音程解析 VSTプラグイン(vst_pitch)をVST3プラグイン化した。 VST3化 GitHub CopilotのGPT-5でサクッと変換するつもりが結構苦戦した。いきなりすべてを変換させると何度試しても正しく動くものができなかった。「一部は未実装でもよい」という…

【公開】wavdiff — フル+インストからボーカルを抽出するコマンドラインツール

wavdiff — フル+インストからボーカルを抽出するコマンドラインツール Windows 向けのコマンドラインツール 「wavdiff」 を GitHub で公開しました。 このツールは、フルトラック(ボーカル+インスト)とインストトラックを入力すると、その差分から ボー…

CQTでスペクトログラムを描く その8(MIDI入力)

自作スペクトログラム解析VST3プラグインにMIDI入力機能を追加した。 MIDI入力 DAWのMIDIトラック出力をこのプラグインに入力すると、MIDIノートをスペクトラムに重ねて表示できる。採譜した楽譜が合っているかやピッチとのずれを視覚的に確認できる。 実装 …

CQTでスペクトログラムを描く その7(マウスカーソル位置ハイライト)

自作スペクトログラム解析VST3プラグインにマウスカーソル位置にハイライトを表示する機能を追加した。 ハイライト表示 マウスカーソル位置の音階を判定して、その音階のラインに透明な白でハイライトを表示する。 また、ピアノロールの鍵盤を赤で表示する。…

CQTでスペクトログラムを描く その6(基本周波数解析)

スペクトログラム解析VST3プラグインに基本周波数解析を実装した。 基本周波数解析 ボーカル音程モニターと同じアルゴリズムで基本周波数解析を行う。 時間分解能のずれ スペクトログラムはF#1まで4分音の周波数分解能に対応しているため、サンプリング周波…

CQTでスペクトログラムを描く その5(拍の表示)

スペクトログラム解析VST3プラグインに拍の表示を追加した。 拍の表示 VSTのホスト側から拍の情報を受け取り、拍の位置に縦の線を描くようにした。 小節の開始は、色を明るくして目立つようにした。 処理方法 Processorで、IProcessContextRequirementsをイ…

CQTでスペクトログラムを描く その4(ピアノロール)

前回の続き。リアルタイムにスペクトログラムを表示するVST3プラグインに、音高の軸をC4などのノート名の代わりに、ピアノロールを表示するようにした。 ピアノロール表示処理 白鍵は、オクターブを7分割して表示する。 黒鍵は、半音と同じ位置に白鍵の半分…

CQTでスペクトログラムを描く その3(VSTプラグイン化)

前回実装したCQTでスペクトログラムをリアルタイムに解析するWindowsアプリをVST3プラグインにした。 VST3プラグイン 以前の記事で実装した方法をベースにした。 描画処理 はじめ、VSTGUIの描画メソッド(drawLineなど)で、全面を描画するようにしたが、カク…