Max基礎

Cycling’74 Maxとは

2020.6.20一部更新(本記事は2017時点のMac版のMax 7をベースの執筆しています。徐々にWindows版Max 8に対応していきます)

Max(マックス)は、Cyclin’74社が開発、販売しているグラフィカルなプログラミング環境。Processing等のコード記述によるプログラミングとは異なり、様々な機能を持ったボックスをパッチコードで接続していくノードベースによるプログラミングを行う。視覚的にプログラムの流れを理解しやすく、プログラムの修正やパラメータの変更が容易なため、試行錯誤を必要とするプログラムのプロトタイピングやメディアアート作品に用いられることが多い。日本ではMI7が販売している。MI7のサイトには日本語の情報も多い。登録すれば日本語パッチやリファレンスの日本語化にも対応している。

映像や音響合成などの機能にも特化しており、音楽ライブや映像演出でも使われることが多い。プログラムの実行スピードはopenFrameworksなどのC++のほうが高速だが、手軽さという面ではMaxが優れている。PCの高速化のおかげで音楽ライブでの演奏や映像演出でも問題なく利用することができる。

バージョン4まではMax/MSP/Jitterという名称だったが、バージョン5以降は単にMaxという名称になった(もどった?)。2017年現在はバージョン7が最新。もとはミラー・パケット氏が開発したものだが、現在はCyclin’74社が開発を続けている。ミラー・パケット氏が開発したPure DataもMaxと同様なグラフィカルプログラミング環境でフリーで公開されているが、完成度はMaxのほうが高く、使い勝手も良い。バージョン7以降は、6までのRuntimeが1つのアプリケーションとして内包されており、Demoモード(保存不可、編集可能)として動作する。バージョン8から、一カ月期間限定のTrial版利用時(保存含めて全ての機能可能)にもアカウント作成をして試用を開始する。この方法により、Demoモードで機能を理解して、必要な時にTrial版利用という選択ができるようになった。

Back To Top

Maxツアーチュートリアル

本演習ではMI7が公開しているMaxツアーに沿って進める。映像自体は5分程度しかないが、ここで紹介されている機能を理解するには幅広い知識が必要となる。以下の映像ではバージョン6を利用しているが、本演習ではバージョン8を利用する。(現在はMac版Mac 7をベースとしているが原稿をWindows版Max 8へ移行中)映像の再生に関してはimovieオブジェクトではなく、jit.movieオブジェクトを用いる。

Back To Top

ステップシーケンサーとは?

このチュートリアルでは最終的に音と映像が連動したステップシーケンサーを作成する。ステップシーケンサーは、音をステップ毎に入力して、ステップが進行しながら音源を鳴らす自動演奏システム。

デジタル楽器を演奏しながらその演奏データを記録することを「リアルタイムレコーディング」と呼ぶが、シーケンサーは一音一音入力していくため「打ち込み」と呼ばれる。

Back To Top

Maxの起動

Maxを起動する。

コンソールウィンドウ(下図)が表示される。

コンソールウィンドウには、プログラムの動作状態がテキスト表示される他、デバッグにも利用する。パッチャーウィンドウが表示されている場合は閉じても問題はない。

Back To Top

新規パッチャーの作成

①FileメニューからNew Patcherをクリック

Maxではプログラムを行うウィンドウのことをパッチャー・ウィンドウ(もしくはパッチ・ウィンドウ)と呼ぶ。作成したプログラム自体はパッチ(もしくはパッチャー)と呼ぶ。

 

②パッチャー・ウィンドウ

新規パッチャーを作成すると、空のパッチャー・ウィンドウが表示される。

Back To Top

パッチャー・ウィンドウの使い方

①パッチャー・ウィンドウのユーザ・インターフェース(UI)

パッチャー・ウィンドウにはツールバーが周りを取り囲んで表示される。

 

②Maxのプログラミング作法

Maxではツールバー上段の様々なオブジェクト(700種以上の機能)を下図のように配置し、それらをパッチ・コードで接続することでプログラミングを行う。

Back To Top

button、パッチ・コードの接続

①buttonの追加

下図のアイコンをドラッグ&ドロップして追加する。

アイコン下に白三角があるものはクリックすることでサブメニューから他のオブジェクトを選択することもできる。

 

②サイズの変更

