3 Pure Dataを使う

 

Pd Community Site (http://puredata.info/)によれば,Pdは,「音や映像,画像のリアルタイム処理を可能にする,グラフィカルなプログラミング環境」と説明されています。1.4でもふれましたが,元々はMiller Puckette さんが,IRCAM(フランス国立音響音楽研究所:http://www.ircam.fr/?L=1)で仲間と作り始めたものですが,現在は多くの人が開発,メインテナンス,拡張に携わっているようです。

Pdでは,フローチャートを描くようにプログラミングします。つまり,Pdによるプログラミングとは,箱もしくはそれに類似した形のモジュール(部品)を,線でつないでゆくことです。この線が,信号であったり,メッセージであったりするわけです[1]。モジュールをつないでゆくのを,本物の電子装置の端子間をパッチ・コードでつなぐことに類比させて,出来上がったプログラムはパッチ(patches)と呼ばれます。あるいは,プログラミングの過程が絵を描くのに似ているからでしょうか,プログラムはキャンバス(canvases)とも呼ばれます。

 

3.1 パッチの例

 

3.1はパッチの一例で,最上部のBalanceという名前のスライダーを動かすことで,オーディオ出力の左右バランスを変化させることができます。なお,図中,”adc~”から”dac~”に至る線は信号線なので,他の線よりも自動的に太くなっています。パッチ・ファイルをPdで開けば図3.1のように表示されますが,内実は,テキスト・ファイルです。したがって,異なったOS上で動くPd間で,同一のパッチを使うことも,基本的には問題ありません。

 

3.1 インストール

 

Pdには標準パッケージの他に,いろいろなライブラリなどを含んだ,extendedと呼ばれる拡張パッケージがあり,後者ではいろんなタイプのフィルタが使えるが,前者では基本的なものしか使えないというような違いがあります。本書では,拡張パッケージを使うことにします。

Pd Community Siteのダウンロードページ(http://puredata.info/downloads)を開くと,pd-extendedという項があり,各OSやハードウェアに対応した,最新の拡張パッケージがダウンロードできるようになっています。使用できるようになるまでの経過を,以下に簡単にまとめてみましょう。

1)            ダウンロード

自分のOSやハードウェアに対応したファイルをダウンロードします。2009910日現在では,拡張パッケージの最新バージョンは0.41.4で,MacWindows PC用には以下の3つが準備されています(筆者が現在使用している版は0.40.3ですが,以下の説明には0.40.2を用いています)。


Apple Mac OS X (10.4/Tiger or newer)

a) Mac OS X Intel (Mac Pro, MacBook, all Intel Macs)

b) Mac OS X PowerPC (PowerMac, PowerBook, iMac, with G4 or G5)

Microsoft Windows 2000/XP/Vista

d) Microsoft Windows (2000/XP/Vista)

2)            解凍とインストール

Macに関しては,何れも,ダウンロードすると自動的に解凍され,ディスク・イメージがデスクトップにマウントされるので,pd-extendedというファイルをハードディスクにコピーすれば,すぐにpdを利用できます。

Windows XPの場合は,解凍するとインストーラーが得られるので,これを使ってインストールします(Windows 2000Vistaでは未確認)。

3)            Pdの起動

インストールが済んだら,アイコンをダブルクリックして起動してみましょう。そうすると,図3.2のような,Pdのメイン・ウィンドウが現れます。このウィンドウから,いろいろなライブラリがロードされているのが分かると思います。

 

3.2 Pdのメイン・ウィンドウ

 

4)            Pdのテスト

Pdが機能するかどうか,簡単なテストをしてみましょう。Mediaメニュー(図3.3)から,Test Audio and MIDIを選びます。そうすると,図3.4のようなパッチが開くので,矢印の部分をクリックしてみて下さい。低周波音が聞こえたり,それがノイズに切り替われば,一応,正常に機能していると判断してよいでしょう。もし音が聞こえないようであれば,パソコン本体の音量やサウンド入出力の設定に誤りがないか,調べてみて下さい。

 

