最新記事

MAX 7 lcdとピクセルドットの作成2

p.247〜261 次に、連続して一定の速度でドットを生成し続けるプログラムを考える。 ここでは、randomオブジェクトを使用する。 randomオブジェクトは、名前の通りランダムにアーギュメントに指定された数値以内の数をbang入力とともに出力するオブジェクトである。 右の図では、bangからそれぞれleft、topの座標を指定する数値がランダムに出力され、それぞれに等しい値(右上のナンバーボックス内数値)が足されることで、ドットの直径を指定することが出来るプログラミングとなっている。 また、頭のbangにmetoオブジェクトを繋げることで、手動でbangをうたなくとも、一定のリズムで、ドットを自動生成すること画で来る。 ・サブ・パッチ このように、パッチがやや複雑になると、混乱する可能性も出てくるため、サブ・パッチを使用して、全体をすっきりさせるのが良い。 方法は、簡潔にしたいパッチとオブジェクトを選択し、EditメニューのEncapsulateをクリックする。 また、サブパッチの内容を改めて開きたい場合には、ロック後にダブルクリックするか、オブジェクトの左に現れる黄色い再生ボタンから'open'を開けば見ることが可能である。 そして、サブパッチが面を開いた状態でFile→Save as..で保存し、新しいオブジェクトボックスにそのファイル名を入れると、同じ内容のサブパッチを呼び出し複製することが出来る。 ・frameovalメッセージ paintovalメッセージの他に、縁のみの円を作成するメッセージである。 これをさらに繋げて、ドットと一緒に生成してみる。

MAX 7 lcdとピクセルドットの作成1

p.246 さて、ここでは、lcdオブジェクトという、ビットマップ描画(図のように1ビット単位でピクセルを潰して絵を書く)ができるものに、1ピクセル(最小単位の1コマ)のドットを描いていく作業を行う。 まず、ドットをつけるために、{paintoval}という小円を作るメッセージで、大きさを指定する必要がある。 このpaintovalは、left-rightのx座標範囲と、top-bottomのy座標範囲の中にぴったりと入る形で生成される。 アーギュメントの並び順は、{paintoval left top right bottom}となる。 考え方としては、最初にleftとtopが交わる、左上の頂点を決定し、そこからいくつ分右方向、下方向に伸ばしていくかを決定すればよい。※正円にしたい場合は、同じ数値を入力すればよい。 よって、left, top, left+α, top+βの値を入力できるプログラムが必要である。 また、その4つの数値をリストとしてpackオブジェクトでまとめて送信することで、packオブジェクトのインレットに常に変動できる任意の数値が入力できるようにしておきたい。 下図の例では、sizeメッセージを用いて、lcdオブジェクトを200×200ピクセルのサイズにしている。 左と右は同じ結果であるが、それぞれの座標を出力すると、頭の中で計算をしないと行けないので非常に分かりづらい。よって、右側のように、leftとtopの座標を基準としてそこからいくつのピクセル地点で円を作成するかという考え方にする方が分かりやすい。

MAX 7 サウンドプログラミング基礎6

p.237〜245 ・loadbangオブジェクト パッチを開くと同時に動作を開始したい場合や、初期設定を行いたい場合などには、loadbangオブジェクトが利用できる。loadbangは、パッチファイルが開かれたときにbangメッセージを送ることができる。 ダイヤルやスライダー等の数値は、その値を保存できないため、loadbangを繋いででおけば非常に役に立つ。 ・loadmessオブジェクト また、パッチが開かれた際に、アーギュメント内のメッセージや数値を出力するのが、loadmessオブジェクトである。 なお、Mac乃場合、アカウント設定のログイン項目にパッチファイルを登録しておけば、PC起動時に自動的にパッチが開かれ、loadbangによってプログラムの動作を開始することも可能である。 loadbang/loadmessを無効にした状態でパッチを開く方法としては、command+shiftを押しながらパッチファイルを開くことである。 ・closebangオブジェクト こちらは、パッチが閉じる時に出力をする。 ・presetオブジェクト presetオブジェクトを使用することで、パッチ内でのその場その場の保存しておきたい設定などを記憶させることが可能となる。 パッチをロックした状態で、shiftを押しながらprisetナンバー部分を押すと、現時点でのパッチ画面の設定がそのまま保存される。 また、特定の部分的なオブジェクトのみ記憶させておきたい場合には、その記憶させたいオブジェクトの第1インレットに、presetオブジェクトの第1アウトレットからのパッチを繋ぐ琴江、その他の