オブジェクトの四隅の白い四角部分をドラッグしてサイズを変更することができる。

 

③移動と複製

オブジェクトはドラッグして移動する。ドラッグと同時にキーボードのOPTIONキーを押せば複製することもできる。このあたりの操作はAdobe Illustratorと同様である。複製はキーボードショートカットのCommandキー+C(コピー)、Commandキー+V(ペースト)でも可能。

 

④インレットとアウトレット

あらゆるオブジェクトの全てには、メッセージの送受信を行うためのインレット(受信側)とアウトレット(送信側)がある。このインレットとアウトレットを接続することで、それぞれのオブジェクトがメッセージをやり取りしてプログラムを組み立てていく。

オブジェクトの種類によって複数のインレット、アウトレットを持つものがある。アウトレットやインレットで送受信するメッセージはオブジェクトによって決められているため、接続できない組み合わせもある。詳しくはヘルプなどを確認しながら行う必要がある。

 

⑤パッチ・コードの接続

buttonのアウトレットをインレットを接続する。アウトレットもしくはインレットのどちらからでもドラッグすることでパッチ・コードを引っ張りながら接続することができる。一つ目のオブジェクトのアウトレット(インレット)をクリックした後に、二つ目のオブジェクトのインレット(アウトレット)をクリックしても接続できる。

 

⑥オブジェクトの削除と複数オブジェクトの選択

左クリックでオブジェクトを選択してDELETEキーを押す。複数のオブジェクトを選択する場合は、左ドラッグで領域選択する。複数オブジェクトの移動、複製も可能。

 

⑦パッチ・コードの削除

左クリックでパッチ・コードを選択して、DELETEキーを押す。
複数のパッチ・コードを選択する場合は、Alt(Option)キーを押しながら領域選択する。

Back To Top

パッチャー・ウィンドウのロック

①パッチャー・ウィンドウのロック

パッチの動作確認をするためには、パッチャー・ウィンドウをロックする必要がある。下図のように、パッチャー・ウィンドウ左したの鍵のアイコンをクリックしてロック/アンロックを切り替えることができる。または、Ctrl(Command)キーを押しながらパッチャー・ウィンドウ内の何もない所をクリック。キーボードショートカットではCtrl(Command)+Eでロック/アンロックを切り替えることができる。

注意点として、アンロック状態とロック状態では下図のように違いがわかりにくい。鍵アイコンの状態を確認するか、上部バーのunlocked/表示なしを確認しながら操作する必要がある。

 

②パッチの動作確認

パッチャー・ウィンドウがロックされた状態で、上のbuttonをクリックすると上のbuttonが光ると同時に下のbuttonにbangメッセージが送信され、下のbuttonが光る。このように異なるオブジェクトをパッチ・コードを通じてメッセージを送信することが可能となる。buttonではbangメッセージしか送信できないが、数値や文字列などを送信できるオブジェクトもあり、オブジェクトによって異なる。詳しくはヘルプを参照。

 

③動作確認のもう一つの方法

パッチの動作確認のもう一つの方法として、パッチをロックしなくても、Ctrl(Command)キーを押しながらオブジェクトを操作すれば動作させることもできる。

Back To Top

パッチの保存

パッチの保存はFileメニューのSaveから行う。保存されたファイルには.maxpatの拡張子がつく。特に、Maxのようなプログラミングを行うソフトウェアは動作が不安定になりやすく、突然アプリケーション自体が落ちることもあるので、作業途中でもSaveすることをおすすめする。

Maxでは日本語のファイル名も可能だが、他アプリケーションや英語圏とのやりとりすることを考えると、英語で記述しておいてほうが無難である。また、保存ファイル名には連番を付加してバージョン管理し、作業途中からやり直すことも想定して作業を進めたほうがよい。

Back To Top

オブジェクト・ボックス

①オブジェクト・ボックスの追加

下図のオブジェクトボックスのアイコンをクリックもしくはドラック&ドロップして追加する。または、パッチャー・ウィンドウの何もない場所でダブル・クリックしても追加できる。キーボードショートカットではNキー。

 

②オブジェクト名の入力

