
最近、ちょいちょい製作例を見かけるArduinoで作るシンセサイザー、Auduino('r'をもじって'u'にしている)。Make: Tokyo Meeting 03でも距離センサーを使ったものが展示されていた。距離センサーを2つにすればテルミンっぽい何かができるかもしれない、、と思って作ってみた。音量を調節するボリュームがあるとおもっていたけど、そうでもないみたい。。なので距離センサーは一個。
距離センサーはシャープの測距センサーGP2Y0A21(秋月電子)を使った。このモジュールは10cm〜80cmの距離を0.5V〜2.5Vの範囲で出力する。測距センサーを使うために次のようにスケッチを変更した。
int measureDistance(int oldvalue,int pin)
{
return (oldvalue - (oldvalue >> 4)) + (analogRead(pin)>>4);
}
int normalizeDistance(int distance)
{
#define RANGE 512
#define MINV (122)
#define MAXV (MINV+RANGE-1)
if(distance < MINV) distance = MINV;
else if(distance > MAXV) distance = MAXV;
distance -= MINV;
return distance << 1;
}
void loop() {
..
sync_ain = measureDistance(sync_ain,SYNC_CONTROL);
syncPhaseInc = mapPentatonic(1024 - (normalizeDistance(sync_ain)));
..
}
Auduinoはグラニュラーシンセシス(GranularSynthesis)という技術を使っている。これは小さな音の粒を時間的・空間的にランダムに配置して、音を生成するという技術、らしい(笑
スケッチを読んでなんとなーく分かったのは2つの音の粒(Grain)を合成して、出力する値を作っているってことぐらい。。
Auduino - tinkerit
http://code.google.com/p/tinkerit/wiki/AuduinoAuduino - Arduino で作るお手軽シンセ - Radium Software
http://d.hatena.ne.jp/KZR/20090510/p2Auduino: DIY Synthesizer - Radium Software
http://d.hatena.ne.jp/KZR/20090517/p1グラニュラーシンセシスとゆーものについて勉強してみる
http://www.geocities.jp/brotherasazuke/sakekanworks/granulizer/01.htm