#author("2017-05-09T19:13:56+09:00","default:qua","qua") * Mozzi [#z445bc71] Toneより高機能の音声出力のためのライブラリ。 - [[公式ドキュメント>http://sensorium.github.io/Mozzi/]] - [[ライブラリMozzi-1.0.2.zip>http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/lib/Mozzi-1.0.2.zip]] - Arduinoとの接続~ スピーカには9番ピンとGNDを接続する。 ** プログラミング [#lf041504] 外側に書く内容 #include <MozziGuts.h> #include <Oscil.h> #include <tables/sin2048_int8.h> // 正弦波の表 #include <mozzi_midi.h> // 音の高さを周波数に変換するためのmtof()関数を用いるため。 #define CONTROL_RATE 64 // 下記updateControlが1秒間に呼び出される頻度。2のべき乗を設定。 Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin(SIN2048_DATA); // AUDIO_RATEはサンプリング周期。デフォルトは16384Hz #author("2019-04-21T23:41:57+09:00","default:qua","qua") setup()の内容は、少なくともstartMozziを含むこと。CONTROL_RATEは上記で定義されている。 void setup(){ startMozzi(CONTROL_RATE); aSin.setFreq( mtof(60) ); // 中央のド } loop()の内容は必ず次のようにする。これ以外を書かないこと。 void loop(){ audioHook(); } updateControlでは外部機器との入出力や、音程、音量などの制御を行なう。analogReadの代わりに、mozziAnalogReadを用いること。 void updateControl(){ int r; r = mozziAnalogRead(A0); r = map( r, 0, 1023, 0, 127 ); aSin.setFreq( mtof(r) ); } updateAudioは音波の次のサンプル値を返す。 int updateAudio(){ return aSin.next(); // 正弦波の表からデータを返す。 } ** [[Mozzi出力回路:http://sensorium.github.io/Mozzi/learn/output/]]のためのアダプタ [#mc74d01c] -HiFi用 #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/mozzi_hifi.png) 右の9, 10, GNDをArduinoの9, 10, GNDピンへ。左の4つ並んだ方の端子にオーディオジャックを接続。 -Standard用ローパスフィルタ #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/mozzi_std.png) 右の9, GNDをArduinoの9, GNDピンへ。左の端子にオーディオジャックを接続。