STM23H5を使ってみる7〜SAIを駆使してPCM5102を動かす胎動編〜

今気づいた…STM32H5の記事1年半くらい更新してなかった…
ていうかラズピコとESP32をArduinoIDEで開発するのが主流になっちゃって
STM32マイコンはオワコンとなってしまいました…

でも私はこれしかないんだ!!
私にはこれ(STM32+makefileのコマンドラインビルド)が最高なんだ!!!



さて・・・2023年からSTM32H5を使いはぢめてはや2年となりますが
やっとこ自前のSDMMCドライバも安定してきたので新しい分野に
ちゃれんぢすることになりました…

とりあえず巷で安く販売されているI2Sインターフェースを持つ
DAI(デジタルオーディオインターフェース)PCM5102を使って音楽を
SDカードから読みだして再生するのが目標です…!!

ていうか実はもうとっくに実装しちゃってwav,mp3,aac,m4aの再生も
ばっちりカバーしてるのですが
それは置いといて話を進めます…



あたらめてデジタルオーディオの世界に突入するにあたり電子書籍でなく実体の
書籍を購入して勉強しております…!

ブルーバックスの「デジタルオーディオの謎を解く」はI2Sなぞまだ影も形もない
1982年に刊行されたほんとに黎明期の書籍ですが始まりを知るにはうってつけです…
通勤時間利用して読めますからね〜…ねむいさんの脳みそにはちょうど良いです。

もう一つの「音のプログラミング」はこれから絶対先避けては通れない
信号処理に関する書物となります…がいきなりΣを含む計算式が出てきた
のでこちらのほうは内容を理解できるのはまだまだ先になりそうです。

とにもかくにも歴史の始まりをひも解いて今ではcommon-senceとなった
概念ががなぜそう決まっていったかを理解していこうと思いました。


*自分なりに解釈した大前提
デジタルオーディオの三大要素は以下の通り
・標本化 (サンプリング)
  ☞ 一番最初の要素。
    ある一定の周期(もしくは周波数)でアナログ信号を取り込むこと。
    44.1kHzとか48kHzとかの値はこれを指す。
    連続した値をとらず、とびとびの値を持つ。
・量子化 (クォンタイズ)
  ☞ 標本化した音の強弱をある一定の値の範囲内で分割すること。
    16ビットとか24ビットとか言われてる値のこと。
    こちらもとびとびの値を持つ。大体8の倍数。
・符号化 (エンコード)
  ☞ 量子化したデータを二進数で表現する方法のこと。
    表現で用いられるデータの幅は上記量子化のビット数に倣う。
    CDの例(リニアPCM)では符号付16bit変数(-32768~32767)で表現される。

ところで"とびとびの値"って表現は離散値と呼ばれているようですね。
量子化学だとまんま"とびとびの値"って言っていました。


*その他
*なぜ44.1kHzっていう周波数に決まったの?
☞"信号成分の最大周波数より2倍以上大きいサンプリング周波数で
 取り込めば原音は十分再現できる"とするシャノンの標本化定理に
 倣うと人間の可聴周波数領域最大は20kHzなので20kHz*2=40kHzとなる。
 なのだがこれよりもちょっと高い周波数にしてやることで高音領域で
 サンプリング周波数の折り返し雑音の影響を受けなくなる。
 なので40kHzよりももうちょっと高い値が求められる。
 
 んでもって最初にCDの規格が出来上がるときにすでに一般に普及
 していたVTRを利用してデジタルデータとして取り込むことになったが
 このVTRの装置の都合上より最終的に44.1kHzの値が決定した。
 
*48kHzとか似た周波数もあるがこれは何か
☞規格立ち上げの際にもめて最終的にこういう形なりました。
 業務向け機器でよく使われる周波数。
 実は最初は50kHzだったのですがこちらもいろんな大人の事情があり
 48kHzが正式な値としてきまりました。


 現在ではサンプリング周波数は大きく分けて44.1kHzの倍数と48kHzの
 倍数が使用されています。
 さらに昨今では192kHzとか非常に高いサンプリング周波数のハイレゾ
 なんかも出回っていますね。



てわけでだいたい歴史がわかったので(ガバガバですが)これから改めて
これらの概念を用いてSTM32H5を使いDAI(デジタルオーディオインターフェース)
に音激をたたきこんでいく方法を次回もじっくり模索していきます…!

Comments

Post a Comment








Go to top of page