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( )の中の数字を変える。


コメントする

名前
 
  絵文字