3.3 Mediaメニュー

 

3.4 Test Audio and MIDIパッチ

 

5)            アンインストール

windows XPの場合は,コントロールパネルのソフトウェアの追加と削除でアンインストールできます。

Mac用のb)の場合は,pd-extendedファイルをゴミ箱に移動すると共に,フォルダをライブラリ⇨Preferencesと移動し,その中のorg.puredata.pd.wish.plistというファイルもゴミ箱に入れれば,Pdに関連したファイルは全て消去されることになります。しかし,どういうわけか,a)の場合は,org.puredata.pd.wish.plistファイルはゴミ箱への移動によって消去出来ますが,その方法では,pd-extendedファイルを消去することが出来ません。そこで,少し面倒ですが,図3.5のようにターミナルを使って消去します。

 

3.5 Intel Macpd-extendedファイルを消去するための操作

 

以後,本書ではPower PC Mac (G4 or G5)による使用例を中心に解説してゆきます。また,本書の付録のCD-ROMに収録されたPdのサンプル・パッチは,Macで作成されたものです。このパッチはWindowsでも同様に動作しますが,1つだけ注意が必要です。それは,パッチをダブル・クリックすると,それが起動しウィンドウも開きますが,正常に動作しないということです。理由は詳らかではありませんが,Macで作成したものをWindowsで正常に動作させるためには,パッチ・ファイルをPdもしくはそのエイリアスのアイコン上に,ドラッグ&ドロップする必要があります。

 

3.2 参考資料

 

Pdの使い方を詳述しようとすれば,おそらく分厚い本が必要になるでしょう。しかし,本書の目的は,Pdを使ってSDRプログラムを開発する方法を説明することであり,Pdそれ自身の解説ではありません。したがって,Pdの全てについては記述しません。この章では,基礎事項についてのべ,第4章では,SDRに必要な機能実現に関係した事柄についてだけ解説したいと思います。そこで,まず最初に,必要に応じて参照していただくと便利な,サイトを紹介しておきましょう。これらは,私自身,大変お世話になった情報源です。

1http://www.crca.ucsd.edu/~msp/  Pd開発者Miller Puckette さん自身のホームページです。このサイトには,極めて質の高い情報が多くあります。

Pdの英文マニュアル

http://www.crca.ucsd.edu/~msp/Pd_documentation/index.htm

Theory and Techniques of Electronic Musicのドラフト

http://www.crca.ucsd.edu/~msp/techniques.htm

