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トリガはボタン式音量なので、これも不人気機能の一つ)を取るか・・・。
個人的には、作業工賃ほどの利点は無いとの判断で、オーダーが無い限り、標準機能として搭載するのは見送りました。
早押し機に限らず、色々応用はできそう。これもアリでしょうね。