« これから年末にかけてやること。 | トップページ | 【教えたいシリーズ】音楽史〜現代アート・現代音楽はなぜ生まれたか〜 »

2008-10-11

【教えたいシリーズ】Max/MSPとは?読むだけで使いたくなる解説

今日から4日連続で【教えたいシリーズ】を読み物として書きつづっていきたいと思います。

10/11 Max/MSPとは?読むだけで使いたくなる解説
10/12 音楽史〜現代アート・現代音楽はなぜ生まれたか〜
10/13 MIDIとデジタルオーディオは何が違う?
10/14 「楽典」を知識としてではなく実感するために

私が大学で勉強をして、面白い!と思ったことをぜひ誰かに伝えたいという気持ちのもと、誰にでもわかりやすく書いていこうと思います。感想、質問などぜひお寄せ下さい。

cancer cancer cancer

第一回目の今日は「Max/MSP」についてです。最近このブログで頻繁に登場するこの単語は、コンピュータ音楽用ソフトウェアの名前です。今日のお話はコンピュータで音楽制作をしたことがない人は少し難しいかもしれませんが、ゲームかパズルだと思って読んでみてください。

「Max/MSP」がどういうソフトであるか、ということを言葉で説明することは、とても難しいことです。「音楽用プログラミング言語」と言うことは出来ますが、よくわからないと思います。ですから、実際の操作を見てもらうことが一番の説明になるでしょう。

では、まず最初に目標を設定。「1秒に2000ずつ増える関数」をMax/MSP上で表します。

1Max/MSP Version5のアイコン(MacOSX版)

ソフトを起動し、[File]→[New Patcher]をクリックします。次のような画面が出てきます。

2

この「パッチャー」と呼ばれる白紙状態の画面に、いろいろなパーツを置き、組み合わせながら、面白いことをします。

パッチャー上でダブルクリックすると、次のような枠が現れます。

3

今回は「object(オブジェクト・ボックス)」、「message(メッセージ・ボックス)」、「button(ボタン)」、「number(ナンバー・ボックス)」を使います。それぞれクリックすると、パッチャー上に現れます。

では、「object」をクリックして、パッチャー上に表示させます。
カーソルが点滅しているところに「clocker」と書きます。入力は全て半角です。

4

オブジェクト・ボックスの中に「clocker」と書くことで、このボックスは「1秒間に1000数えるタイムウォッチ」の機能を持つことになります。これはこのソフトの決まり(定義)です。

「オブジェクト・ボックス」は、その中に書く文字によって色々な機能を発揮するボックスです。

つぎに、「number」を出し、パッチャー上に表示。[clocker]の左下出口からドラッグをし、ナンバー・ボックスの左上入口付近で離します。線が自動的に出て、繋がります。

5

こんな調子で線を繋ぎながら、つくっていきます。[clocker]は左上に[button]を繋ぐことで機能します。同じ調子で[button]を表示させ、線を繋ぎます。

6

ここで、ちゃんと[clocker]が動くかのテストです。パッチャー左下の[Lock]をクリックしたあと(↓画像参照)、

7クリックする前の状態。クリックすると、パッチャー上の点が消える。

「button」をクリックしてみます。ナンバー・ボックスに刻々とかわる数字が表示されます。

8

「Lock」をクリックする前(パッチャー上に点がある状態)を編集モード、「Lock」をした状態を実行モードと言います。

scissors scissors scissors

ここまでで「1秒間に1000ずつ増える関数」ができあがりました。目標は「1秒間に2000」ですから、これを2倍すればいいですね。

「Lock」をクリックし、パッチャー上の点が見える「編集モード」の状態にしてから、下のように組み立てます。

9

上から順に「button」、「object(”clocker”と入力)」、「number」、「object(”* 2”と入力)」、「number」です。

「*(アスタリスク)」は「かけ算」の意味です。「*(アスタリスク)、半角スペース、掛ける数」と入力します(これは定義)。

これで完成です。実際に動かすために「Lock」をクリックし実行モードにしたあと、一番上の[button]をクリックすると、「1秒に2000ずつ増える関数」が実行されます。

happy01 happy01 happy01

さて、この状態だと、いつまで経っても数字を数えるのが止まりません。では目標設定。「5秒経ったら止まる仕掛けをつくる」ことをしてみます。

10

これが答え(のひとつ)です。「”* 2”オブジェクト」の左下に、オブジェクト・ボックスで「sel 10000」と入力しました。selは「select」の略で、10000を選ぶ、ということです。10000という数字が入力されたら、左下から信号を出すという機能があります。この信号のことを「バン(bang)」と言います。

一番左下にあるのは、「message(メッセージ・ボックス)」に「stop」と入力したものです。これは、「clockerオブジェクト」の左上に繋げます。

