Skip to content

第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先頭に戻る

手順

  1. text define にテキストデータ(ファイル名や音階データなど)を書き込みます
  2. text sequence を作成し、text define の名前を引数に指定します
  3. auto メッセージを送ると、テキストの各行を自動的に順番に出力します
  4. bang メッセージを送ると、1行ずつ手動で出力できます
  5. 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速い(ドラムンベース)

リズムマシンの組み立て方

  1. else/drum.seq を作成し、GUIでリズムパターンを打ち込みます
  2. else/tempo でBPMを設定します
  3. route で各トラック(キック、スネア、ハイハットなど)の出力を振り分けます
  4. 各トラックに音源(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 definetext sequence を使って「かえるの歌」のメロディを用意し、micro:bitのAボタンを押すたびに1音ずつ再生するパッチを作成してください。

ヒント
  • text define にかえるの歌の音階データを記述します(例: data c; data d; data e; data f; ...)
  • text sequencebang メッセージを使って、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 などで滑らかにすることも検討しましょう