ディジタル信号処理入門 再生速度&音程エフェクタの制作
録音データの読出しペースを制御する
STM32マイコンのソースコード解説
図1 再生速度の調整にはバッファ・サイズとサンプリング周波数が重要な役割を果たす.バッファ内のサンプルを管理する関数では,$N$サンプルごとに速度調整が行われる.[著・提供]山田 浩之.画像クリックで動画を見る.または記事を読む.詳細は[Webinar/KIT/data]Arm M4/M7/DSP×500MHz!STM32H7ハイスペック計測通信Module開発 |
ディジタル信号処理による音響エフェクトの仕組み
再生速度と音程を制御する仕組み
STM32H7上のオーディオ再生処理では,バッファの管理が重要です.録音データを再生する際,音の速度や音程を変更するためのフィルタリングが行われます.再生速度の変更では,オーディオ・プレイコールバック関数の中で,録音データのバッファへの転送が速度制御と共に実装されます.
データ転送時に速度を変える処理では,重複加算法(Overlap-Add,OLA)が使われます.この手法では,オーバーラップする部分を緩やかに足し合わせることで,不連続な音の切り替わりを滑らかにします.再生速度を速めたり遅くしたりする際,単純にバッファ内のサンプル数を変化させると音の途切れが発生する可能性があるため,OLAが有効です.
音程の変更では,再生速度を保ちながら周波数を操作します.再生速度を遅くした上でサンプリング周波数を元の録音より速く設定することで,音の高さ(ピッチ)を変化させます.このような技術により,例えば低速再生時にも音程が変わらないエフェクトを実現できます.
マイコンを用いたDSPの応用
バッファ管理と再生速度制御
再生速度の調整には,バッファ・サイズとサンプリング周波数が重要な役割を果たします.バッファ内のサンプルを管理する関数では,$N$サンプルごとに速度調整が行われます.たとえば,速度を2倍にする場合はバッファから1つおきにデータを読み出し,再生時間を短縮します.
音程(ピッチ)制御のための周波数変換
音程を変えずに速度を操作するため,再生時のサンプリング周波数($f_S$)を調整します.例えば,音程を1オクターブ上げる場合は,再生速度を2倍にする代わりにサンプリング周波数を元の2倍に設定します.これにより,周波数ドメインでの操作が可能となり,音程と速度を独立して制御できます.
STM32H7マイコンのI/O管理と最適化
STM32H7シリーズのマイコンは,高速な演算処理能力を持ち,I$^2$CやSPIなどのインターフェースを通じてオーディオ・デバイスと連携します.録音データのリアルタイム処理では,これらのインターフェースがバッファの入出力を効率的に行い,遅延の少ない音響処理を可能にします.
STM32H7マイコンを使った音響エフェクトの実装は,DSPの基本と応用を学ぶ上で非常に効果的です.バッファ管理,サンプリング周波数の調整,速度と音程の独立制御といった技術要素を理解することで,応用範囲の広いエフェクトの開発が可能となります.〈著:ZEPマガジン〉
著者紹介
- 2015年 都内電子機器メーカに入社.主にUSB3.1やDisplayPort,MIPI,車載向けSer/Desなど高速インタフェース変換基板の設計開発.回路設計からファームウェア,ソフトウェア開発(C/C++)を担当
- 2023年 「Y-Logic」として独立開業
著書
- 世界統一規格新USBType-C攻略DVD(特集)第4部,トランジスタ技術2020年2月号,CQ出版社.
- 電池交換不要!消費電流1μA未満のソーラ充電式導通チェッカ,トランジスタ技術2020年10月号,CQ出版社.
- AVRでサクッとマイコン開発(特集すべて),トランジスタ技術2021年4月号,CQ出版社.
- 3桁表示ミリオーム計の設計・製作,トランジスタ技術2021年6月号,CQ出版社.
- 直流バイアス付きコンデンサ容量計,トランジスタ技術2021年11月号-2022年3月号(短期連載),CQ出版社.
- 超便利!ICの故障・真贋チェッカの製作,トランジスタ技術2023年3月号,CQ出版社
- 作る!わかる!USBType-C&電源(特集)第1部3-4章,トランジスタ技術2023年6月号,CQ出版社.
- 20mVステップUSB可変電源の製作,トランジスタ技術2023年9月号,CQ出版社.
- 「大安」「仏滅」を計算する六曜カレンダ回路の製作,トランジスタ技術2024年3月号,CQ出版社.
参考文献
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- 実験しながら学ぶフーリエ解析とディジタル信号処理[Vol.1:フーリエ解析の基本「三角関数」の正しい理解]
- [VOD]Pythonで学ぶ やりなおし数学塾2【フーリエ解析】