マイコン工作実験日記

Microcontroller を用いての工作、実験記録

Oscilloscope Music - オーディオの再生

2024-09-22 15:04:27 | DoomPlayer

本記事では、前記事で触れたOscilloscope Musicについて紹介します。この機能は、Oscilloscope Musicのサイトで紹介されている音源ファイルを再生するものです。今回は、2016年にリリースされたアルバムを連続して再生する機能を実装してみました。サイト上で紹介されているように、オシロスコープをXY表示モードに設定しておき、再生した音楽の左チャンネルをX方向の入力、右チャンネルをY方向入力につないでやると、その音に対応した図形が描画表示されるというものです。アナログスコープを使った方が、輝線の残像効果に風情があるので、わざわざテクトロの中古を購入して再生している画像もYouTubeにはいくつもあがっていますが、PC上で再生するためのソフトも用意されているので、オシロスコープを持っていなくとも充分に楽しむことができます。

音源ファイルは有料で配布されており、代金を支払うとダウンロードして入手することができます。2016年のアルバムの場合、ホームページの説明にあるように全10曲が WAVフォーマットで配布されています。192KHzのステレオで非圧縮の16ビットPCMなので総量は1.52GBになるのですが、実際に入手して確認してみると1曲目の''01 Dots'' だけは96Kサンプリングになっていました。データ量は大きいですが、今時のSDカードを使えば何の問題もなく、fatfsを使って読み出すことができます。幸いなことにDoomPlayerで使っているTLV320DAC3203は192KHzまで対応しているので、読み出した16ビットPCMデータをそのままSAIを使ってTLV320DAC3203に送ってやれば音を再生することができます。

実際にPCMデータを送信するには、サンプリング周波数に応じたクロックを生成するために、STM32U5のPLLを設定したり、CODECの設定を変更したりする必要もあります。これらの準備を済まして音源を再生してみたのですが、当初は 96Kサンプリングの1曲目は再生できるものの、192Kサンプリングの2曲目以降がまっとうな音にならないという問題に遭遇。しばらく悩んでいましたが、ロジアナをつないでSAIの出力信号を確認したところ、SCK, FS, SD信号はきちんと出ているものの、MCK信号は192Kに設定すると出力されていないことが判明。SAIの設定を確認すると GPIOの出力スピード設定が Lowになっていたので、これをMediumに修正することで正常に音が出るようになりました。