第7回 Pd+micro:bitで電子楽器
今回のゴール
Pdとmicro:bitのセンサを組み合わせて、シンプルな電子楽器を制作します。これまでに学んだPdの音響処理とmicro:bitのセンサ連携を活用して、実際に「演奏できる」楽器を作ることが目標です。
この回では、以下の4つの電子楽器を作ります。
- 加速度センサを使ったハンドベル
- 音センサを使った強風エフェクト
- 圧力センサを使ったドラム
- 【参考】加速度センサを使った波の再現
加速度センサでハンドベルを作ろう
micro:bitの加速度センサを使って、本体を振ると音が鳴るハンドベルを作ります。
加速度センサの値の取得方法
micro:bitには3軸(X, Y, Z)の加速度センサが内蔵されています。本体を振ったり傾けたりすると、各軸の値が変化します。
- X軸: 左右の傾き
- Y軸: 前後の傾き
- Z軸: 上下の動き(重力方向)
振りの動作を検出するには、加速度の変化量(特にZ軸やX軸)に注目します。
振りの検出から音の再生まで
ハンドベルを実現するための基本的な流れは以下の通りです。
- micro:bitから加速度センサの値を受け取ります
- 値の変化量が一定の閾値を超えたら「振った」と判定します
- 振りを検出したら、ベル音の音源ファイルを再生します
閾値の調整
振りの感度は閾値で調整します。値が小さすぎると少しの動きでも反応してしまい、大きすぎると強く振らないと反応しません。実際に試しながら、ちょうどよい値を見つけましょう。
チャタリング対策
1回の振りで複数回検出されてしまう場合は、else/del や timer を使って一定時間内の再検出を防ぐ仕組み(チャタリング対策)を入れましょう。
パッチの例

音センサで強風を吹かせよう
micro:bitの音センサ(マイク)を使って、息を吹きかけることで風のようなノイズ音を制御します。
音センサの仕組み
micro:bit v2には内蔵マイクが搭載されています。マイクで検出した音の大きさ(音量レベル)をPdに送ることで、入力の強さに応じた制御ができます。
- 静かな環境では値が小さくなります
- 息を吹きかけたり、大きな音を出すと値が大きくなります
息からノイズを制御する
風の音はノイズ(雑音)を使って再現できます。息の強さに応じてノイズの音量やフィルタを変化させることで、風が吹いているような効果を作り出します。
- micro:bitの音センサから音量の値を取得します
- 値を
noise~オブジェクトの音量にマッピングします bp~(バンドパスフィルタ)などを使って、風らしい音色に加工します- 息の強さに応じて音量とフィルタの周波数を変化させます
風の音を自然にするコツ
- フィルタの周波数を少しランダムに揺らすと、より自然な風の音になります
else/lowpassを使って値の変化を滑らかにすると、急激な音量変化を防げます
パッチの例

圧力センサでドラムを叩こう
外部の圧力センサ(感圧センサ)をmicro:bitに接続して、叩く強さに応じた音量でドラム音を鳴らします。
圧力センサの接続方法
圧力センサ(FSR: Force Sensitive Resistor)をmicro:bitのアナログ入力端子に接続します。
- 圧力センサの一方の端子をmicro:bitの端子(例: P0)に接続します
- もう一方の端子をGNDに接続します
- 必要に応じてプルアップ抵抗を使用します
配線の注意
- 接続する端子(P0, P1, P2など)を確認してからプログラムを作成してください
- ショート(短絡)しないよう、配線に注意してください
強弱の表現
圧力センサの値は、叩く力に応じて変化します。この値を音量にマッピングすることで、強弱のある演奏が可能になります。
- micro:bitから圧力センサの値を取得します
- 一定の閾値を超えたら「叩いた」と判定します
- 圧力の値を音量(0〜1の範囲)に変換します
- ドラム音源の音量を変換した値で制御します
表現力を高めるには
- 閾値を超えた瞬間の値をピーク値として取得すると、叩いた瞬間の強さを反映できます
- 複数の圧力センサを使えば、キック・スネア・ハイハットなど複数のドラムパーツを演奏できます
パッチの例

【参考】加速度センサで波を再現しよう
else/plate.rev.m~ オブジェクトを使って、加速度センサの動きに応じた波のようなリバーブ効果を作ります。
plate.rev.m~ について
else/plate.rev.m~ はプレートリバーブをシミュレートするオブジェクトです。金属板の振動を模した残響効果を生み出します。このリバーブに加速度センサの値を連動させることで、揺れに応じて波のような音響効果を作り出せます。
実装の流れ
- micro:bitの加速度センサ(X軸・Y軸)の値を取得します
- 加速度の値を
else/plate.rev.m~のパラメータ(残響時間やウェットの割合など)にマッピングします - 入力音源(ノイズやサイン波など)に対してリバーブを適用します
- 本体を傾けたり揺らしたりすることで、波のように変化する残響効果が得られます
パラメータの調整ポイント
- 残響時間(decay)を加速度の大きさに連動させると、揺れが大きいほど長い残響になります
- ウェット/ドライの比率を傾きに連動させると、傾きに応じてリバーブの深さが変わります
- 入力にノイズを使うと、海の波のような音になります
パッチの例

作品制作に向けて
次回以降は、これまでに学んだ技術を組み合わせて、オリジナルのサウンドアート作品を制作していきます。
以下の点について考えてみましょう。
- どのセンサを使いたいか: 加速度、明るさ、音、圧力、ボタンなど
- どんな音を出したいか: 楽器音、環境音、電子音、声の加工など
- どんなインタラクションにしたいか: 振る、傾ける、叩く、息を吹きかける、触れるなど
- どんな体験を提供したいか: 演奏する楽しさ、環境の変化を感じる、協力して音を作るなど
アイデアのまとめ方
ノートやメモに、以下の3つを書き出してみましょう。
- 使いたいセンサ(複数でもOK)
- 出したい音のイメージ(言葉や参考音源)
- 操作方法のイメージ(身体の動き)
これらを組み合わせて、自分だけの電子楽器やサウンドアート作品のアイデアを考えてみてください。