nanonumお疲れ様ですnanonumです。MAXやりたいけど数学わからなくて...と相談される事がたまにありますが、数学者のようなMAXユーザーを見かける事は稀です。「何かエフェクターを作ろうと色々調べていたら数式が出てきてしまいどう組んだらいいのかわからない」とうケースがありますが、表現の仕方が違うだけでMAXパッチと数式でやってる事が全く違うという訳ではないので、数式苦手な方も試しに読み解いてみましょう。超絶簡単スタートになりますが第1回は中学数学から復習し、関数をMAXで組んでみるところから始めてサイン波まで出してみたいと思います。初歩になるので理系の方には全く物足りないかとは思いますがお付き合いください。関数とは何かさて、関数というものを覚えているでしょうか。これはxが〜の時、yは〜になる、というような関係を表すものになります。1という式になります。1と読み替えてしまっても差し支えありませんが、f(x)という電子レンジにxという数字を入れて、何Wで何分というボタンを押すかのように「2倍してから1を足す」という設定をしてスタートボタンを押すと、yという数字になって出てくる機械のようなものをイメージしても良いでしょう。中学ではこのxを1ずつ増やしたりしながら変化していくyの値をグラフ上に点を打ち、斜線で結んだりしましたが一体それが何なのか?そもそもx、yって何なのか?と思っていた方も少なくないのではないでしょうか。1のグラフこれを一体maxでどう使うのかいまいちピンと来ないかもしれませんが、一旦この関数をmaxで表してみます。f(x)]というサブパッチャーに入出力が存在しているもの」が実装できていれば目的に合っていそうです。想像図(これは単なる空patcherなので真似しても動きません)さて、上記パッチャーは何もしてくれないので中身を実装してみます。説明するまでもないですが上の[numbox]に入力した数を2倍し、1を足した数値を下の[numbox]に出力するだけのシンプルなパッチです。関数として表現されているよくわからない記号もこうしてみると全くたいしたことはないように見えるのではないでしょうか。サイン波を生成してみるこれで終わると全く面白くないと思いますので次は[cycle~]を使わずにサイン波を作ってみましょう。サイン波を出すには三角関数を使用します。高校で初めて習ったサインコサインタンジェントの法則、斜辺がどうで二乗して足すと1になる....などの公式は映像のプログラミングでは非常によく使われるのですが、サイン波を生成するのにはとりあえずは使用しません。代わりに使われるものがサイン関数、sin()です。試しに[sin]の前後にオブジェクトに[flonum]を繋いで見ましたがぱっと見よくわからない数値の変化をしますので、きちんとサイン波の関数を使ってみましょう。wikipediaのものはちょっと複雑なので今回は少しシンプルなものを使います。rad)sin()はサイン関数、2πは円周率の2倍です。この記事では円周率を3.1415925としています。)radは突然現れましたが、常に一定である円周率と違い0から1の間で変化する予定の数字なので、さっきの関数でxだった「関数へのインプット」として扱いましょう。記号にどういう意味があるのかはまだわかりませんがとりあえずmaxで組んでみます。Scroll”モードにしておきます。上のグラフがphasorの出力、そして下にはどうやらサイン波が出来ています。maxオブジェクトで組んでいるため音になりませんがmspオブジェクトで試しに組んでみましょう。どこで周波数を変更するか考えてみてください。ヒント:sinオブジェクトはmspではsinx~になります。ラジアンとは?サイン波が聞こえた方おめでとうございます。掘り下げてみましょう。rad)radはラジアン(radian)と言い、角度の単位になっています。角度の単位といえば普通「度(英語ではdegree)」ですが、「度」が0度〜360度の範囲なのに対して、ラジアンは0〜1になっています。紛らわしいのですが0〜1で1周するのではなく、0〜円周率倍の2倍、つまり0〜6.283185で1周します。諸々理由はありますが、円周率の2倍を掛けることでmax上では[phasor~]の出力0〜1をそのままラジアンとして使用することができます。ところでなぜ突然回転するのでしょうか??パブリックドメインで良いアニメーションGIFがあったので使わせていただきましょう。ここで注目するのは右下の円と左下の赤いグラフです。右の緑の円周上を、小さい緑の点が移動していますが、この小さい点の上下位置、Y座標の値のみを抜き出し記録していったものが左下の赤いグラフになります。y=0になっていて、縦がY軸です)最初に出したグラフ上でいうとこのような感じで、小さい赤い点のY座標の上下の動きがサイン波になっています。いかがでしたでしょうか。DSPプログラミングでは数式部分と細かい調整がごちゃごちゃになっていたりして他の人のソースコードなどをみても何故そういう計算にしているのかわかりづらい事が多いのですが、基本的なエフェクトやシンセサイズ方式などは数式がすでにwikipediaなどネット上に存在しているものが多く、数式をmaxに変換して読む事ができるとよくわからなかった数式がだんだんと”使えるネタ”かのように見えてくるかと思います。最後に一つ例を出して今回の記事を終わりにしたいと思います。cos(2πr)となっていますが、これも数式とmaxオブジェクトの対応関係がわかればこのようにわずか4つのmaxオブジェクトでできるのだなという事がわかって来ます。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。新しい投稿をメールで受け取るサウンドアーティスト・デザイナー・プログラマー。フリーランスとして活動。Maxやプログラミングによる信号処理を用い、記号表現と音素構造を基幹とした音楽表現を試みる。recordsのコンピレーションへの参加など。使用に同意したとみなされます。ポリシー%d人のブロガーが「いいね」をつけました。