前回、SwiftF0の推論処理をC++で実装してチューナーアプリに組み込んでみたが、誤差が20cent近くあることが分かった。チューナー用途では、20centの誤差は許容できないため、ピッチ推定のアルゴリズムは既存のものを使い、決定木の機械学習モデルの訓練デー…
前回、Pythonで試したSwiftF0の推論を、WindowsのC++プログラムでリアルタイムに行う方法を検討した。 SwiftF0のモデル SwiftF0のモデルは、ONNXで公開されているので、それをそのまま使うことを検討する。Netronで、ONNXモデルを確認すると、STFTもONNXで処…
先日、Windowsのチューナーアプリを開発してMicrosoft Storeで公開した。ピッチ検出のアルゴリズムは、ボーカル音程モニターと同じアルゴリズムを使用したが、特定の弦でオクターブエラーが発生することが分かった。精度改善のため、ギターとベースで様々な…
作成中の本物のギターを使う音ゲーで、弦がチューニングされていないと誤判定が増えるため、チューナー機能を搭載したい。チューナーの処理は独立しているので、先に単独のチューナーアプリを作ることにした。 実装 チューナーのピッチ推定アルゴリズムは、…
前回は、音声入力とリアルタイム音程/和音解析を実装した。今回は、メトロノームを実装する。 メトロノーム 録音時と、再生時にメトロノームを鳴らす。録音の開始時は、1小節分メトロノームを鳴らしてから開始するカウントインオプションを設ける。 メトロ…
前回、タブ譜からギター奏法に対応したピアノロールを描画するところまで実装した。今回は、音声入力とリアルタイムに和音を解析する処理を実装する。 検討事項 音声入力 WASAPI共有モードのイベント駆動で入力する。 サンプリングレートは録音再生時にリサ…
前回、ギターの音ゲーのタブ譜の描画まで実装した。今回は、ピアノロールを実装する。 ピアノロール ピアノロールは、音符(ノート)を、縦軸を音階(12音階)、横軸を時間として表したものである。 縦軸はラベルの代わりに、ピアノ鍵盤を縦に表示することで、音…
先日、タブ譜(.gp5)を読み込んで、MIDIを再生するプログラムができたので、今回はタブ譜の描画を行う処理を作る。ゴールは、本物のギターから音を入力して、採点をする音ゲーを目指している。採点部分に関しては、以前にCQT+NNLSでリアルタイムに和音解析す…
ロックスミス2014というギターの音ゲーがあり、発売当初、結構遊んでいた。 本物のギターを使い、ギターフレットの抑える場所を示して、流れてくる目印に合わせて演奏するというゲームである。 音ゲーとしては、それで楽しめるのだが、曲を練習しようと思う…
Codex + GPT-5.2-Codexの組み合わせは、コーディング能力が以前より飛躍的に向上したという手応えがある。 GPT-5.2-Codexはコンテキスト圧縮が強化されており、比較的規模の大きなプロジェクトでも1回の指示でほぼ修正なく作成できるようになっている。そこ…
Visual Studio 2026のC++のプロジェクトで、vcpkgで公開されているC++のライブラリを追加する方法について記述する。Visual C++ 向けのビルド済みライブラリは NuGet で配布されている場合がある一方、ソースからのビルドが必要なライブラリは vcpkg で提供…
今年のNeurIPS 2025でBest Paperとなった「Gated Attention for Large Language Models: Non-linearity, Sparsity, and Attention-Sink-Free」を、dlshogiのモデルでも効果があるか試してみた。 Gated Attention AttentionのSoftmaxの出力直後に、入力に応じ…
現在、将棋AIの各開発者は、各自で評価用データセットを作成しており、同じ条件での精度の比較が行われていない。標準となるデータセットがあった方が開発したモデルの精度比較しやすいため、dlshogiで使用している評価用データセットを公開することにした。…
12/6,7に実施された第6回世界将棋AI電竜戦本戦に「dlshogi」というプログラム名で参加しました。結果は、30チーム中4位と、昨年までと比べると残念な結果となりました。 所感 今大会は、NNUE系が棋力を伸ばしており、1位から3位がNNUE系で占められる結果にな…
最近のコンピュータ将棋では、氷彗をはじめとしてNNUE系が、Stockfishの手法を取り入れることで棋力を伸ばしている。 また、ディープラーニング系のモデルを知識蒸留することで、モデル精度も向上している。それと比較して、dlshogiはやや停滞気味で、序中盤…
チェスAIのStockfishでは、SPSAという方法で、探索パラメータのチューニングが行われている。今年の世界コンピュータ将棋選手権の打ち上げで、Qhapaqチームの澤田さんからKaggleのFIDE & Google Efficient Chess AI Challengeで、SPSAが効果的だったという話…
公式のPython SDKでは、OAuth認証について簡単な記載があるが、詳細な実装方法までは記載されていない。自分で外部IdPで認証する処理を実装して、Googleの認証プロバイダを使用して試行錯誤してみたが、VSCodeのGitHub Copilotで動かすことができなかった。…
MCPのPython SDKには、デバッグするためのuvのCLIコマンド uv run mcp devが用意されている。これを使うと、MCP Inspectorが起動し、ツールの一覧の表示やカスタム入力によるツールテストが可能になる。しかし、デバッガで処理をステップ実行したり、変数状…
前回実装した、NNLSのLawson–Hansonアルゴリズムで、能動集合(passive set)に制限した最小二乗問題を解くときにコレスキー分解を行っている。辞書行列Eが、各半音ごとに独立した倍音スペクトル分布を列として持つため、ほぼフルランク(すべて線形独立)で…
前回Pythonで実装したNNLSをWindowsプログラムに組み込んで、リアルタイムで処理できるか検証する。 NNLSの実装 Pythonでは、scipy.optimize.nnlsを使用したが、C++に組み込むため、Lawson–Hansonのアルゴリズムを独自実装した(GPT-5で実装)。 static void n…
スペクトログラム解析VST3プラグインに和音の解析機能を加えたい。ミックスされた音源から和音の構成音を取り出すのは容易ではなく、古典的にはCQT や HPCPをピッチクラス化して推定する方法がある。 この方法では、倍音が構成音と誤検知される場合があり、…
先日、実装したリアルタイムスペクトログラム解析VST3プラグインをPayhipで公開した。 payhip.com Audio Spectrogram Monitor VST3 — Windows対応 リアルタイムCQTスペクトログラム(ピアノロール軸表示) Audio Spectrogram Monitor は、トラックに挿入する…
先日開発したVocal Pitch MonitorのVST3版をPayhipで公開した。payhip.comはじめGumroadで公開したがPayoutの設定がうまくいかなかったので、Payhipに変更した。Payhipは、PayPalもしくはStripeと連携することができる。 PayPalのアカウントがあったので連携…
自作スペクトログラム解析VST3プラグインにマウスホイールによる拡大縮小とスクロール処理を実装した。はじめ解析範囲をVSTのパラメータに使用としたが、マウスホイールの方が操作しやすいのでそちらで実装することにした。 操作 Ctrl + ホイール → 垂直方向…
その6で、低域をバンク分割することで、時間分解能を上げつつ、最小音階をC1まで下げることができた。その際に、低域のバンクでは、オクターブあたりのビン数が高域の半分になるため、本来のCQTのビンの間隔の半分の間隔でスペクトルカーネルを作成すること…
リアルタイム音程解析 VSTプラグイン(vst_pitch)をVST3プラグイン化した。 VST3化 GitHub CopilotのGPT-5でサクッと変換するつもりが結構苦戦した。いきなりすべてを変換させると何度試しても正しく動くものができなかった。「一部は未実装でもよい」という…
wavdiff — フル+インストからボーカルを抽出するコマンドラインツール Windows 向けのコマンドラインツール 「wavdiff」 を GitHub で公開しました。 このツールは、フルトラック(ボーカル+インスト)とインストトラックを入力すると、その差分から ボー…
自作スペクトログラム解析VST3プラグインにMIDI入力機能を追加した。 MIDI入力 DAWのMIDIトラック出力をこのプラグインに入力すると、MIDIノートをスペクトラムに重ねて表示できる。採譜した楽譜が合っているかやピッチとのずれを視覚的に確認できる。 実装 …
自作スペクトログラム解析VST3プラグインにマウスカーソル位置にハイライトを表示する機能を追加した。 ハイライト表示 マウスカーソル位置の音階を判定して、その音階のラインに透明な白でハイライトを表示する。 また、ピアノロールの鍵盤を赤で表示する。…
スペクトログラム解析VST3プラグインに基本周波数解析を実装した。 基本周波数解析 ボーカル音程モニターと同じアルゴリズムで基本周波数解析を行う。 時間分解能のずれ スペクトログラムはF#1まで4分音の周波数分解能に対応しているため、サンプリング周波…