Arduino nanoの内蔵メモリだけでドラムマシンを作ってみた (+MCP4911) | a24a24a24のブログ

a24a24a24のブログ

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

ドラムマシン。

子供の頃、作ってみたかった物の一つです。

なぜ?といわれてもわかりません、電子楽器が高くて手の届かないものだったからかなあ。

 

 

 

とりあえず、半日あがいて「リズムが鳴るもの(編集機能無し)」を作ってみました。

問題はArduino nanoのメモリが32KBと、おそろしく貧弱なことと。

処理能力もこれまた貧弱なこと。

いろいろとダメ元で試してみました。

 

 

 

 

今回の基板、たったこれだけ。

全部Arduino nanoの自力で処理します。

 

 

 

DAコンバータ MCP4911だけ、音の出口に使います。

PWM出力で工夫すれば、無くても動くでしょう。

 

 

 

ドラムの音データを一つずつ、フリー素材を編集して作ります。

少ないメモリを食わないよう、なるべく小さく短く。かつ聞きやすいよう加工します。

手作業、手作業。

 

音色は、バスドラ、スネア、ハイハットのオープン・クローズ、シンバル、クラップの6つだけ。

サンプリングレートは、ギリギリ音質が許せる16000Hzにしました。

 

 

 

データは文字列にして、プログラムに直接貼り付けます。

 

 

 

リズムの再生データも、手抜きですが直接プログラムに配列で書きました。

楽譜はないので、ふふんふーん♪と鼻歌で適当に並べます。楽しい♪

 

 

プログラムは、この再生データをちぎっては読み、ちぎっては読み。

4チャンネルの再生変数にぶっこみます。

同時に16000分の1秒ごとに、ドラムの音色データを読み込んで、音量調整して加算。

計算値をDAコンバータに投げて、電圧変化でイヤホンを鳴らします。

 

タイミングはこれまた手抜きで、delaymicroseconds()でウェイトを取っているだけです。

まあテストなので・・・ご容赦を。

 

 

 

 

結果がこちら。

意外とそれらしく鳴ったと思いました。

DAコンバータのおかげでノイズも少ない。

 

しかしArduino nanoの処理能力は、もはや限界なのだった。

 

 

 

動作時のメモリ使用量。

32KBメモリのうち、プログラムと音色データで88%を使っています。余裕なし。

2KBのRAMは、リズムパターンの配列に食われています。余裕が少ない。

 

また処理負荷は、ざっくり計算でdelayを除くと8割くらいプログラム実行にかかっているので

これ以上余計な計算を増やすのは厳しいと思われます。

 

 

 

 

もっと重たいプログラムを動かしたければ、他のマイコンに移るしかないということか。

 

子供の頃作りたかった物を作ったと同時に、

なんだか限界が見えて、スッキリした気がします。

おしまい。