【Arduino】打楽器の音色をつくってみた【ドラムマシン】
この記事では、Arduinoとバンドパスフィルタを使ってドラムマシンのような打楽器音を作ってみたので、その実験を紹介をする。
はじめに
実は先日、ブリッジドT型のバンドパスフィルタをつくっていた時に、アナログドラムマシンTR-808の回路にも使われていることが分かって早速実験してみたかったのだ。
パルス音をバンドパスフィルタに通すと、音程を持った音色として音が変化するのだ。これはバンドパスフィルタのインパルス応答に他ならない。 パルス信号を発生するにはArduinoがもっとも簡単だ。そこで、Arduinoでクリック音(パルス電圧)を発生させて、アナログ回路のバンドパスフィルタを通して打楽器のようなサウンドが作れるか実験してみた。
パルスジェネレータのArduinoプログラム
Arduinoのプログラムは非常に簡単だ。デジタルピン2番を使って極短時間のパルス電圧を一定間隔で発生させているだけだ。
#include <Arduino.h>
int D2 = 2;
void setup() {
pinMode(D2, OUTPUT);
}
void loop() {
digitalWrite(D2, HIGH);
digitalWrite(D2, LOW);
delay(300);
}
このような短時間のパルス信号はさまざまな周波数成分をもつとされている。 実は、パルス信号はさまざまな周波数の余弦波を足し算することで作ることができるのだ。また、すべての周波数の余弦波を足し合わすことができれば、無限大に小さい時間で無限大の大きさを持つ信号になる。そしてこのような信号を、インパルスと呼ぶ。 インパルスに関してはこちらの記事に詳しく書いた。
ちなみに、今回の実験ではArduino Uno Rev3を使用したが、好きなArduino互換機でも構わない。さまざまなArduino互換機を使ってきたが、個人的には正規品のArduino Unoがおすすめである。Arduino互換機では「書き込みできなくなる現象」多々起きるが、Arduino Uno Revにしてからは一度も書き込みエラーが起きていない。よって、実験中のストレスがまるで違う。
バンドパスフィルタ
バンドパスフィルタは、前回の記事で作ったブリッジドT型バンドパスフィルタを使う。 ブリッジドT型バンドパスフィルタの詳しい作り方はこちらの記事を参考にしてもらいたい。オペアンプひとつで作れるので、それほど難しくはないと思う。
自分の場合は、バンドパスフィルタをブレッドーボードで使いやすくするために、このようにモジュール化してある。外部の可変抵抗で中心周波数を変化できるようにした。 モジュールは、銅基板をレジストペンで配線してエッチングして作っている。CADを使わなくても好きな基板を気軽に作ることができるので結構おすすめ。
打楽器の音色を作る実験
最後に、Arduinoでドラムマシンのような打楽器音を作る実験結果の紹介。ディケイドボックス(可変抵抗)をバンドパスフィルタに繋いで中心周波数を変えながら、Arduinoのパルス信号をフィルタリングしてみた。実験の模様を動画にしたのでご覧いただきたい。
Make percussion sounds with Arduino and BPF - YouTube
動画のように、バンドパスフィルタの中心周波数を変えることでさまざまな打楽器のような音色が作れる。中心周波数を低域にすれば、バスドラ(キック)やロータムのような音色になり、中音域付近ではタムやボンゴ、高域ではカスタネットから拍子木のような硬い音になる。バンドパスフィルタひとつでも、このようなさまざまな音色変化することに驚きだ。 Arduinoを使えば、複数チャネルでパルス信号を出せるのでもっと発展させれば本格的なリズムマシンが作れるかもしれない。