Pure Data お試し

昔からある無料で使えるビジュアルプログラミング言語のPure Data。存在だけは知っていたが、使ったことはなかった。これと同じようなコンセプトの有料のMax/MSPというソフトもあるが、こちらは昔に少しいじったことはある。コンセプトはPure DataもMaxも同じだと思っている。そもそもプログラム作成者が同じだし・・・ 


Pure Dataとは

Pure Dataの根底には楽器的な思想があって、シンセサイザー、エフェクト的なものをソフトで自由に組むことができるという感じ。 自由度はかなりのもので、1オクターブを24音にしたりするなど、既存楽器とは違ったものを作るには便利なツールと言える。 ただPure Dataは、楽器製作を目的としているわけではなく、発想次第でいろんな使い方ができるというもの。 実際にはインタラクティブ性の高いアート作品で映像と音の制御など使うことが多いようだ。

Pure Dataは、内部にあるパーツ(オブジェクト)を組み合わせて何かを作るという感じなのだが、その部品がかなり細かい。 シンセサイザー的に、オシレーター、フィルター、入力、出力、表示器などがあるのだが、よりローレベルなFFTやFIR、IIRなどの知識も要求される感じ。 ということで、ある程度、音声処理を知っている人でないと厳しいかもしれない。



個人的には、1からプログラム組むより、Pure Dataで音実験した方が楽かな?と思って触ってみることにした。


MIDI鍵盤からPureDataで生成したサイン波を鳴らしたい

長い歴史を誇るPure Dataなので、情報にも苦労しないと思ったら、実は情報は、それほど充実していなかった。 あまり需要がなく、利用者も少ないのだということを実感したよ。 またできることが多いので、自分がやりたいこととドンピシャを探すのも苦労する。 本来プログラミング言語であるので、基礎からひとつひとつ学んでいくのがセオリーなのかもしれない。

サクサクとMIDI鍵盤つないで、サイン波とかを鳴らそうと思っていたが、こんな状況だったので、意外と手こずった。

基本的な操作を、大学研究室の解説で30分ぐらい学習した後、以下のようなプラグラムを組んでMIDIの入力とサイン波出力をやってみた。ソースコードが下の絵だけで大体説明つくところはすごいね。



簡単に解説すると、

notein
MIDI鍵盤からの入力を受ける。ただMIDIセッティングを済ませておく必要がある。ここに入ってくる情報はノートナンバーとベロシティのようだ。

mtof
MIDIノートナンバーから周波数に置き換えてくれる便利なオブジェクト。はじめ自分で計算してやろうと思ったのだが、当然用意されているよね。

osc~ 0
サイン波を出力。上記mtofから来た数値がそのまま周波数として認識される。ちなみにnoteinから直接ここにつなぐと、ノートナンバーがそのまま周波数として出てくる。

*~
音量を調整するため部分。

dac~
これは音声出力。

94(Number)
数値が入っているが、これは鍵盤を押したときのベロシティ値。noteinからベロシティを受け取っている。

* 0.005
音量の調整のために入れたもの。音声信号はプラスマイナス1以内でありたいので、その調整用。

tabwrite~ array1
これは出力した音声を目でも確認したいため設置。これをarray1という波形表示に出力している。

metro 100
別にメトロノームではなく、タイマーという感じで、処理のタイミングを指定。この場合、1/100秒ごとにarray1を書き換えている。

array1
波形を表示する部分。ちゃんとサイン波が表示されている。


作業をしてみて、なによりも負荷が軽いのがよかった。GUIはモノクロームインターフェイス時代のMacみたい。ある意味その時代で止まっている感じがする・・・ でも、こういう昔っぽいソフトは好き。逆に肥大化した今風のソフトはなるべく使いたくないのだが、現実はうまくいかない。

実はarray波形出力にやや悩んだ。以下のように設定したらうまくいった。アレイサイズはサンプル数そのものなのね。 サイズを44100とした場合、サンプル周波数が44100Hzであれば、1秒分のサイズということになる。 下は適度な波形を表示したいのでサイズを441にしている。



こんな感じで、今回の目的である、MIDI鍵盤つないで、サイン波を出すというところまではクリアできた。


所感

Pure Dataをいじってみた感想としては、C言語とかで1から音声処理をプログラミングするのに比べれば、お手軽と言えるが、音声処理を知らない人からしたらハードルが高いね。 逆に普通のプログラミングに慣れていると、変数や、数式を扱っていろいろやりたいときに、どうやるんだ?と悩んでしまう。ということで、どっちつかずの環境という印象。

よいところは、さっさと結果を出せるところにある。結構厄介な音声処理を実現する場合、C言語とかを勉強しながら数式を理解して、それをプログラムにどうやって落としこうもうとか考えていると、それなりに時間がほしくなるが、Pure Dataならば、あっという間に実現できる。あくまでも比較した場合だが・・・ だから工学の専門ではないアート系に受けいられているのだろう。音声処理を勉強するツールというよりは、やりたいことを実現するためのツールという感じ。

今回Windows10で試したのだが、MIDI入力に関しては不安定で、起動のたびにうまくいったり、いかなかったりの繰り返しで、不安定という印象になってしまった。これで何かをするには信頼性が・・・ ということで、Pure Dataでないと不可能というようなことがない限り、今後はあまり触れることないかな。