小学校にフィジカル・コンピューティングを(其の3)


←サイトトップページへ

ページの末尾へ↓

2010年2月1日 Arduinoで電子楽器のようなものを作る実験

これまで、時間を見つけてArduinoで使えるさまざまなモジュール(って、たいしたものではありませんが…)を作ってきましたが、いくつかでき上がったものを使って実際に回路を組んで動かしてみようと考えました。そもそもPCの部品ならいろいろと取り揃えているので、これらも合わせて利用しながら、簡単な「楽器」を作ってみることにしました。使ったものは、次の通りです。

ミニ・ブレッドボード PCマザーボード用スピーカ 可変抵抗 タクトスイッチ 抵抗10kΩ

このスピーカに電気を流すと、一瞬だけ「ブツッ」というような音がします。でも、それ以上は何も音が出ません。これをある一定の周期(周波数)で ON/OFFさせることで、一つの音が出るようになります。「delayMicroseconds()」を使って可変抵抗器の値をON/OFFの周期とし て使い、スピーカーを鳴らすことに成功しました。いかにも電子音ぽい音(「ワー」「ウー」というような感じの音)で、なかなか良い感じです。でも、これだ けだとArduinoに電源をつないで(今回はUSBポートから給電)すぐに音が出てしまいます。鍵盤のように、スイッチを押すと音が出るような仕組にす るために、タクトスイッチを入れることにしました。でき上がったものは、こんな感じになりました。

10kΩの抵抗がずらっと並んでいるのは、LEDを並べて点灯させる実験をする際に、抵抗を一つ一つつけるのが面倒だったので、モジュール化したも のをこの実験にも流用したからです。(よく考えたら並列回路になっているので、このようなつなぎ方だと「10/4kΩ」ということになるんじゃないか と…)これを動かすためにArduino-IDEで書いたスケッチは、次のようになります。

// Synthesizer01

#define SPEAKER 13 // スピーカを13番に接続
#define BUTTON 7 // タクトスイッチを7番に接続
#define VOLUME 0 // 可変抵抗器を0番に接続

int val = 0;
int sw = 0;

void setup(){
pinMode(SPEAKER, OUTPUT); // スピーカーをOUTPUTに設定
pinMode(BUTTON, INPUT); // タクトスイッチをINPUTに設定
pinMode(VOLUME, INPUT); // 可変抵抗器をINPUTに設定
}
void loop(){
sw = digitalRead(BUTTON); // タクトスイッチの値を取得してswに格納
if(sw == HIGH){
val = analogRead(VOLUME) + 500; // 可変抵抗の値を取得して500を加算し、valに格納
digitalWrite(SPEAKER, HIGH);
delayMicroseconds(val);
digitalWrite(SPEAKER, LOW);
delayMicroseconds(val);
}
else{
digitalWrite(SPEAKER, LOW);
}
}

タクトスイッチの値を「digitalRead(BUTTON)」で、可変抵抗器の値を「analogRead(VOLUME)」で取得しています。配線を模式的に示すと、こんな感じになります。(図の一部は、EtoysベースのArduino.7からお借りしました)

楽器というには、あまりにも単純なものです。音の安定性も悪く、音程の調節が難しいです。しかし、これに複数のスイッチをつないで鍵盤のように音を 割り当てたり、音色を変化させたり音程を整えたりする仕組を導入したりすれば、より楽器(シンセサイザー)っぽくなって行くような気がします。とりあえ ず、ここまで使った可変抵抗器とタクトスイッチ+10kΩの抵抗を組み合わせて、モジュールにしてしまおうかと思っていますが、手持ちの部品が足りなく なってきたので買いに行かなければなりません。まだまだ知識や技術が追いついていませんが、これをベースにしながら、楽器づくりを続けて行きたいと思って います。

ゆくゆくは、学研の「SX-150」(参考)や「テルミンmini」(参考)あたりとArduinoやGainerなどをつないで、音を出したり加工したりしてみたいと思っています。どこまでできるかわかりませんが、楽しいことができそうな予感がします。

      1 2 3 4 5 6 7 8 9 10 11 12 13 14      
←サイトトップページへ

ページの先頭へ↑


Copyright(C) 2010-now Yoshito Hosako(寳迫 芳人). All rights reserved.