「clockerオブジェクト」は「stop」メッセージを受け取ると、数字を数えるのをやめ、「bang」メッセージを受け取ると、数え始めます(定義)。冒頭で、clockerオブジェクトを動かすために、「button」をつなげましたね。「button」は、クリックすると「bang」が出る仕掛けになっているのです(定義)。

今回、「selオブジェクト」を、「* 2オブジェクト」から繋ぎましたが、例えば、「clockerオブジェクト」から繋いでもOKだということがわかるでしょうか。その場合は「sel 5000」になりますね。

11左右とも機能は同じ

このように、同じ機能を実現するためのアプローチはたくさんあります。今回は「clocker」オブジェクトを使用しましたが、例えば「line」オブジェクトなどを使用しても同じ事ができます。オブジェクトの種類を色々学び(定義の勉強)、その組み合わせを考え(定義の応用)、自分の思い通りのプログラミングをすることができます。

さて、ここで初めて「プログラミング」という言葉を用いましたが、どうですか、プログラミングしているという感覚ですか?小難しい文字列を並べるというイメージのプログラミングとは違った楽しさがあると思います。「線でつないでいく」という直感的な操作が印象的だと思います。

catface catface catface

では最後に、ちょっとしたゲームをつくることにしましょう。目標設定「5秒スタジアムをつくる」。ご存知の方も多いと思います、5秒きっかりでストップウォッチを止めるゲームです。

なんてことはないですね、今まで使ったことを駆使して、これで完成です。

12

左の[button]をクリックした後、いいかなと思ったところで[stop]をクリック。5000が出れば成功!(ナンバー・ボックスを見ながらやっても、かなり難しいです。1秒間に1000数えてますから、マウスクリックに1000分の1秒の精度を求められます)

これだけだと味気ないので、「判定をする」プログラムを付け加えましょう。

13

オブジェクトの説明をします(これらは定義)。

「/ 10」オブジェクト・・・「/(スラッシュ)」は「割り算」の意味です。「/(スラッシュ)、半角スペース、割る数」と入力し、左下より計算結果が出力されます。

「== 500」オブジェクト・・・「==」は「イコール」の意味です。「==(イコールイコール)、半角スペース、判定する数」と入力し、左下より正しい場合は「1」、違う場合は「0」が出力されます。

「makenote」オブジェクト、「noteout」オブジェクト・・・詳しく説明しませんが、これらのセットでMIDI音源を鳴らすことが出来ます。もともと音楽のためのプログラミング言語なので、音や映像などを生み出すオブジェクトが多数用意されています。(ちなみにこのパッチでは、「ベロシティ(音量)120、デュレーション(長さ)200ミリ秒、チャンネル10で出力」する設定になっています。clockerオブジェクトが動いている間ノートナンバー78を鳴らし続け、5秒の時だけノートナンバー49が鳴ります。MIDIの説明は明後日します。)

「t」オブジェクト・・・「trigger(トリガー)」の略で、信号を出す順番を指定します。詳細説明省略します。

「lcd」オブジェクト・・・「判定画像を表示させる領域」という矢印がでている枠の部分です。オブジェクト・ボックスに「lcd」と入力すると、この形に変わります。この領域には文字を書けたり、マウスで絵を描けたりする、画像を扱うためのオブジェクトです。今回は事前に用意した2枚の画像を表示させるために使用しました。5秒きっかりで止められたときは、OK画像が出るようにしました。詳細説明省略します。

さて、以上のオブジェクトを用いて、「100分の1秒の精度で、5秒きっかりを出すためのプログラム(判定画像付き)」をつくることができました。それではこれから、実際にみなさんのパソコンで動かすための説明をします。

note note note

Max/MSPで作った「パッチ」は配布することができます。ただし、パッチのデータだけがあっても、それを動かすソフト(つまりMax/MSP)がないと動きません。

今私がやったようなプログラミングを行うためには「Max/MSP」を購入する必要がありますが、パッチを実行するだけならば、無料の「ランタイム」をダウンロードし、インストールすればOKです。

Max/MSPの発売元である「Cycling'74社」のサイトにアクセスし、ランタイム(Runtime)をダウンロードします。

1. http://www.cycling74.com/downloads/max5 にアクセス。
2. Macを使っている人は「Current Mac Version」、
  Windowsを使っている人は「Current Windows Version」をクリック。
3. 「Max5.0.x Runtime」をダウンロード。
4. ダウンロードしたファイルを実行し、インストール。

ここまで出来ましたか?それでは次に、今回私がつくったパッチをダウンロードしてください。

clipダウンロード 081011.zip (35.9K)

これをダウンロード後展開し、「081011.maxpat」を実行してください。100分の1秒精度とはいえ、5秒を出すのはかなり難しいです。自分で作っておきながら、5秒を出せた瞬間「やった!」と叫んでしまいました(笑)。