MAX 7 サウンドプログラミング基礎5

p.230〜236 ・triggerオブジェクト MAXでは、先日してきたようにオブジェクトの実行順序がrigtht-to-leftとbottom-to-topというルールに従っているわけであるが、triggerオブジェクトを用いることで、同時に実行する複数のオブジェクトの実行順序を明示的に指定する方法がある。 triggerオブジェクトは、アーギュメントにbやi、fといった記号を指定し、それらの記号の数だけのアウトレットが作成される。 bはbangであり、iはint、fはfloatを表している。そして、triggerオブジェクトがメッセージを受け取ると、アーギュメントで指定したタイプにメッセージを変換し、それぞれのアウトレットからメッセージを出力する。 図は、インレット入った数値が、triggerオブジェクトのアーギュメントのそれぞれの実数に反映され、第1アウトレット、第二ア2ウトレットから出力され、結果二乗が出力される(左)。 次のプログラムは、[t b f]の第1アウトレットからはbangが、第2アウトレットからは実数が出力され、”500/指定された実数”ちう演算の結果が出力される。 その次のプログラムは、各アウトレットからの出力をパッチコードを左右逆に繋いでいるので、第1アウトレットから順番に出力させることが可能となっている。 ・linetoメッセージ 最後に、右のプログラムについて。linetoメッセージにおいては、現在の位置から指定された位置までの線を描くメッセージであり、ここではpackオブジェクトを用いて、linetoの第1アーギュメントにx座標、第2アーギュメ

MAX 7 サウンドプログラミング基礎4

p.183〜190 ・ランダム関数 ランダムな数値を生成するには、下記のオブジェクトを用いる。 ・randomオブジェクト.......ランダムな数値を出力 ・urnオブジェクト  .......重複しないようにランダムな数値を出力 ・drunkオブジェクト .......直前の値を基準として、一定範囲で増減する数値を出力 ・decideオブジェクト .......ランダムに"0"か"1"を出力 ※drunkオブジェクトは、第2アーギュメントで指定した数値よりも1小さい範囲で増減するような数値を出力する。例えば、[drunk 250 3]であれば、0から250までの数値を、0〜2段階(-2 -1 0 +1 +2)の範囲で増減していくこととなる。 ・multislider 右動画において、multisliderとrandomオブジェクトを使用した簡単なグラフを作成した。縦軸のレンジに則って、指定された数値をランダムにスライダやポイント、ライングラフとして表示することができる。 ちなみに、ドラッグ&ドロップでスライダー事態を拡大しても、インスペクター上の範囲が変わらなければ、どのサイズでもいっぺんのサイズはその絶対値として機能する。 ・その他の数値処理オブジェクト [abs]...入力された数値の絶対値 [pow]...アーギュメントまたは第二インレットの数値を指数として、べき乗を出力。 [sqrt]...入力される数値の平方根を出力 [ftom]...周波数をMIDIノートナンバーに変換して出力 [mtof]...MIDIノートナンバーを周波数に変換して出力 [atodb]

MAX 7 サウンドプログラミング基礎3

