Skip to content

第7回 Pd+micro:bitで電子楽器

今回のゴール

Pdとmicro:bitのセンサを組み合わせて、シンプルな電子楽器を制作します。これまでに学んだPdの音響処理とmicro:bitのセンサ連携を活用して、実際に「演奏できる」楽器を作ることが目標です。

この回では、以下の4つの電子楽器を作ります。

  • 加速度センサを使ったハンドベル
  • 音センサを使った強風エフェクト
  • 圧力センサを使ったドラム
  • 【参考】加速度センサを使った波の再現

加速度センサでハンドベルを作ろう

micro:bitの加速度センサを使って、本体を振ると音が鳴るハンドベルを作ります。

加速度センサの値の取得方法

micro:bitには3軸(X, Y, Z)の加速度センサが内蔵されています。本体を振ったり傾けたりすると、各軸の値が変化します。

  • X軸: 左右の傾き
  • Y軸: 前後の傾き
  • Z軸: 上下の動き(重力方向)

振りの動作を検出するには、加速度の変化量(特にZ軸やX軸)に注目します。

振りの検出から音の再生まで

ハンドベルを実現するための基本的な流れは以下の通りです。

  1. micro:bitから加速度センサの値を受け取ります
  2. 値の変化量が一定の閾値を超えたら「振った」と判定します
  3. 振りを検出したら、ベル音の音源ファイルを再生します

閾値の調整

振りの感度は閾値で調整します。値が小さすぎると少しの動きでも反応してしまい、大きすぎると強く振らないと反応しません。実際に試しながら、ちょうどよい値を見つけましょう。

チャタリング対策

1回の振りで複数回検出されてしまう場合は、else/deltimer を使って一定時間内の再検出を防ぐ仕組み(チャタリング対策)を入れましょう。

パッチの例

ハンドベル


音センサで強風を吹かせよう

micro:bitの音センサ(マイク)を使って、息を吹きかけることで風のようなノイズ音を制御します。

音センサの仕組み

micro:bit v2には内蔵マイクが搭載されています。マイクで検出した音の大きさ(音量レベル)をPdに送ることで、入力の強さに応じた制御ができます。

  • 静かな環境では値が小さくなります
  • 息を吹きかけたり、大きな音を出すと値が大きくなります

息からノイズを制御する

風の音はノイズ(雑音)を使って再現できます。息の強さに応じてノイズの音量やフィルタを変化させることで、風が吹いているような効果を作り出します。

  1. micro:bitの音センサから音量の値を取得します
  2. 値を noise~ オブジェクトの音量にマッピングします
  3. bp~(バンドパスフィルタ)などを使って、風らしい音色に加工します
  4. 息の強さに応じて音量とフィルタの周波数を変化させます

風の音を自然にするコツ

  • フィルタの周波数を少しランダムに揺らすと、より自然な風の音になります
  • else/lowpass を使って値の変化を滑らかにすると、急激な音量変化を防げます

パッチの例

強風


圧力センサでドラムを叩こう

外部の圧力センサ(感圧センサ)をmicro:bitに接続して、叩く強さに応じた音量でドラム音を鳴らします。

圧力センサの接続方法

圧力センサ(FSR: Force Sensitive Resistor)をmicro:bitのアナログ入力端子に接続します。

  1. 圧力センサの一方の端子をmicro:bitの端子(例: P0)に接続します
  2. もう一方の端子をGNDに接続します
  3. 必要に応じてプルアップ抵抗を使用します

配線の注意

  • 接続する端子(P0, P1, P2など)を確認してからプログラムを作成してください
  • ショート(短絡)しないよう、配線に注意してください

強弱の表現

圧力センサの値は、叩く力に応じて変化します。この値を音量にマッピングすることで、強弱のある演奏が可能になります。

  1. micro:bitから圧力センサの値を取得します
  2. 一定の閾値を超えたら「叩いた」と判定します
  3. 圧力の値を音量(0〜1の範囲)に変換します
  4. ドラム音源の音量を変換した値で制御します

表現力を高めるには

  • 閾値を超えた瞬間の値をピーク値として取得すると、叩いた瞬間の強さを反映できます
  • 複数の圧力センサを使えば、キック・スネア・ハイハットなど複数のドラムパーツを演奏できます

パッチの例

圧力ドラム


【参考】加速度センサで波を再現しよう

else/plate.rev.m~ オブジェクトを使って、加速度センサの動きに応じた波のようなリバーブ効果を作ります。

plate.rev.m~ について

else/plate.rev.m~ はプレートリバーブをシミュレートするオブジェクトです。金属板の振動を模した残響効果を生み出します。このリバーブに加速度センサの値を連動させることで、揺れに応じて波のような音響効果を作り出せます。

実装の流れ

  1. micro:bitの加速度センサ(X軸・Y軸)の値を取得します
  2. 加速度の値を else/plate.rev.m~ のパラメータ(残響時間やウェットの割合など)にマッピングします
  3. 入力音源(ノイズやサイン波など)に対してリバーブを適用します
  4. 本体を傾けたり揺らしたりすることで、波のように変化する残響効果が得られます
パラメータの調整ポイント
  • 残響時間(decay)を加速度の大きさに連動させると、揺れが大きいほど長い残響になります
  • ウェット/ドライの比率を傾きに連動させると、傾きに応じてリバーブの深さが変わります
  • 入力にノイズを使うと、海の波のような音になります

パッチの例

波


作品制作に向けて

次回以降は、これまでに学んだ技術を組み合わせて、オリジナルのサウンドアート作品を制作していきます。

以下の点について考えてみましょう。

  • どのセンサを使いたいか: 加速度、明るさ、音、圧力、ボタンなど
  • どんな音を出したいか: 楽器音、環境音、電子音、声の加工など
  • どんなインタラクションにしたいか: 振る、傾ける、叩く、息を吹きかける、触れるなど
  • どんな体験を提供したいか: 演奏する楽しさ、環境の変化を感じる、協力して音を作るなど

アイデアのまとめ方

ノートやメモに、以下の3つを書き出してみましょう。

  1. 使いたいセンサ(複数でもOK)
  2. 出したい音のイメージ(言葉や参考音源)
  3. 操作方法のイメージ(身体の動き)

これらを組み合わせて、自分だけの電子楽器やサウンドアート作品のアイデアを考えてみてください。