※Max/MSP Version5を使う為には、お使いのパソコンが以下の条件を満たしていることが必要です。
 Windows機の場合:WindowsXPまたはVista。メモリ1GB以上。
 Mac機の場合:OSX10.4以降。メモリ1GB以上。
 また、Cycling'74社ダウンロードページから通常版(Max5.0.x with documentation)をダウンロードすれば、30日間無料でプログラミングも出来る状態で使えます。

  

good good good

昨今の技術のめざましい発展により、コンピュータが高性能になり、MIDIやデジタルオーディオを扱えないパソコンは皆無になりました。特殊な機器を購入せずとも、家庭にあるパソコン1台で音楽制作ができてしまいます。音楽制作が身近になり、音楽教育を受けたことがない人でさえもDTM(デスクトップミュージック)を駆使し、音楽をつくることができます。

そういう人たちが増えたからこそ、Max/MSPというソフトの重要性が大きくなってきていると思います。Max/MSPはプログラミング言語なので、DTMで行う「できあいのシーケンスソフトや編集ソフトを使う」という行為ではなく、「自身の目的のためにプログラムを組むことが出来る」点が特長です。

プログラミングといっても、上記のようにオブジェクトを線で結んでいくというわかりやすい手法なので、誰もが取りかかることができます。もちろん、これの基本はMIDIであったり、デジタルオーディオ処理であるため、DTMのハウツーを知る必要はあります。

しかし、DTMでは「曲を仕上げなければならない」という最終目標になってしまいますが、Max/MSPの場合はそれが無限大に存在します。私の場合は「音そのものの響き」を生み出すことができる楽しさを実感して、制作をしています(今回は説明しませんでしたが、「リアルタイムな音響処理」、「音を検知して何かを動かす」などということが簡単にできます)。

より自分の求めている音楽・音を追求したいと思っている人、プログラミングを始めたいと思っているけどなかなかとっかかりがない人、など、たくさんの人にMax/MSPを触ってほしいと思います。音大生ブログRankingに投票!

明日は、”私が大学で勉強している「現代音楽」の作曲から考える音楽史のお話”です!お楽しみにclip 河合達人

pen pen pen

あとがき(閉じていますので、「続きを読む」をクリックしてご覧下さい)

この解説は「数学を学んでいる中・高生」、もしくは「プログラミングをはじめたい人」に教えてるつもりで書きました。誰が「読むだけで使いたくなる」んだ、と感想を持たれた方も多いとは思いますが、そういうことです。

Max/MSPの紹介をする際、「こういうことができます」というところから説明を始める方が多いと思いますが、あえてそれを伏せました。完成形から見せると、私自身の趣味の押しつけになるような気がするからです。

現役の中・高生が勉強している数学、特に紙の上で実感しにくい「関数」をソフト上で表し動かしてみる、というところからはじめてみようと思ったのです。「オブジェクトは、関数だ」ということを初期の段階でしっかりと認識することで(私はこれが基本だと思っています)、最終的に応用する力がぐんと延び ます。

また、10/13の記事で紹介したパッチにおいて、「物理教材」としての可能性も示唆しました。当ブログには「Max/MSP」というカテゴリを設けていますし、本家サイトにおいてもパッチを紹介しています。興味がある方はぜひご覧下さい。

ただ、実例を見せないとわかりにくいのも確かです。ですから、実際に操作しているところを見てほしい、そしてそれを見せている相手の興味を探りなが ら、それぞれにあったアプローチをしたいという思いが強いです。そうすれば、どんな人にであっても「使ってみたい」と思わせられると思います。

具体的には、「DTMを扱っている人のためのアプローチ」、「音楽はしたことがあるけど、コンピュータ音楽はしたことがない人のためのアプローチ」、「映像分野に興味がある人のためのアプローチ」など様々なことが考えられます。特に芸術をしている人には、数学的な話をするよりも、実例から入った方が導入としてはやさしいでしょう。

近いうちに、「芸術に携わる人のための」Max/MSPを使いたくなる紹介を書きたいと思います。

しかし、基本は「関数(オブジェクト)」を覚えること、そして応用が「その組み合わせ」であることは理解しなければいけません。あくまでも、これはプログラミングだからです。そして、「なんでプログラミングが音楽といえるのですか?」という思いを持たれる方のために、10/12に「現代音楽」の説明をしました。(10/13 河合達人記す)

|

« これから年末にかけてやること。 | トップページ | 【教えたいシリーズ】音楽史〜現代アート・現代音楽はなぜ生まれたか〜 »

Max/MSP」カテゴリの記事

教えたいシリーズ」カテゴリの記事

音楽」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/159040/42751358

この記事へのトラックバック一覧です: 【教えたいシリーズ】Max/MSPとは?読むだけで使いたくなる解説:

« これから年末にかけてやること。 | トップページ | 【教えたいシリーズ】音楽史〜現代アート・現代音楽はなぜ生まれたか〜 »