MAX7 : buffer~を復習する(その4(groove~オブジェクト))

Max(プログラム言語)
07 /10 2015
みなさま、どうもです。
今回もMAX7に関する記事です。

■目標■
「buffer~オブジェクトについて復習をする。」

今回はbuffer~オブジェクトに突っ込んだオーディオファイルを流します。
録音(サンプリング)まで書けたらいいなあ...。
(そんな体力残ってるかな?^^;)

※注意※
基本的なこと(パッチングの手法、メッセージやインスペクターなど)については省略していますのでご注意ください。
(その辺はお手数ですが各自でお調べください。)

音を鳴らすよ。(groove~オブジェクト)

前回、buffer~オブジェクトで領域の確保とオーディオファイルの読み込み方等基本的なことを書きました。

領域を確保してオーディオファイルを読み込んだのはいいけど、再生しないことには意味がない。
ということで、今回は再生することについて書きます。

今回、groove~オブジェクトをメインに書きます。
他にもplay~オブジェクトなるものもありますが、今回はこれについてはふれません。
(単に僕が使いこなせないのと、使い勝手があまり好きじゃないっていうのが理由です。)

今回はこれを基に説明します。
buffer.jpg

まず、
my_buffer.jpg
でmy_bufferという名のバッファー(サイズ:5000ms、チャンネル数:2ch)が確保され、その中にpiano_2.wavが格納されています。

で、再生については、
groove.jpg
が担当しています。

このgroove~オブジェクトの中身ですが、上記の場合だと、
「my_bufferを2chで出力しろ。」となります。

このgroove~オブジェクトですが、数学の公式みたいな感じで書くと下記みたいになります(笑)。
■groove~オブジェクト■
groove~ [バッファー名] [チャンネル数(※指定なければ1ch)]



もちろん、これだけでは何もしてくれませんので、指示(メッセージ)を与える必要があります。
指示については前回のbuffer~オブジェクトと同様にメッセージを送ります。

下記には基本的なメッセージだけ紹介しておきます。

startloop.jpg
再生(ループ再生)開始させるためのメッセージ。
決して、『play』ではないので注意。

stop.jpg
言わずもがな停止するためのメッセージ。

loop_mes.jpg
ループ再生するかどうかを設定するところ。
✕みたいなものはトリガーボタンで、反転状態で0(off状態),1(on状態)が出力されます。
メッセージ自体は下の「loop $1」がループするかどうかを決めます。
「$1」にはトリガーボタンから送られてくる数値が入れられます。C言語でいう引数みたいなものです。

初めからループすることを前提にするのであれば『loop 1』のメッセージボックスのみで大丈夫です。

playspeed.jpg
ここの部分は再生速度を設定するためのメッセージとなります。
今までと違うのはメッセージボックスではなくオブジェクトがメッセージを送るということです。
メッセージボックスだけがメッセージを送るという訳ではないということです。

上の数字の箱(実数)の値がsig~オブジェクトに送られて再生速度を送る仕組みです。

ここで異なるのが出力される形が他のメッセージと異なるということです。
sig~オブジェクトの場合、
signal_line.jpg
がでてますが『シグナル』という音の信号が出力されています。
なお、このシグナルについてはオブジェクトに「~(ティルダ記号)」がついていたらシグナルが出力されると思っておいてください。
(※某書に書かれていることをまんま引用するのであれば「シグナルを受け取ったり出力するオブジェクトは名前の最後にティルダ記号「~」が付いている。」ということです。)

ちなみに、
data_line.jpg
は数値や文字列といったデータが流れています。

しかし、なんでこの部分だけ『シグナル』でやりとりをする仕様にしたのかは謎です。
さすがにそこは僕には分からないので、開発者に聞いてください...ただし、英語で(笑)。

さて、オブジェクトの上にある
inlet.jpg
この部分を『インレット』と呼ぶんですが、インレットの入れる場所によって処理が異なります。
(※ちなみに出口については『アウトレット』と言います。)
真ん中と右(第2インレット、第3インレット)については再生開始位置(※第2インレット)と再生終了位置(※第3インレット)を入力することができます。

例えば、こんな感じ。
start_end.jpg
やっと一番初めの話に戻ってきたような気がしますが、こんな感じで開始位置と終了位置を入力することができます。
あとはwaveform~オブジェ(波形が書かれてるオブジェ)やその下の数値の箱(ナンバーボックス)をいじることで変更することができます。
(やりようによってはランダムで範囲をしてすることもできます。(←後にこれが重要となります。))

蛇足(loadbangについて)

過去の記事や、上の内容ではあえて無視してましたけど、
loadbang.jpg
ってなんやねん?と。
そろそろつっこまれそうなので書きます。

loadbangは「パッチを開いた(読込んだ)時にbangメッセージを送ります」という文字通りのオブジェクトです。
ちなみにbang(bangメッセージ)っていうのは「オブジェクトに何らかの動作のきっかけを与えるメッセージ(※某書の文を引用)」とのことやけど、僕にはこれをうまく説明することができません。
とりあえず『「お前、やれ!」コール(just do it!コール)』を送っているもんだと思ってもらえれば何の支障も出ません...たぶん(笑)。
(ふざけたことを書いてるようで、本当のことだし...。)

まあ、難しく考えずにloadbangオブジェクトはパッチを読込んだ時に設定(初期化)するためのオブジェクトと思ってくれたら問題ないです。

例えば、
buffer.jpg
の場合だと、loadbangの下に「-4.」というメッセージがあって、live.gain~ってところにつながっています。

live.gain~は音量スライダー(音量調整)みたいなものなので、
「パッチを読み込んだ時点で-4dBにしときます。」ということになります。

loadbangで設定しておかなければ、初期状態の0dBのままなので、そのまま再生したときがうるさくて気分が萎えます(笑)。

まあ、そんな感じで初期化させておきたいものに関してはloadbangを使います。


やっぱり、サンプリングまではいけませんでしたね。^^;

自分向けで外のこと(読む人側)は気にしないとか言いつつ、まだ丁寧に書いているような気がします。
正直、書いてるこちら側からすると効率悪いんでもうすこし雑に書いてもいい気がします(笑)。

まあ、そんなことはさておき、次の記事でサンプリングについて書きます。それでは。
(丁寧に書く部分も次で終わりやと思います。(ここで基本が終わるから。))

今回もこのような記事にお付き合いして頂き、本当にありがとうございます。

PAGE TOP