2013年05月24日
/*ArduinoのMozziライブラリの発振器は他の言語でのオシレータと同じく1周期の基本波形であるWavetableをループ再生します。正弦波、ノコギリ波、方形波などのWavetableはライブラリ内のtableフォルダにヘッダファイルとして用意されております。sin2048_int8.hファイルは正弦波で2048サンプルポイント、8ビットの離散データが-128から127の整数値で格納されていると言うことです。
ではライブラリにあるsin2048_int8.hで書かれている8bit2048サンプルの正弦波1周期をループ再生して正弦波を鳴らしてみましょう。*/
#include <MozziGuts.h>
#include <Oscil.h> // oscillator templateを使う
#include <tables/sin2048_int8.h>
//Arduino Libraryの下Mozzi/tables内にwavetableのテンプレートがある。
Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin(SIN2048_DATA);
/*sin2048_int8.h で代入された配列変数SIN2048_DATA2048の8bitデータをaSinという変数に格納する。*/
#define CONTROL_RATE 64
// コントールレートを64(64がデフォルト)にする
void setup(){
startMozzi(CONTROL_RATE); // 64が代入
aSin.setFreq(440); //周波数440Hz
}
void updateControl(){
}
int updateAudio(){
return aSin.next(); //繰り返し1周期wavtableのaSinが読まれる。
}
void loop(){
audioHook(); //オーディオバッファに送られ再生される
}
//他の周波数で鳴らしたい時はsetFreq( )の中の数字を変える。
ではライブラリにあるsin2048_int8.hで書かれている8bit2048サンプルの正弦波1周期をループ再生して正弦波を鳴らしてみましょう。*/
#include <MozziGuts.h>
#include <Oscil.h> // oscillator templateを使う
#include <tables/sin2048_int8.h>
//Arduino Libraryの下Mozzi/tables内にwavetableのテンプレートがある。
Oscil <SIN2048_NUM_CELLS, AUDIO_RATE> aSin(SIN2048_DATA);
/*sin2048_int8.h で代入された配列変数SIN2048_DATA2048の8bitデータをaSinという変数に格納する。*/
#define CONTROL_RATE 64
// コントールレートを64(64がデフォルト)にする
void setup(){
startMozzi(CONTROL_RATE); // 64が代入
aSin.setFreq(440); //周波数440Hz
}
void updateControl(){
}
int updateAudio(){
return aSin.next(); //繰り返し1周期wavtableのaSinが読まれる。
}
void loop(){
audioHook(); //オーディオバッファに送られ再生される
}
//他の周波数で鳴らしたい時はsetFreq( )の中の数字を変える。