p.169〜178 複数のメッセージ(リスト表記とカンマ表記)について。 さて、ここで非常に引っ掛けっぽい例を紹介したい。 まず、リスト表記については。右の左式の場合、[3 20]のリストメッセージが{* 5}オブジェクトへ流れ込むと、これは{*}オブジェクトの"第2インレットへ入った20"×"第1インレットへ入った3"の乗算と全く同じ働きであるため、 答は"60"である。 では次に、カンマ表記である[3, 20]の場合はどうか。こちらは、左から順番に{* 5}オブジェクトへと流れ込むため、printすると[15 100]と表記されるが、ナンバーボックスに反映されるのは最後に計算される100のみとなる。 ・valueオブジェクト valueオブジェクトは、同じアーギュメントを持っているものに対して、メッセージを記憶し、bangによって共通して出力させることができる(※bangが入力されなければ反映されない)。 右の式においては、[AA]と共通したアーギュメントをもつvalueオブジェクトは、一方に数値を入力し、bangを入力することで、一方の同じアーギュメントの出力にも同党の数値が反映する。 ・sendオブジェクトとrecieveオブジェクト パッチコードでアウトレットからインレットへ繋がなくとも、信号を送る方法がある。 sendオブジェクトとrecieveオブジェクトのそれぞれに同じアーギュメント内容を記しておけば、sendに入力されたメッセージや数値と同じ内容がreceiveオブジェクトから出力される。また、これは複数のreceiveオブジェクトがあっても同じ結果となる。

MAX 7 サウンドプログラミング基礎2

p.159〜168 前回から少し空いた。本日は進めるだけ進めたいと思う。 ちなみに、家の近くのファミレスで作業している日もあり、今日がそうなのだがノートPCの電池がもつまでという限られた時間しか行えないため、PC電源用のモバイルバッテリーを買おうかと思っている。 ・symbolメッセージ seymbolメッセージは、「hello」や「clear」など、オブジェクトに対して何らかの動作を支持する役目をもつメッセージである。例えば、{lcd}オブジェクトという、ビットマップ画像を描くオブジェクトに[writepict]というsymbolメッセージを送ると、ファイル保存ダイアログが開き、画像をファイルとして保存することが可能となる。  メッセージのタイプ指定について メッセージの前に、"int"や"float"、"list"、"symbol"を付け加えることで、メッセージタイプを明示的に指定することができる。 例えば、[symbol 98]というメッセージは、整数としてではなくsymbolとして出力される。また、[float 5]とすれば、実数の5.0として出力されることとなる。 メッセージ内の"$"に関して $記号は、$1とすることでそのメッセージボックスに入力される数値やsymbolなどと同じ数値が入ることを意味する。 ただし、symbolメッセージや複数のlistメッセージを置き換える場合には、メッセージに"symbol Fightや"list 100 0.4"のように明示的にメッセージがどのような内容であることを示さなければ反映されない。(MAX6まで?7ではsymbol

MAX 7 サウンドプログラミング基礎1

p.149〜159 さて、本ブログでは、cyling'74(先日Ableton liveに買収されたようである)が開発したサウンドプログラミング"MAX7"について、理解の向上のため要点や考え方などをまとめていきたいと思う。 そのついでに日記も書くかもしれない。 ・基礎の基礎"right to left"の規則 (※また、左右の位置が全く一緒の場合は、bottom-to-topが適応され、より下のオブジェクトから順にs実行されることとなる。) maxプログラムにおいて、信号処理の真髄と言っても良い、right to left。 この法則を頭に叩き込んでおかなければ、到底このソフトを使いこなすことも、新たなプログラムを開発することも不可能である。 右の図を見てみよう。上のバングを押すと、最下のサンバーボックスにはどのような数値が出力されるか。答えは{50000}+{57}で{50057}である。 これは、すなわち[+]オブジェクトの第2インレットへ、右からら"1"、”888”、”57”と順番に入力され、最後に第1インレットへ"50000"が入力されるからである。 ※ただし、メッセージボックス内にカンマで複数の数値やメッセージが入 っている場合には、左から順に出力されるので注意が必要である。 ・setメッセージ setメッセージは、文字通りセッティングするためのメッセージBoxである。主に、ナンバーボックスやスライド、または同じメッセージボックスへ数値やメッセージを反映させるために用い(Bangはスルーアウトしない)、一旦数値を滞留させておいて、時間差で別のBangからの出力させる

アーカイブ
タグから検索
  • SoundCloud Social Icon

■当サイト音源や動画を著作者の許諾なく、営利目的・商用使用することを禁止します。

■著作物を個人的に楽しむ場合などを除き、著作権利者の許諾を得ないで複製 (録音)などを行うことは、著作権法で禁止されています。

Copyright © 2015 kuu-sou sound creations. All Rights Reserved.