第6回 自動演奏
今回のゴール
テキストデータやGUIを使った自動演奏の仕組みを学びます。
具体的には、以下の内容を扱います。
- テキストデータを使った自動出力
- テキスト出力による音源ファイルの自動再生
- GUIによる打ち込み(リズムマシン)
- MIDIを介したDAW連携の概要
テキストデータの自動出力
Pdでは、テキストデータを使って任意のタイミングでメッセージを順番に出力することができます。これにより、あらかじめ用意したデータに基づいて音を自動的に鳴らすことが可能になります。
使用するオブジェクト
| オブジェクト | 機能 |
|---|---|
text define | テキストデータを定義・保持する |
text sequence | テキストデータを順番に出力する |
テキストファイルのフォーマット
テキストデータは以下のような形式で記述します。各行がひとつのイベントに対応し、データの後にセミコロン(;)を付けます。
data c;
data d;
data e;
data f;テキストデータの書き方
- 各行に1つのデータを書きます
- 行末にはセミコロン(
;)が必要です dataの後にスペースを空けて値を記述します- 複数の値をスペース区切りで1行に書くこともできます(例:
data c 500;)
パッチの例

text define オブジェクトの中にテキストデータを書き込み、text sequence で順番に出力します。
テキスト出力による音源ファイルの自動再生
text sequence の出力を else/play.file~ に接続することで、テキストデータに書かれた順番に音源ファイルを自動再生できます。
主なメッセージ
| メッセージ | 動作 |
|---|---|
auto | 自動再生モードにする(テキストの待ち時間に従って自動的に次のデータを出力) |
bang | 次のデータを1つ出力する(手動モード) |
line 0 | 先頭に戻る |
手順
text defineにテキストデータ(ファイル名や音階データなど)を書き込みますtext sequenceを作成し、text defineの名前を引数に指定しますautoメッセージを送ると、テキストの各行を自動的に順番に出力しますbangメッセージを送ると、1行ずつ手動で出力できますline 0メッセージで最初の行に戻ります
auto と bang の使い分け
auto: テキストデータに書かれた時間間隔で自動的に進みます。BGMや自動演奏に向いています。bang: ユーザーの操作(ボタンを押すなど)で1音ずつ進めます。インタラクティブな演奏に向いています。
パッチの例

GUIによる打ち込み
else/drum.seq オブジェクトを使うと、グラフィカルなインターフェースでリズムパターンを打ち込むことができます。マウスでクリックして直感的にリズムを組み立てられます。
使用するオブジェクト
| オブジェクト | 機能 |
|---|---|
else/drum.seq | リズムパターンのGUIエディタ |
else/tempo | テンポ(BPM)を設定する |
route | 出力されたデータを楽器ごとに振り分ける |
BPMの設定方法
else/tempo オブジェクトでBPM(Beats Per Minute: 1分あたりの拍数)を設定します。
- 引数にBPMの値を指定します(例:
else/tempo 120) - 数値メッセージでBPMを動的に変更することもできます
BPMの目安
| BPM | テンポ感 |
|---|---|
| 60〜80 | ゆっくり(バラード) |
| 100〜120 | 普通(ポップス) |
| 120〜140 | やや速い(ダンスミュージック) |
| 140〜180 | 速い(ドラムンベース) |
リズムマシンの組み立て方
else/drum.seqを作成し、GUIでリズムパターンを打ち込みますelse/tempoでBPMを設定しますrouteで各トラック(キック、スネア、ハイハットなど)の出力を振り分けます- 各トラックに音源(
else/play.file~やシンセサイザー)を接続します
パッチの例

MIDIを介したDAWによる自動演奏
参考情報
PdはMIDI(Musical Instrument Digital Interface)を使って、DAW(Digital Audio Workstation)ソフトウェアと連携することもできます。
概要
MIDIとは、電子楽器やコンピュータ間で演奏データをやり取りするための規格です。PdからMIDIメッセージを送信したり、外部のDAW(Ableton Live、GarageBandなど)からMIDIメッセージを受信したりできます。
PdでのMIDIの使い方
- MIDI出力:
noteoutオブジェクトでMIDIノートを送信できます - MIDI入力:
noteinオブジェクトで外部からのMIDIノートを受信できます - 仮想MIDIバス: macOSの場合は「Audio MIDI設定」で仮想MIDIバスを作成して、PdとDAWを接続できます
本授業での扱い
MIDI連携は発展的な内容です。本授業では概要の紹介にとどめますが、作品制作で活用したい場合は相談してください。
練習問題
練習1: Aボタンで「かえるの歌」を1音ずつ再生
text define と text sequence を使って「かえるの歌」のメロディを用意し、micro:bitのAボタンを押すたびに1音ずつ再生するパッチを作成してください。
ヒント
text defineにかえるの歌の音階データを記述します(例:data c;data d;data e;data f;...)text sequenceのbangメッセージを使って、1音ずつ出力します- micro:bitのAボタンが押されたときに
bangを送るようにします - 出力された音階データを
osc~や音源ファイルに接続して音を鳴らします - 曲の最後まで到達したら
line 0で最初に戻すことも考えましょう
練習2: リズムマシンにmicro:bitの傾きでテンポ変化
else/drum.seq を使ったリズムマシンを作成し、micro:bitの傾きでBPM(テンポ)を変化させるパッチを作成してください。
ヒント
else/drum.seqでリズムパターンを作成しますelse/tempoでBPMを制御します- micro:bitの傾き(加速度センサ)の値を取得します
- 傾きの値をBPMの範囲(例: 60〜180)にマッピングします
scaleオブジェクトなどを使って値の範囲を変換しましょう- 値が急激に変化しすぎる場合は、
else/lowpassなどで滑らかにすることも検討しましょう