Mozzi

Toneより高機能の音声出力のためのライブラリ。

プログラミング

外側に書く内容

#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

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出力回路のためのアダプタ


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS