MSP超入門

 

はじめに

MSPを使いこなそうと思う方は、ぜひチュートリアルを読んで試してみて下さい。チュートリアルとか××ツアーとかは、あまり面白みのないもの(失礼 (^^;))もありがちですが、MSPのチュートリアルは、非常に内容が豊富で、自然とシグナル処理の基礎も理解できるようになっています。ぜひ一読をお薦めします。

ただ、チュートリアルは、処理内容によって別れているので、「やってみたい」ことが最後の方だったりするかもしれません。(必ずしも順番に読む必要はないかもしれませんが‥‥)そこで、ここではそれぞれの最も簡単な例をあげて、チュートリアルのチュートリアル(笑)みたいなものを作ってみました。ただ、できればマニュアルの「デジタルオーディオ」の部分を先に一読してみてもらえると、よりわかりやすいと思います。

また、パッチ例は説明を解りやすくするためのものですので、急激な変化によるクリックノイズ対策などは考えに入れていません。クリックノイズ対策については、チュートリアルにかなりシツコく書いてありますので参考にしてみて下さい。

/* 始める前に1つだけ覚えておいて欲しいことがあります。これはチュートリアルにも書いてありますが、MSPオブジェクトの間には「シグナル」が常に流れている(黄−黒のトラ縞のパッチコードの部分)ということです。Maxをすでにお使いの方は、Maxメッセージが流れるパッチコードについては御存じでしょうが、Maxでは何かのきっかけ(値の変化やbang、クリック等)によってのみメッセージが流れます。それに対して、MSPの「シグナル」は絶えず流れ続けています(しかも、通常のセッティングでは44,100/秒のデータが流れているのです)。MSPオブジェクトのコントロールは、多くの場合、Maxメッセージでも「シグナル」でも可能になっています。(両方繋がっている場合はたいていシグナルが優先されます)流れるデータの性質が違ったものであることを認識しておくとイメージしやすいと思います。*/

 

MSPでできること

MSPはMaxでオーディオシグナルを処理するオブジェクト群です。でも、こういっただけでは「何ができるか?」というイメージが持ちにくいですよね。

ここでは、実際に使用する上での、音のソースの違いによる3つの場合を考えてみます。

A.  外部のサウンド(マイク等で拾ったもの、ラインで入ってくるもの)に、リアルタイムで何かの処理をして出力

これは、ギターなどの「エフェクタ」をイメージしてもらえるといいでしょう。

B. サウンド自体をソフトウェアで合成

これは、「ソフトシンセ」のようなものをイメージしてもらえるといいですね。

C. ファイルとして保存されたサウンドデータを再生

普通に再生するだけではなくスピードや方向を変えたりできるわけで、これは「サンプラ」でしょうか。もちろん上の3つを同時に使うことも、何の問題も無くできます。そして、これらのサウンドのコントロールもMax/MSPのオブジェクトによって行うことができるのです。

 

A. 外部サウンドの処理

それでは、手始めに外部からのサウンドの処理からいきましょう。下の図を見て下さい。


上の方にある、マイクのアイコンはezadc~というオブジェクトです。パッチャーウィンドウの上端にずらずらーっと並んでいる中にありますよ(^^)。これをドラッグして持ってくればOKです。また、下にあるスピーカのアイコンはezdac~というやつでこれもパッチャーウィンドウの上端にあります。そして「マイク」のアウトレット(L-R)を「スピーカ」のインレットに黄−黒(トラ縞(笑))のケーブルで繋いであります。

これは、入ってくる音をそのまま出力するという、非常に高価な(きっと××万円もするような)「スルーボックス」(笑)です。もし、C言語とかのプログラミング経験のある方なら、この「スルーボックス」を作ることが結構面倒だということが解ってもらえるかも知れません。MSPでは、超簡単です。マイクを使って実験するときには、くれぐれもスピーカの音がマイクに回り込まないようにして下さいね。この実験の結果生じたトラブルについて、当方は一切の責任を負いません。(^^;)チュートリアルの「テストトーン」を参照されるとよいでしょう。

この、「高価なスルーボックス」を意味のあるものにするためには、「マイク」と「スピーカ」の間に何かの処理を挟んでやります。ここでは、ディレイをやってみましょう。これは、チュートリアルではかなり後の方に出てきますので、少し得した気分になれるかも。



前の例ではディレイタイムは固定でしたが、これではあまり面白くありませんね。そこで、Maxメッセージ(数値)でコントロールしてみましょう。



このように、「マイク-ezadc~」とスピーカ「ezdac~」の間にいろいろな処理を挟むことでだんだん面白いものにすることができます。何となくイメージを掴んでいただけたでしょうか?


B. サウンドの合成

今度は、サウンド自体をMSPで作ります。ディジタルの世界では「サウンド」は数値の流れになっていますから、いろいろな演算が可能です。ここでは、「マイク」は必要ないのですが「スピーカ」はもちろん必要です。単体のオブジェクトで作ることができるサウンドをいくつか試してみましょう。



下のパッチは、サブパッチ"sawtooth"の中身です。

noise~は、ホワイトノイズ(放送終了後のテレビの「砂あらし」のような音)を発生します。

cycle~はデフォルトでは、周波数を与えるとサイン波を発生します。(ウェーブテーブルとしても使用できます。)

phasor~(sawtoothサブパッチの中に隠れていますが)は0〜1までの振幅をもつノコギリ波を発生します。ここでは、振幅を-1.0〜+1.0にするためにちょっと計算をさせています。

周波数や位相などを、Maxオブジェクトによってコントロールすることも可能です。 C. サウンドファイルの再生
サウンドの録音、サウンドファイルの再生も手軽にできます。再生に関しては用途にあわせていろいろなオブジェクトがあって親切なのですが、逆に混乱してしまうかもしれません。(多分、私だけじゃないですよね。(笑))最初に、サウンドを録音するための最も原始的なパッチを見て下さい。



図の左側では、サウンドファイルに録音するsfrecord~を、右側では定義されたbuffer~に録音するrecord~を使っています。buffer~のサウンドをwriteメッセージでファイルに書き出すことも可能です。

次に、サンプルの再生です。代表的なもの幾つかを並べて見ました。あまり記述が多いと分かりにくいので、簡単に書いてあります。ここでは、サウンドファイルをbuffer~やsfplay~で読み込むようになっていますが、sfplay~以外は、直接buffer~に録音されたサウンドを再生することも可能です。詳しくはhelpパッチ(オブジェクトを[option] + クリックで出てきます)やチュートリアルを参照して見て下さい。


これらのサウンドは、Maxオブジェクトからの数値や、MIDI器機でコントールできます。MIDIにしても、プログラミングによる演算にしても、数値として扱われますので、それをいろいろなパラメータの値として設定するだけでOKです。気をつける事は、MIDIの数値の範囲は0〜127という範囲のものが多いのに対して、MSPのシグナルは-1.0〜+1.0であるということです。これをうまく対応させれば簡単にMIDI器機等によるコントロールもできます。

チュートリアルの「MIDIコントロール」に関する章にはこのための詳細な記述がありますのでぜひ参考にしてみて下さい。

サンプルパッチのダウンロード

戻る