この本は,World Scientificより2007年刊行されました(http://www.worldscibooks.com/compsci/6277.html)。「電子音楽の理論とテクニック」と銘打たれていますが,信号処理全般のよいテキストになっており,SSB変調器のパッチなどに関する解説もあります。ドラフトのページから,サンプル・パッチもダウンロードできます。

2http://psyto.s26.xrea.com/pd/jpdoc/index.htm  マニュアルの日本語訳

3http://www.wikiroom.com/pddoc/index.php  このページから,Object(後述)のリファレンス・ページへ移動することができます。

4http://de-dicto.net/pd/  非常によくできたチュートリアルです。

5http://psyto.s26.xrea.com/pd/index.html  ここから,いろいろな参考資料にアクセスできます。

 

3.3 Pdのメニュー

 

まず,Pdのメニュー項目のうち,重要もしくは使用頻度が高いものについて説明しておきましょう。以下の説明は,Pd-extended(バージョン0.40.3)の使用を前提にしています。

 

3.3.1 File

New 新しいパッチを開きます。

Open 既にあるパッチを開きます。

Close 開いているパッチを閉じます。

Save パッチを保存します。拡張子としてpdが自動的に付けられます。

Save as パッチを別の名前で保存します。拡張子としてpdが自動的に付けられます。

Print パッチにおける各種モジュールや,その結合の様子をポストスクリプト・ファイルとして保存します。OS Xでは,プレビューで開けます。

 

3.3.2 Edit

Undo モジュールに対してなされた,直前の作業結果を元に戻します。

Redo Undoした作業を,もう一度やり直します。

Cut モジュールを削除します(deleteキーも同じ働きをします)。

Copy モジュールをコピーします。

Paste モジュールをペーストします。

Duplicate モジュールの複製を作ります。

Select all 全てのモジュールを選択します。

Font パッチ内で使われるフォント・サイズなどを変更します。

Tidy Up モジュールの並びを微調整して揃えます。大きくずれていたり,距離が離れているものには無効です。

Find 文字列を検索します(部分的に一致するものは検出されません)

Find Again 文字列を再検索します(部分的に一致するものは検出されません)。

Find last error これを実行すると,直近のエラーが生じたモジュールが表示されます。

Edit mode パッチを走らせるラン・モードと,パッチの編集を行う編集モード間を,相互に移行します。マウス・カーソルは前者が矢印,後者が手の形です。

 

3.3.3 Put

パッチが開かれ,かつ最前面になっているときだけ,メニューに項目が現れます。このメニューでは,プログラミングに必要なモジュール類が,メニュー項目になっています。項目を選んでパッチ・ウィンドウ上でクリックすると,図3.6のようなアイコンが,ペーストされます。

 

3.6 Pdで使用されるモジュール(部品)類

 

Object 箱の中に機能名を書き込むと枠が実線に変わり,機能に応じて上の辺にインレット(入口),下の辺にアウトレット(出口)が付加されます。

Message 箱の中に出力すべき文字や数字を書き込んでおきます。Messageボックスをクリックするか,あるいはインレットから活性化信号bangが入ってくると,書き込んでおいたメッセージがアウトレットから出力されます。

Number 数値の入出力や,表示をします。初期値は0です。これを変化させる方法は3つあります。第1はインレットからの入力,第2はこの箱のドラッグ,第3Shift+ドラッグです。上または下にドラッグすれば1ずつ増減し,Shift+ドラッグでは0.01ずつ変化します。

Symbol インレットから入力された文字列を表示します。

Comment パッチ・ウィンドウに文字列を表示します。たとえば,注釈などに使います。

Bang クリックやインレットへの入力によって,活性化信号bangを出力します。

Toggle クリックやインレットへの入力によって,0または1が出力されます。0の場合はただの四角,1のときは四角に×が描かれます。

Number2 Numberの機能拡張版です。書き込まれた数値を保存したり,ドラッグによって数値を対数的に変化させることも出来ます。

Vslider 垂直スライダ。ツマミをドラッグすると,ツマミ位置に対応した数値が出力されます。出力される数値は,通常のドラッグでは1ずつ, Shift+ドラッグでは0.01ずつ変化します。また,インレットに入力される数値に応じてツマミが移動し,アウトレットからは,入力と同じ数値が出力されます。

Hslider 水平スライダ。機能は垂直スライダと同じです。

Vradio 垂直ラジオボタン。クリックした位置に対応した数値(最上部が0で,1ずつ増加)を出力します。また,インレットから入力された数値の整数部に対応した位置にツマミが移動し,ツマミ位置に対応した整数値が出力されます。

Hradio 水平ラジオボタン。機能は垂直ラジオボタンと同じです。

VU VUメータ。入力された数値をdB値とみなして,カラーバーで表示すると共に出力します。インレットは2つあり,一方は実効値,他方はピーク値用です。実効値とピーク値をパックして,実効値用インレットから入力することもできます。

Canvas 本章の冒頭で,Pdのプログラムをキャンバスとも呼ぶと述べましたが,これとは別物です。本来の使い方はよく分かりませんが,本書では,アプリケーションを作る際の見かけ,外見を整えるために使っています。

Array 数値の一次元配列を線グラフで表します。図3.6では,領域の真ん中に水平線が描かれていますが,これは,デフォールトで縦軸yの最大値が1,最小値が-1で,初期データが全て0のせいです。この線をドラッグすると線が描き換えられ,それに対応して数値も変わります。

Graph Arrayから数値の配列を除いたもので,Arrayの描画枠だけのようなものです。

メニューには現れていませんが,Vsliderと同じような働きをするKnobというオブジェクトがあります。Objectを選んでパッチウィンドウにペーストした後,Knobと書き込みます。そうすると,図3.7のようなアイコンに変わります。マウスを垂直方向にドラッグすると,中央から伸びた指針が回転すると共に,アウトレットからは数値が出力されます。Shift+ドラッグでは変化が小さくなります。また,インレットに入力される数値に応じて指針が移動し,アウトレットからは,入力と同じ数値が出力されます。

 

3.7 Knobのアイコン

 

3.3.4 Find

このメニューに含まれている3つの項目FindFind AgainFind last error は,Editメニューの同名の項目と同じ働きをします。

 

3.3.5 Media

audio ON これを選択すると,メイン・ウィンドウ(図3.2参照)の右上隅にある,compute audioチェックボックスにチェックが入り,オーディオ信号処理が可能になります。チェックボックスをクリックしても,同じ結果が得られます。

audio OFF これを選択すると,メイン・ウィンドウのcompute audioチェックボックスに入っていたチェックが外れ,オーディオ信号処理が不可能になります。チェックボックスをクリックしても,同じ結果が得られます。

portaudio オーディオドライバportaudioを選択します。デフォールトでは,これが選択されています。オーディオ入出力デバイスやサンプリング・レート,ディレイなどを設定できます[2]

jack これもオーディオドライバです。この項目を,Jack OS X (http://www.jackosx.com/)がインストールされていないときに選択すると,Pdが強制終了されます。Jack OS Xがインストールされていても,Pdがそれを使うように設定しておかないと利用できません。Jack OS Xの使用法はAppendix 2で説明します。

Test Audio and MIDI オーディオとMIDI機能チェック用のパッチ(図3.4)が開かれます。このとき,自動的に,メイン・ウィンドウのcompute audioチェックボックスにチェックが入ります。Test Audio and MIDIを閉じても,このチェックは自動的には外れません。

Load Meter CPUにかかっている負荷を表示するパッチを開きます。

 

3.3.6 Window

parent window パッチの中に,さらにパッチを作ることができます。これはサブパッチと呼ばれ,そのサブパッチの1つ上位のパッチ(これもサブパッチかもしれませんが)が,親(parent)パッチです。parent windowを選択すると,現在,最前面になっているサブパッチの親パッチが,最前面になります。

Pd window これを選択すると,メイン・ウィンドウが最前面になります。

 

3.3.7 Help

Html Html形式の,英文のマニュアルが開かれます。

Browser 学習に役立つ,サンプルパッチやテキストが表示されます。ただし,中には,クリックしても開かないものもあります。

 

3.3.8 Pd-extended

About Pd About画面が表示されます。

Preferences 種々の設定を行います。全てデフォールトで構いません。

Path Pdが必要なファイルを探すためのパスを記述します。

Startup Pdスタート時にロードするライブラリを指定します。

Audio Settings オーディオ入出力デバイスやサンプリング・レート,ディレイなどを設定できます。Mediaメニューの項目portaudiojackと同じものです。

MIDI settings MIDI入出力デバイスなどを設定できます。

Quit Pd-extended Pdを終了します。終了確認のダイアログボックスは現れません。一方,メイン・ウィンドウ,あるいは変更を加えたパッチのクローズ・ボタンをクリックしたときには,終了するかどうかを問い合わせるダイアログボックスが現れます。

 

3.4 Pdの操作法

 

ここでは,簡単なパッチ作りをとおして,Pdの操作法に慣れましょう。必要なものは,PdがインストールされたMac本体と,マウス,そしてライン入力に適合した3.5mmφのステレオ・ミニプラグです。ミニプラグをMacのライン入力ジャックに差し込み,反対側の端子を指で触ると電灯線のハムが誘導され,ブーンという音が聞こえます。本節では,これを音源として使います。なお,Pdのパッチの作成には便利なので,私は2ボタンマウスを使っています。したがって1ボタンマウスを使っている方は,以下の説明で「右クリック」を「コントロール+クリック」と読み替えて下さい。左クリックの場合は,これまでの記述同様,簡単にクリックと書いています。なお,コンピュータ本体のオーディオ入出力の設定に関しては,Appendix 1で説明します。

 

3.4.1      オーディオ信号の入出力

最初に作るのは,ライン(又は,マイク)入力をそのまま,スピーカーから出力するパッチです(ライン入力を使うかマイク入力使うかは,システム環境設定−Mac−,あるいはコントロールパネル−win−で各自設定して下さい)。Pdを起動し,新しいパッチを開いて下さい。そうすると,マウス・カーソルが手の形に変わります。これは,前にも述べましたが,編集モードに移行したことを示しています。次ぎに,PutメニューからObjectを選択し,パッチ・ウィンドウの任意の場所をクリックします。そうすると,点線の箱が現れ,その内部でカーソルが点滅しているので,adc~と入力します。再度Objectを選び,今度はdac~と入力して下さい。adc~dac~は,オーディオ入力と出力の機能を持ったオブジェクトです。前者の箱の下辺の左右が少し黒くなっていますが,これは,アウトレットが2つある,つまり外部からのステレオ入力を,それぞれ独立して出力できることを示しています。また後者の箱の上辺には,左右に小さな四角が付いています。つまりインレットが2つあり,それぞれから入力された信号を,2つのチャンネルに出力することができます。

これらを使って,早速パッチを作ってみましょう。adc~の左アウトレットにカーソルを近づけると,カーソルの形が円になります。この状態で,dac~の左インレットに向けてドラッグするとカーソルは一旦,手の形に戻ります。しかし,さらにドラッグを続けて,dac~のインレットに接近すると再び円になります。この時点でボタンをリリースすると,左のアウトレットとインレットが線で結ばれます。右インレットとアウトレットについても,同様に線で結んで下さい。これで完成です(図3.8)。このパッチを適当な名前で保存した後,テキスト・エディターで開いてみて下さい。そうすると,リスト3.1のような内容が表示されます。Pdはこのようなテキストを読み込むと,図3.8のような画像を表示し,信号処理を行ってくれるわけです。

 

3.8 サンプル・パッチ1

 

余談ですが,パッチの(テキスト)ファイルには,必ず#N canvasという文字列が含まれているので, PdとかPure Dataという語と一緒に,この文字列でインターネット検索を行うと,いろんなパッチを見つけることができ,勉強になります。

閑話休題(それはさておき)

このパッチの動作を確かめてみましょう。まず,ミニプラグをライン入力につなぎます。次に,メイン・ウィンドウのcompute audioにチェックを入れるか,Mediaメニューでaudio ONを選択します。その後,チップもしくはリングにつながっている端子に(図3.10),指先で交互に触れてみましょう。そうすると,左もしくは右のスピーカーから音が聞こえるはずです。ヘッドフォンを使うと,音が出ているチャンネルの違いがより分かりやすいでしょう。

 

3.9 ステレオ・プラグの構造

(参考:http://www2.chokai.ne.jp/~assoonas/UC416.HTML

 

次に,2つモジュールの接続をクロスさせてみましょう。編集モードになっていることを確かめます。マウス・カーソルが矢印になっていたら,それはラン・モードなので,EditメニューからEdit modeを選択し,編集モードに移行します。カーソルを線の上へ移動させると,形が手から×に変化します。この状態でクリックすると,線の色が青く変わります。これは,削除可能になったことを現しており,deleteキーを押すことで線は消されます。このようにして2本の線を消した後,adc~の左アウトレットとdac~の右インレット,および右アウトレットと左インレットを結び,プラグの端子に触れてみます。今度は,先ほどと逆位置のスピーカーから音が出るはずです。1つのアウトレットを2つのインレットに同時につないだり,接続線を1本だけにしたり,いろいろ遊んでみて下さい。

サンプル・パッチ1から,信号の入出力はとても簡単であることが,ご理解いただけたと思います。この入力と出力の間に,さまざまな機能をもったモジュールを挿入することで,SDRをはじめとする,いろいろなDSP (Digital Signal Processing)装置が作れそうなことが,予想できると思います。SDRソフトの作成という楽しみは4章までとっておき,ここでは,もう少し基礎的な操作法について慣れておきましょう。

 

3.4.2      オーディオ信号の加工

オブジェクトの機能や持つべき属性は,箱の中に書き込まれているadc~dac~という名前によって決定されます(本書では,機能が具体化されたObjectを,オブジェクトと表記しています)。Objectは,いろんなものになり得る可能性をもった,胚性幹細胞のようなものですね。ドラマか映画か,あるいは小説の方だったか(あるいは全てで?),「陰陽師」の中で安倍晴明が,『この世で最も短い呪(じゅ)は名前であり,それは名付けられた対象の本質を規定する。』というようなことを言っていました。これ,まさに,Objectの有り様そのものですね。白紙のObjectに呪をかけるには,名が必要です。Objectの可能な名前を知るには,パッチ・ウィンドウの中の,オブジェクト等が何もないところを右クリックし,コンテクスト・メニューを表示させ,そこからHelpを選択します。そうすると,Pdに元々組み込んである内部オブジェクトの説明が表示されます。機能を詳しく知りたい場合は,オブジェクトを右クリックしてコンテクスト・メニューからHelpを選ぶと,使用例と説明が表示されます。また,3.2節でも触れたように,http://www.wikiroom.com/pddoc/index.phpから,これらの日本語ページへ移動することができます。なお,ライブラリとして読み込まれた外部オブジェクトの説明は,http://umatic.nl/workshop/objects.txtなどをご覧下さい。

オブジェクトの説明ページには,非常に多くの名前が書いてありますが,よく見ると2つに分類できることが分かると思います,1つはadc~dac~のように最後に~(チルダ)が付いたものと,そうではないものです。前者はオーディオ信号の処理用のオブジェクトで,後者はそれ以外の処理たとえば数値計算など−に使われるオブジェクトです。さて,それでは,新しいObjectを使って信号の加工をしてみましょう。

1)アンプとアッテネータ  先ほど作ったサンプル・パッチ1に新しいObjectを貼り付け,*~ 10と入力します。ここで*~Objectの名前でオーディオ信号用乗算器を現しており,10はパラメータです。名前とパラメータの間は,半角スペース1個で区切ります。*~ 10は,左インレットから入力されたオーディオ信号を10倍に増幅し,アウトレットから出力するという意味です。これを,図3.10のように,右の信号線の間に入れてみましょう。次に,メイン・ウィンドウのcompute audiopeak metersにチェックを入れます。後者は,メイン・ウィンドウ左上部にある小さな窓に,入出力レベルを表示させるための操作です。ここで,ステレオ・ミニプラグのチップもしくはリングにつながっている端子に(図3.9),指先で交互に触れてみましょう。左チャンネルの場合は,入出力レベルに同じ値が表示されるはずです。一方,右チャンネルの場合は,端子に触れたときはスピーカからの出力が大きくなると共に,入力の数値は先ほどと変わりませんが,出力の数値は大きくなっているはずです。

 

3.10 サンプル・パッチ2

 

*を消して,代わりに/を入力してみて下さい。この新しいオブジェクトはオーディオ信号用除算器なので,今度は音が小さくなり,出力レベルの数値が入力レベルよりも小さくなっているはずです。つまり,アッテネートされたことになります。これは,機能としては,*~ 0.1と同じです。

2)増幅度/減衰率の変更  オーディオ信号用乗/除算器のパラメータ部を,10から他の値に変更すれば,増幅度あるいは減衰率は変わります。しかし,これでは,操作性が悪く実用にはなりません。そこで,ここでは,リアルタイムかつ連続的な変化を可能にする,2つの方法を試してみましょう。「オーディオ信号用乗/除算器の右インレットから増幅度/減衰率に相当する数値を入力する」,という基本は共通です。そこで,まず準備として数値10と,その左側の半角スペースは消去しておきます。

① Numberの利用 PutメニューからNumberを選んでパッチ・ウィンドウにペーストして,そのアウトレットをオーディオ信号用乗/除算器の右インレットに接続します(図3.11)。次に,Numberが出力する数値範囲を設定するため,右クリックでNumberPropertyを開き,上から3つのPropertyを設定します(図3.13)。特に重要なのが2番目です。最小値を1にしているのは,入力信号を減衰させないためです。もしアッテネータとして使うのなら,lower0upper1にします。設定がすんだらApplyボタンを押すと,ラベルが表示されるはずです。OKボタンをクリックすると,Propertyが閉じます。そこで,ラン・モードにし,Numberの箱をドラッグすると数値が変化すると共に,音量も変化します。Shift+ドラッグすると変化は0.01ずつです。

 

               

3.11 サンプル・パッチ3             3.12 NumberProperty

 

② Knobの利用 次は,Numberの代わりに,図3.7に示したKnobを使ってみましょう。新しくペーストしたObjectKnobと書き込みます。Knobが左下のアウトレットから出力する数値範囲を設定するため,右クリックでPropertyを開き,設定します(図3.13)。特に重要なのは,Numberの場合と同様,最大値と最小値です。後は,機能に直接影響しないので,いろいろと試してみて下さい。設定が終わったら,図3.14のように接続し,Knobをドラッグしてみて下さい。①の場合と同様,音量が変化するはずです。

 

               

3.13 KnobProperty                                 3.14 サンプル・パッチ4

 

以上,とても簡単にアンプやアッテネータの実験ができてしまいましたね。本物のアンプを作る場合,どこにでも安易にボリュームを入れるわけにはいきません。アッテネータだって,ボリューム1個を使って,ハイ一丁上がりなんていうわけにはいきません。そんなことをやったら,インピーダンスが乱れて,トラブルが生じてしまうこと必定です。しかし,コンピュータの中であれば,簡単に理論が実現できてしまいます。信号の合成や分配だって,要するに足し算と引き算なわけですから,簡単にできてしまいます。信号の減衰だとか,インピーダンスマッチングなんて考える必要はありません。実に便利ですね。したがって,できるだけアンテナに近いところで信号をA/D変換し,あとはディジタル処理してしまおうというのは,必然的な流れかもしれませんね。そのうち,インピーダンスや,そのマッチングという概念は,アンテナ系やパワーアンプの問題を考える場合しか必要なくなってしまうかもしれないですね。「ウーン,それでホントに良いんだろうか」,とも思ってしまいますが・・・。ま,しかし,どんなことにでも興味をもって,先端技術も貪欲に取り込んできたのがラジオ・アマチュアの歴史です。SDRにも張り切って取り組むことにしましょう。数式には弱いけどSDRDSPをやってみたいという私のような(そして,あなたのような)アマチュアに,Pure Dataは最適なツールであることが,これまでのサンプルだけでも,ご理解いただけたのではないでしょうか。

3)サブパッチ  少し複雑な仕事をするパッチを作ると,モジュールの数も,それらを結ぶ線の数も増えてきます。そうすると,パッチ全体がゴチャゴチャと見にくく(醜く)なり,どこで何をやっているのか,分からなくなってしまいます。そんなとき,機能毎にまとめて箱の中に入れてやると,全体がブロック・ダイアグラムのように整理され,見通しがよくなります。この,まとめて箱に入れられたものがサブパッチです。サブパッチは,図3.15に示されているような基本的構造をもっており,オーディオ信号用のインレット(inlet~)と制御信号(メッセージ)用のインレット(inlet)を介して情報を受け取り,処理結果を,オーディオ用アウトレット(outlet~)とメッセージ用アウトレット(outlet)を通じて出力します[3]

 