オブジェクト・ボックスはbuttonなどとは異なり、追加しただけでは何も動作しない。下図のようにオブジェクト・ボックス内にカーソルが点滅しているので、そこにオブジェクト名を入力する。オブジェクト名を入力してはじめて、特定の機能のオブジェクトとして動作する。汎用的なオブジェクトと言える。

オブジェクト名を入力する際は、すべての文字を入力しなくても下図のように候補となるオブジェクト名を表示してくれるので効率的にオブジェクト名を指定することができる。オブジェクト名は半角英数で入力する。オブジェクト名を入力した後、Returnキーを押して確定する。

オブジェクトの種類は700種以上あり、様々な機能を持ったものがある。下図は今回のチュートリアルで利用するもの。

ちなみに、すでに利用したbuttonも、オブジェクト・ボックスに「button」と入力することで呼び出すこともできる。

 

②アーギュメントについて

オブジェクト名の後ろにある数値は、アーギュメントと呼ばれるもので、オブジェクトのパラメータ(媒介変数)として作用する。複数のアーギュメントを持つオブジェクトもある。オブジェクト名とアーギュメントの間、アーギュメントとアーギュメントの間は、スペースを空けて入力する。アーギュメントの指定の仕方によっては、インレットやアウトレットの数が変更されるオブジェクトもある。

 

③オブジェクト名の変更、取り消し、やり直し

オブジェクト名の変更:一度確定したオブジェクト名を変更する場合は、オブジェクト上でダブルクリックする。

取り消し:Ctrl(Command)+ Z
やり直し:Ctrl(Command)+ Shift + Z

Back To Top

randomオブジェクト、ナンバー・ボックス

①randomオブジェクト

randomオブジェクトは、オブジェクトボックスにオブジェクト名「random」を入力する。アーギュメントは出力する数値の最大値を表す。第1インレットに受信したbangのタイミングで、0からアーギュメントまでの範囲内でランダムに数値をアウトレットから出力する。

 

②ナンバー・ボックス

ナンバー・ボックスは整数を扱う入出力インターフェース。インレットに受信した整数を表示するだけでなく、マウスでドラッグもしくは数値を入力することでアウトレットからその値を出力することもできる。

 

③randomオブジェクトとナンバー・ボックスの動作確認

下図のように、オブジェクトを接続した後、パッチャー・ウィンドウをロックする。buttonをクリックして、ナンバー・ボックスにランダムに数値が表示されることを確認する。

Back To Top

counterオブジェクト

①counterオブジェクト解説

counterオブジェクトは、第1インレットにbangを受け取る毎に、第1アウトレットから数値を増加/減少させるオブジェクトである。アーギュメントの指定の仕方によって動作状態は異なる。

 

アーギュメントを指定しない場合

第1インレットにbangを受け取る毎に、初期値0から1増加した値を第1アウトレットに出力する。

 

2つのアーギュメントを指定した場合

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最小値を初期値として1増加した値を第1アウトレットに出力する。最大値に達した後は最小値にもどる。

 

3つのアーギュメントを指定した場合(1つ目が0の時)

2つのアーギュメントを指定した場合を動作は同じ。

 

3つのアーギュメントを指定した場合(1つ目が1の時)

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最大値を初期値として1減少した値を第1アウトレットに出力する。最小値に達した後は最大値にもどる。

 

3つのアーギュメントを指定した場合(1つ目が2の時)

1つ目のアーギュメントは最小値、2つ目のアーギュメントは最大値となる。第1インレットにbangを受け取る毎に、最小値を初期値として1増加した値を第1アウトレットに出力する。最大値に達した後は減少に転じ、最小値に達した後は増加に転じる。

 

このように、アーギュメントの指定の仕方によって、オブジェクトに様々な動作を行わせることができる。アーギュメントの指定方法やその影響はオブジェクト毎によっても異なるので、ヘルプを確認しながら作業を行う。

 

②counterオブジェクトの動作確認

以下のように接続し、buttonを押す毎にナンバー・ボックスの数値が増加することを確認する。

Back To Top

metroオブジェクト、toggle

①metroオブジェクト

metroオブジェクトは、アーギュメントに指定した数値の間隔でアウトレットからbangを出力する。単位はms(ミリセカンド, 1/1000秒)。動作のON/OFFにはインレットに1/0を入力する。下図の設定では120ms間隔でbangを発生させる。

 

②toggle

