Arduinoでドラムマシンのような打楽器の音色を作る実験

この記事では、Arduinoとバンドパスフィルタを使ってドラムマシンのような打楽器音を作ってみたので、その実験を紹介をする。

はじめに

実は先日、ブリッジドT型のバンドパスフィルタをつくっていた時に、アナログドラムマシンTR-808の回路にも使われていることが分かって早速実験してみたかったのだ。

バンドパスフィルタのインパルス応答
バンドパスフィルタのインパルス応答

パルス音をバンドパスフィルタに通すと、音程を持った音色として音が変化するのだ。これはバンドパスフィルタのインパルス応答に他ならない。

パルス信号を発生するにはArduinoがもっとも簡単だ。そこで、Arduinoでクリック音(パルス電圧)を発生させて、アナログ回路のバンドパスフィルタを通して打楽器のようなサウンドが作れるか実験してみた。

パルスジェネレータの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型バンドパスフィルタ

バンドパスフィルタは、前回の記事で作ったブリッジドT型バンドパスフィルタを使う。

ブリッジドT型バンドパスフィルタの詳しい作り方はこちらの記事を参考にしてもらいたい。オペアンプひとつで作れるので、それほど難しくはないと思う。

バントパスフィルタモジュール
バントパスフィルタモジュール

自分の場合は、バンドパスフィルタをブレッドーボードで使いやすくするために、このようにモジュール化してある。外部の可変抵抗で中心周波数を変化できるようにした。

モジュールは、銅基板をレジストペンで配線してエッチングして作っている。CADを使わなくても好きな基板を気軽に作ることができるので結構オススメ。

打楽器の音色を作る実験

打楽器の音色を作る実験
打楽器の音色を作る実験

最後に、Arduinoでドラムマシンのような打楽器音を作る実験結果の紹介。ディケイドボックス(可変抵抗)をバンドパスフィルタに繋いで中心周波数を変えながら、Arduinoのパルス信号をフィルタリングしてみた。実験の模様を動画にしたのでご覧いただきたい。

動画のように、バンドパスフィルタの中心周波数を変えることでさまざまな打楽器のような音色が作れる。中心周波数を低域にすれば、バスドラ(キック)やロータムのような音色になり、中音域付近ではタムやボンゴ、高域ではカスタネットから拍子木のような硬い音になる。バンドパスフィルタひとつでも、このようなさまざまな音色変化することに驚きだ。

Arduinoを使えば、複数チャネルでパルス信号を出せるのでもっと発展させれば本格的なリズムマシンが作れるかもしれない。興味ある方は、挑戦してみてはどうだろうか?

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事