3.15 サブパッチの構造

 

サブパッチを作る手順は,次のとおりです。まず,メインのパッチ・ウィンドウにObjectを貼り付け,箱の中に「pd+半角スペース1個+サブパッチの名前(任意)」を書き込みます。そうすると,サブパッチ・ウィンドウが開くので,そこにプログラムを作ってゆきます。メイン・パッチと異なるのは,上述したようにインレットやアウトレットがあるところだけです。なお,インレットやアウトレットも,Objectを選択して作ります。

それでは,簡単なサブパッチを作ってみましょう。手順は以下のとおりです。

メインのパッチ・ウィンドウにObjectを貼り付け,箱の中にpd mono_ampと書き込みます。

開いたサブパッチ・ウィンドウに5つのObjectを貼り付け,オーディオ信号用,メッセージ用のインレットとアウトレット,およびオーディオ信号用乗算器を作ります。

各オブジェクトを図3.16のように接続します。

PutメニューからCommentを貼り付け,各オブジェクトの機能/役割を書き込みます(必須ではありませんが,分かりやすくするためです)。Pdでは普通のやり方では日本語が表示できないので,半角のアルファベットか数字を使って下さい。日本語表示については,次の章で説明します。

メインのパッチ・ウィンドウに戻り,サブパッチと他のオブジェクトやNumberを図3.17のように接続します。Knobに関してはデフォールトのままでも構いませんが,必要ならばPropertyを変更して下さい。