toggleオブジェクトは、metroオブジェクトのように一度ONすると動作を継続して行うようなオブジェクトに対してスイッチのような役割を行う。クリックすることでON/OFFが切り替わり、アウトレットからは1/0を出力する。

 

③metroオブジェクトとtoggleの動作確認

metroオブジェクトとtoggleを使うことで、パッチの自動制御が可能になる。

Back To Top

ヘルプ、各種ドキュメント

①ヘルプの表示

オブジェクト上でOPTION or ALTキーを押しながら左クリックすると、ヘルプを表示することができる。Maxのヘルプは秀逸で、説明だけでなく、実際に動かすこともできる。さらに、ヘルプ上のオブジェクトをコピーして、自分のプログラムにも追加して利用することができる。

 

②各種ドキュメント

Helpメニューから様々な有益なドキュメントにアクセス可能。これらを利用するだけでも独習できる。

  • Max Tour 初心者向けツアー
  • Browse Lessons レッスン形式の学習コンテンツ
  • Reference リファレンス検索だけでなく、チュートリアルも豊富
  • Example 様々なパッチのサンプルがあり、そのまま利用も可能

下図はReferenceウィンドウ。下方にTutorial等の様々なコンテンツが用意されている。

Back To Top

メッセージ・ボックス

①メッセージ・ボックスの追加

下図のメッセージ・ボックスのアイコンをクリックもしくはドラック&ドロップして追加する。キーボードショートカットはMキー。

 

②メッセージの入力

メッセージ・ボックスはオブジェクト・ボックスと同様に、追加しただけでは何も動作しない。下図のようにメッセージ・ボックス内にカーソルが点滅しているので、そこにメッセージを入力する。

メッセージ・ボックスは、インレットにbangを受け取る毎にアウトレットからメッセージを出力する。メッセージ・ボックスは、パッチャー・ウィンドウをロックするとボタンのように押してメッセージを出力することもできる。

下の例では、toggleに対して1もしくは0のメッセージを送ることでON/OFFを切り替えている。

下の例では、buttonの代わりにbangを送ることができる。

下の例では、メッセージ・ボックス同士を接続したもの。メッセージ・ボックスは第2インレットにメッセージそのものを受け取ることができる。

このように、メッセージ・ボックスを使うことで、特定のオブジェクトに対して様々な命令を行うことができる。オブジェクトがどのようなメッセージを受け取ることができるかは、ヘルプで確認できる。

Back To Top

ビデオファイルの再生

Jitterは映像処理に特化したオブジェクト群で、名前の頭が「jit.」になっている。

 

①jit.movieの追加

オブジェクトボックスを追加して「jit.movie」を入力する。

 

②jit.pwindowの追加

ツールバーのAdd objectのJitterカテゴリからjit.pwindowをクリックする。
もしくは、オブジェクトボックスに「jit.pwindow」と入力してもよい。

黒いオブジェクト(jit.pwindow)が追加されるが、そのままでは小さいのSHIFTキーを押しながら四隅をドラッグ(縦横比拘束)して大きくする。
inspector(右側のiアイコン)からウィンドウサイズを数値指定することもできる。

jit.movieの第一アウトレットとjit.pwindowの第一インレットを接続する。

 

③playbarの追加

オブジェクトボックスを追加して「playbar」を入力する。

自動的に下図のインターフェースに変わる。

playbarの第一アウトレットとjit.movieの第一インレットを接続する。
接続した時点でplaybarのインターフェースの色が変わる。

 

④メッセージボックスの追加(ビデオファイル読み込み用)

メッセージボックスを追加して「read chickens.mp4」を入力する。
メッセージボックスの第一アウトレットとjit.movieの第一インレットを接続する。

 

⑤ビデオファイルの読み込みと再生

パッチャーをロックして、メッセージボックスをクリックするとビデオが再生される。
playbarを利用して再生/停止やループ設定の変更を行うことができる。

 

⑥その他のビデオファイル

Max付属のビデオファイルは以下の場所に保存されている。

  • Windowsの場合 /Program Files/Cycling ’74/Max 8/resources/media/jitter/
  • Macの場合 /Applications/Max.app/Contents/Resources/C74/media/jitter/

このフォルダ内に存在するビデオファイルはメッセージボックスに「read ビデオファイル名(拡張子含む)」のように指定することで読み込むことができる。

