Arduinoで音を出す

音装置については、Wavトリガーを好んで使っています。

ワンショット(チョン押し)でも長押しでも1音1回再生が可能、アンプ搭載なので、そのままスピーカーにつなげられる、外部出力がある、マイクロSDで音が変えられる、反応が早いなどの利点があります。
欠点は高いこと。6000円超えは本体価格に直結する価格です。その代わり、加工賃が殆ど無いというのも利点。

でまあ、音装置に関しては色々試しましたが、多機能なものは反応が遅く、低機能のものはアンプが載っていないなど一長一短だったのです。

ネットを漁っていましたら、「Arduinoダケで音をならす(SDカードなどの外部メモリを使用しない)」というのがありまして、ちょっと試しに作ってみました。

参考資料はこちら
http://nn-hokuson.hatenablog.com/entry/2017/09/01/092945 (おもちゃラボ)
https://hello-world.blog.so-net.ne.jp/2016-10-18 (放課後マイコンクラブ)

1:フリーのオーディオ編集ソフト「Audacity」を入手します。Windows10環境でチャレンジしてみました。

2:既存の音ファイルを変換します。

サンプリング周波数を 8000に (データを少なくするため)
モノラル化
Export - Export as WAV  より
「その他の非圧縮ファイル」
「ヘッダ:WAV (Microsoft)」
「エンコーディング:Unsigned 8-bit PCM」

でWavファイルを作ります。

放課後マイコン倶楽部様の「PROGMEM作蔵さん」を使用します。C言語のデータ配列に変換します。

3:できたデータのトップの部分

const uint8_t bindata[] PROGMEM = { ... }; 

bindata」 を 任意に書き直します「URUTORAKUIZU」とか。
で、できたデータを「URUTORAKUIZU.h」としてスケッチと同じフォルダ内に保存できるように準備します。

4:放課後マイコンクラブ様のスケッチを元に、データの名前の部分を書き換えて完成です。


5:圧電スピーカーを9番(10番でもよい)とGNDにつなげて書きこみます。

先ずはウルトラクイズの効果音で試しました。ステレオ変換を忘れて戸惑いましたが、手順をきちんとすると、きちんと鳴ります。
音質は間違いなく悪いですが、使用に耐えるレベルです。ただ音質が悪いので聞きづらい音もあり、音量(ゲイン)を先のAudacitiyで修正しました。

次にSSJ002用の音データを扱いましたが、押し下げ音の音質を下げる(8000)とあまりよろしくなく、そのままだとデータ量が大きすぎるというジレンマ。正解、不正解、押し下げ(2着押し下げは無し)でも90%のメモリ量(容量32kb)を超えます。

Arduino UNOはぎりぎり入りましたが、Prominiは2%分システムメモリを使われるので、これでは入りません。泣く泣く音質を下げざるを得ないかと思っております。

にしても、2着の音とアタック音は、どちらの場合も入りませんし、このままでは音が小さすぎるので別途ボリウム付きのアンプ(1000円未満程度)を付ける必要はあります。Arduino Promini は互換機で1000円程度、作業工賃は1000円として、4000円で諸費用含め賄えるか。となるとWavトリガと2000円しか違いがありません。

2000円でアタック音と音質を担保するか、音質と音種を犠牲にして、安さとボリウム音量(Wavトリガはボタン式音量なので、これも不人気機能の一つ)を取るか・・・。

個人的には、作業工賃ほどの利点は無いとの判断で、オーダーが無い限り、標準機能として搭載するのは見送りました。

早押し機に限らず、色々応用はできそう。これもアリでしょうね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です