ESP32のDACで、音階を鳴らしてドラクエを演奏 | a24a24a24のブログ

a24a24a24のブログ

アメピグ残党。
釣り、温泉、お出かけ、パソコン。最近、電子工作。

二年前の2020年2月。

コロナ渦でマスクだの外出自粛だの大騒ぎになり、家に籠る時間が大量に発生しました。

 

これも何かの機会と思い、

「子供の頃から興味があった、楽器のように音が鳴る電子工作を作れないか」と、

あれこれ試してきました。

 

 

今回はそんな二年間のまとめとして

ESP32マイコン単体で、「ドラクエのオープニング曲」を演奏するプログラムを自作しました。

 

 

 

 

 

おなじみ、ESP32ボード。

右からUSBで給電すると、下のイヤホンやスピーカーに音が出ます。

処理することはC言語でプログラムして、ESP32ボードに書き込みます。

 

 

 

 

作ったプログラムを図にしてみました。

メイン処理が、楽譜データを元に演奏指示を出し、

バックグラウンド処理(タイマー割り込み)が音声データを音階にしてゴリゴリと再生、毎秒6万回行います。

要するに、「録音した楽器の音」をプログラムで伸び縮みさせて、複数の音階にしつつ

計算した音の波で超高速に電圧指定して、スピーカーを鳴らす感じです。

低周波治療器を100倍速く動かしたら、電極が悲鳴を上げたみたいなイメージです(たぶん)。

最終段にディレイ処理=疑似エコーを入れました。

 

テンポ変更、音量指定、オクターブシフト、発音長指定(スタッカート)なども追加しました。

 

 

楽譜は以下を使わせて頂きました。
「ドラゴンクエスト組曲メドレー ホルン4重奏」
https://www.youtube.com/watch?v=ph4vlc1mhAM

 

 

 

 

 

音声データは、手元の中古キーボード SK1XGで「ド」の音を弾いて録音、数値化しました。

プログラムもデータも我流なので、音質向上が今後の課題です。

 

 

今回、楽譜の関係で同時発音5音しか使っていませんが、

負荷テストを行ったところ、5倍の最大25音まで一緒に鳴らせました。

処理に余裕ある分で、音を重ねたり、LRに2音振ってステレオにしたり、工夫が出来るかもしれません。

 

 

 

コロナ渦はまだまだ収まらなさそうですし、

引き続き、三年目を試していきたいです。

おしまい。