countdown15.movとbball.movを読み込むメッセージボックスを追加する。
それぞれのメッセージボックスをクリックして再生映像を切り替えることができる。

それぞれの映像データの仕様は以下のように異なる。
アスペクト比がjit.pwindowと一致しない場合は変形されて再生される。

chickens.mp4 1920×1080, 29.97fps
countdown15.mov 320×240, 15fps
bball.mov 320×240, 15fps

Back To Top

再生フレームの指定

メッセージボックスを追加して「frame_true $1, bang」を入力する。
ナンバーボックスを追加して、下図のように接続する。

パッチのロック後、ナンバーボックスの数値を変更して映像がスクラッチできることを確認する。
フレーム数はそれぞれchickens.mp4 378frame、countdown15.mov 150frame、ball.mov 68frame。
映像のフレーム数は、getframecountメッセージとprintオブジェクトを利用することで取得できる。詳しくはHelp参照。

Back To Top

ランダムフレーム再生パッチ

これまで作成したものを下図のように接続する。
toggleをONにすると、ランダムに映像のフレームが再生される。
randomオブジェクトのアーギュメントを映像データに合わせて300, 150, 68に変更して実験してみる。
映像データを切り替えたときに自動的に映像再生されるので、処理が重い場合にはji.movieオブジェクトにautostartアトリビュート0を追記する。

max2017_17.zip(公開停止中)

Back To Top

外部ウィンドウとフルスクリーン

jit.pwindowオブジェクトを削除して、jit.windowオブジェクトを追加する。
jit.windowオブジェクトは独立したウィンドウ上で映像再生を行う。
下図のfullscreenメッセージ周りを追加することでESCキーでフルスクリーンにすることができる。詳細は授業内で説明する。

max2017_18.zip(公開停止中)

Back To Top

MIDIとは?

Musical Instrument Digital Interfaceの略で、電子楽器デジタルインタフェースの世界共通規格。楽器同士を接続して演奏情報を伝達するためのハードウェアおよびソフトウェアやファイル形式まで多岐に渡る。特にMIDIインターフェスを装備した電子楽器をMIDIコントローラ。その音源をMIDI音源と呼ぶ。シンセサイザーやコンピュータを使った音楽制作にはなくてはならないものである。

しかしながら、MIDIは1982年に実装されたもので、現在では通信速度や柔軟性に難があり、MIDIの代替規格としてネットワーク経由で演奏情報を伝達可能なOSC (Open Sound Control)も使われ始めている。とはいえ、新旧の電子楽器の混在する現在ではまだまだMIDI規格は利用され続けるだろう。

 

様々な形のMIDIコントローラ

 

MIDI音源(ハードウェア)

Back To Top

MIDIメッセージ解説

MIDIにおける演奏情報の送受信にはMIDIメッセージが使われる。MIDIメッセージには数種類存在する。ここではノートオン/オフ、プログラムチェンジについて解説する。

 

①ノートオン/オフ

ノートオンメッセージ:鍵盤を押した時に送信されるデータセット。
ノートオフメッセージ:鍵盤を離した時に送信されるデータセット。

ノートオン/オフメッセージはさらに以下のデータで構成されている。

チャンネル:複数の音源の切替(1-16)
ノートナンバー:音階を数字で表現したもの(0-127)
ベロシティ:鍵盤を押す早さ、音の強さ(0-127)

今回はチャンネルとベロシティは変更せず、ノートナンバーのみ変更する。ノートナンバーはピアノの鍵盤で見ると下図のように対応する。中央のC(ド)=60。

 

②プログラムチェンジ

プログラムチェンジを利用して音色を変更できる。音色の種類についてはGeneral MIDI(GM)を参照。以下にその一部を掲載する。数多くの音色があるのがわかる。

