二年前の2020年2月。
コロナ渦でマスクだの外出自粛だの大騒ぎになり、家に籠る時間が大量に発生しました。
これも何かの機会と思い、
「子供の頃から興味があった、楽器のように音が鳴る電子工作を作れないか」と、
あれこれ試してきました。
今回はそんな二年間のまとめとして
ESP32マイコン単体で、「ドラクエのオープニング曲」を演奏するプログラムを自作しました。
おなじみ、ESP32ボード。
右からUSBで給電すると、下のイヤホンやスピーカーに音が出ます。
処理することはC言語でプログラムして、ESP32ボードに書き込みます。
作ったプログラムを図にしてみました。
メイン処理が、楽譜データを元に演奏指示を出し、
バックグラウンド処理(タイマー割り込み)が音声データを音階にしてゴリゴリと再生、毎秒6万回行います。
要するに、「録音した楽器の音」をプログラムで伸び縮みさせて、複数の音階にしつつ
計算した音の波で超高速に電圧指定して、スピーカーを鳴らす感じです。
低周波治療器を100倍速く動かしたら、電極が悲鳴を上げたみたいなイメージです(たぶん)。
最終段にディレイ処理=疑似エコーを入れました。
テンポ変更、音量指定、オクターブシフト、発音長指定(スタッカート)なども追加しました。
楽譜は以下を使わせて頂きました。
「ドラゴンクエスト組曲メドレー ホルン4重奏」
https://www.youtube.com/watch?v=ph4vlc1mhAM
音声データは、手元の中古キーボード SK1XGで「ド」の音を弾いて録音、数値化しました。
プログラムもデータも我流なので、音質向上が今後の課題です。
今回、楽譜の関係で同時発音5音しか使っていませんが、
負荷テストを行ったところ、5倍の最大25音まで一緒に鳴らせました。
処理に余裕ある分で、音を重ねたり、LRに2音振ってステレオにしたり、工夫が出来るかもしれません。
コロナ渦はまだまだ収まらなさそうですし、
引き続き、三年目を試していきたいです。
おしまい。