ミニプラグの2つの端子に交互に触りながらKnobを回転させてみて下さい。Numberの数値が変化し,サブパッチが接続されている方の音だけが,Knobの回転に合わせて増減するはずです。

サブパッチを閉じるには,クローズド・ボタンをクリックします。開く場合は,ラン・モードならばサブパッチのアイコンをクリックし,編集モードならば,右クリックでコンテクスト・メニューからOpenを選択します。

 

                 

3.16 サブパッチの例                3.17 サブパッチを含んだパッチ

 

サブパッチについて2つだけ,情報を付け加えておきます。1つは,図3.16の右側のインレットについてです。ここでは,inletを用いていますが,オーディオ信号乗算器の右インレットは,オーディオ信号を受け取ることができるのでinlet~でもよく,これでもKnobからの「数値」を受け取ることができます。その場合,inlet~を経由したKnobからの数値はオーディオ信号とみなされてしまいます。一方,メイン・パッチのNumberは数値しか受け取れないので,Knobの変化が表示できなくなります。

もう1つの補足情報は,サブパッチの作り方に関するものです。上で説明した方法では,作られたサブパッチは完全にメイン・パッチの一部になっていますが,サブパッチを別ファイルとして作ることもできます。新しく開いたパッチに,3.16の内容を記述して,たとえばmono_ampという名前で保存します。これを閉じ,新しく開いたパッチにObjectを貼り付けて,その名前にmono_ampと書き込みます。その後,pd mono_ampの代わりにmono_ampを使った,図3.17と類似ファイルを作り,mono_ampと同じ階層のディレクトリ(フォルダ)に保存します。そうすると,これら2つのファイルは共同して,図3.163.17と全く同じ働きをします。


脚注


[1] 出来上がったプログラムはパッチと呼ばれ,その内部では,オーディオ信号の他に,制御や計算のための信号(データ)が,モジュール間でやり取りされます。Pdでは後者をメッセージと呼びます。本書では,単に信号といえば前者を指しています。

   [2] Macの場合,機種によっては,「Audio MIDI 設定」というアプリケーションでサンプリングレートを変更できます。Pdでサンプリングレートを変更しても,「Audio MIDI 設定」のサンプリングレートの表示に変化はありませんし,逆も同様です。両者の関係は,筆者にとっては現在のところ不明です。サンプリングレートの変更は,Pd,「Audio MIDI 設定」の両方で行う必要がありそうです。

[3] 無線LANのように,インレット,アウトレットを付けなくても信号のやり取りを可能にする方法はあります。これは,後の章で,必要に応じて説明します。