1  Acoustic Piano アコースティックピアノ
2  Bright Piano ブライトピアノ
3  Electric Grand Piano エレクトリックグランドピアノ
4  Honky-tonk Piano  ホンキートンクピアノ
5  Electric Piano エレクトリックピアノ
6  Electric Piano 2 エレクトリックピアノ2
7  Harpsichord ハープシコード
8  Clavi  クラビネット
9  Celesta  チェレスタ
10  Glockenspiel グロッケンシュピール
11  Musical box オルゴール
12  Vibraphone ヴィブラフォン
13  Marimba マリンバ
14  Xylophone シロフォン
15  Tubular Bell チューブラーベル
16  Dulcimer ダルシマー
17  Drawbar Organ ドローバーオルガン
18  Percussive Organ パーカッシブオルガン
19  Rock Organ ロックオルガン
20  Church organ チャーチオルガン
21  Reed organ リードオルガン
22  Accordion アコーディオン
23  Harmonica ハーモニカ
24  Tango Accordion タンゴアコーディオン
25  Acoustic Guitar (nylon)  アコースティックギター(ナイロン弦)
26  Acoustic Guitar (steel)  アコースティックギター(スチール弦)
27  Electric Guitar (jazz)  ジャズギター
28  Electric Guitar (clean) クリーンギター

Back To Top

makenoteオブジェクト、noteoutオブジェクト

makenoteとnoteoutオブジェクトを組み合わせて利用する。makenoteオブジェクトは、MIDIのノートナンバーをインレットで受け取り、音の強さ、音の長さをアーギュメントで指定してPitchとVelocityに変換する。noteoutはそのPitchとVelocityをもとに音源(シンセサイザーやMIDI機器)の音を鳴らす。

下図では、makenoteオブジェクトの第1アーギュメントが音の強さ(1〜128)、第2アーギュメントが音の長さ(ms)となる。上段のメッセージ・ボックスの60、62、64がそれぞれノートナンバーのドレミを表している。ノートナンバーと音階の対応表はMIDIメッセージ解説(前項)を参照。

keyオブジェクトと組み合わせることでキーボードで演奏することも可能。

ノートナンバーではなく、国際式の階名(音名+音程)表記で指定することができる。ナンバー・ボックスのインスペクタを表示してDisplay FormatからMIDI(C4)を選択する。

音を発生させる音源は、noteoutオブジェクトをダブルクリックして切り替えることもできる。初期設定ではAU DLS Synthが選択される。他のシンセサイザーやMIDI機器を接続している場合はここに表示される。

pgmoutオブジェクトを利用することで、プログラムチェンジ(音色)も変更することができる。プログラムチェンジ・ナンバーと音色の対応表はMIDIメッセージ解説(前項)を参照。pgmoutオブジェクトも同様にダブルクリックして音源を切り替えることができる。

Back To Top

selectオブジェクト

selectオブジェクトは条件分岐してbangを出力する。第1インレットに受け取った数値と同じアーギュメントの時に、そのアーギュメント順のアウトレットからbangを出力する。

selectオブジェクトのオブジェクト名は省略して入力することもできる。「sel」と「select」は同じ機能のオブジェクトである。

Back To Top

ステップシーケンサーパッチ

これまで作成したものを合わせて下図のパッチを作成する。
音と映像が同期したステップシーケンサーとして動作する。
必要に応じて、音階の変更、スピード(metro)の変更、キー操作を加えてみよう。

max2017_21.zip(公開停止中)

Back To Top

ソフトウェアMIDI音源との連動(UVI Workstation)

Windowsで異なるソフトウェア間でMIDI信号を送受信するためには、仮想MIDケーブルソフトウェアのインストールが必要になる。仮想MIDケーブルにはいくつか種類があるが、ここではloopMIDIを利用する。Maxから出力されたMIDI信号をloopMIDIを経由してUVI Workstationへ送信する。

 

①準備

 

②loopMIDIで新規ポートの作成

左下の「+」ボタンを押して新しいポート「loopMIDI Port(名前は任意)」を作成する。

 

③MaxのMIDI信号の出力先設定

実行モード(ロック状態)でnoteoutをダブルクリックして、loopMIDI Portを選択する。
全てのnoteoutの出力先をloopMIDI Portに変更する。

 

④UVI WorkstationのMIDI受信設定

Fileメニュー > Audio and MIDI Settingsをクリックする。

MIDI DevicesタブでPort AにloopMIDI Portが割り当てられていることを確認する。変更した場合は下方のOKを押す。

 

⑤連動実験

UVI Workstationで音源ライブラリの読み込み。
Maxプログラムを実行して、UVI Workstation側から発音することを確認する。
他の音源ライブラリやMaxプログラムの音階を変更してみる。

Back To Top