Max/MSPによるMIDIプログラミング
提供:kuhalaboWiki
				
								
				(版間での差分)
				
																
				
				
								
				 (→オシレータ)  | 
			 (→Keyを使って音階を鳴らす)  | 
			||
| (1人の利用者による、間の126版が非表示) | |||
| 5行: | 5行: | ||
* 工芸大図書館蔵書検索  | * 工芸大図書館蔵書検索  | ||
| − | *;[  | + | *;[https://www-lib.t-kougei.ac.jp/search/detail?rowIndex=0&method=detail&bibId=1001007489 トランスMaxエクスプレス]:前の版。プログラミングの手法、MIDI処理、オーディオ処理までなら、大体同じ。映像処理Jitterの記述がない。  | 
| − | *  | + | *[http://akamatsu.org/aka/max/2061maxodyssey/ 2061:Maxオデッセイ]  | 
:Max/MSP+Jitterの。[http://akamatsu.org/aka/max/2061maxodyssey/ 公式サポートサイト] [http://www.kuhalabo.net/kxoops/modules/d3blog/details.php?bid=120 書評]  | :Max/MSP+Jitterの。[http://akamatsu.org/aka/max/2061maxodyssey/ 公式サポートサイト] [http://www.kuhalabo.net/kxoops/modules/d3blog/details.php?bid=120 書評]  | ||
| − | :[http://  | + | :[http://akamatsu.org/aka/max/2061maxodyssey/%e8%bf%bd%e5%8a%a0%e8%b3%87%e6%96%99/#2061_sample_browser 追加資料](サンプルパッチなど)  | 
| − | *[  | + | *[https://www.s-musiclab.jp/max_docs/mmj_docs/index.html Max/MSP/Jitterドキュメント日本語版]  | 
| − | *[http://  | + | *[http://vud.org/max/ Max/MSP Externals]  | 
*[http://www.kuhalabo.net/~kuha/dokuwiki/doku.php?id=maxmspjitter Max/MSPに関する情報]  | *[http://www.kuhalabo.net/~kuha/dokuwiki/doku.php?id=maxmspjitter Max/MSPに関する情報]  | ||
*[http://www.maxobjects.com/ Max Objects DataBase]  | *[http://www.maxobjects.com/ Max Objects DataBase]  | ||
| + | == ノート ==  | ||
| + | ;ノートとは音符のこと。  | ||
| + | * 音の高さ、音の強さ、音の長さで構成される。  | ||
| + | **音の高さ note numberまたはpitch 0-127 ([http://www.kuhalabo.net/wiki/images/6/63/Notenumber1.png 図])  | ||
| + | **音の強さ velocity 0-127 ([http://www.kuhalabo.net/wiki/images/0/0f/Velocity.png 図])  | ||
| + | **音の長さ note ONからnote OFFまでの時間 ミリ秒(ms)  | ||
| + | * noteoutにpitchとvelocityをメッセージとして送り、音を鳴らす。  | ||
| + | ** velocityが1-127のとき、note ON  | ||
| + | ** velocityが0のとき、note OFF  | ||
| + | * makenoteでduration(note ONとnote OFF)を作り、noteoutに送る。  | ||
| + | * noteinでMIDI Keyboardからノートを入力する。  | ||
| + | ;notein  | ||
| + | *outlet  | ||
| + | # pitch  | ||
| + | # velocity  | ||
| + | # channel チャネル (1から16)  | ||
| − | ;  | + | ;noteout  | 
| − | + | *inlet  | |
| + | # pitch  | ||
| + | # velocity  | ||
| + | # channel チャネル (1から16)  | ||
| + | *pitchとvelocity(>=1)がくると、音をだす。(note ON)  | ||
| + | *pitchとvelocity(=0)がくると、音を消す。(note OFF)  | ||
| − | + | ;makenote  | |
| − | + | *inlet  | |
| − | *   | + | # pitch 音の高さ(0から127)  | 
| + | # velocity 音の強さ(0から127)  | ||
| + | # duration 音の長さ(1から***) ミリ秒(ms=1/1000秒)で指定  | ||
| + | *outlet  | ||
| + | # pitch 音の高さ(0から127)  | ||
| + | # velocity note ON時の音の強さ(1から127)とNote OFF(velocity=0)  | ||
| + | |||
| + | ;確認事項  | ||
* note on とnote offの関連を理解する。   | * note on とnote offの関連を理解する。   | ||
** note offは,velocity の値が 0 の note on のこと。  | ** note offは,velocity の値が 0 の note on のこと。  | ||
| 27行: | 55行: | ||
== プログラムチェンジ ==  | == プログラムチェンジ ==  | ||
| − | + | ;programとは、音色のこと。  | |
| − | + | 0番から127番までの128種類の楽器番号で音色を指定する。 (1番-128番のこともある)  | |
| + | |||
| + | ; pgmout  | ||
| + | :楽器番号とチャネルを指定する。  | ||
| + | # 楽器番号 ( 0から127 )  | ||
| + | # channel  | ||
| + | ;楽器番号(program) と音色の対応表  | ||
| + | * [[GM規格音色リスト]]( Program Number 1-128 )  | ||
| + | * [[GM規格ドラムマップ]]( Note Number Channel 10 )  | ||
| − | + | ;楽器は発音メカニズムによって大きく2つに分類できる。  | |
| − | + | # 減衰振動系  | |
| − | + | #* Note ON時に瞬時に音量が立ち上がり、Note OFFがなくても、やがて音が減衰して消える。  | |
| − | + | #* ピアノ、ギター、ハープ、シロフォン、打楽器など。  | |
| − | + | # 自励振動系  | |
| − | + | #* Note ONから徐々に音量が立ち上がり、Note OFFがくるまで音が持続して鳴り続ける。  | |
| − | + | #* オルガン、バイオリン、クラリネット、サックス、トランペットなど。  | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
== 時間制御 ==  | == 時間制御 ==  | ||
| − | |||
| − | ==   | + | ; metro メトロノーム  | 
| − | * パッチ random, drunk  | + | * inlet  | 
| + | # トグル 1=ON, 0=OFF  | ||
| + | # interval (ms)   | ||
| + | |||
| + | * outlet  | ||
| + | # bang バング  | ||
| + | |||
| + | ;bang バング  | ||
| + | :鉄砲玉のように「バン」とアクションを起こす  | ||
| + | |||
| + | ; tempo  | ||
| + | * inlet  | ||
| + | # トグル 1=ON, 0=OFF  | ||
| + | # BPM  | ||
| + | # 倍率  | ||
| + | # ビート拍  | ||
| + | * outlet  | ||
| + | # bang バング  | ||
| + | |||
| + | ; delay  | ||
| + | * inlet  | ||
| + | # bang  | ||
| + | # 遅延時間 (ms)   | ||
| + | * outlet  | ||
| + | # bang  | ||
| + | |||
| + | ; pipe  | ||
| + | * inlet  | ||
| + | # メッセージ  | ||
| + | # 遅延時間 (ms)   | ||
| + | * outlet  | ||
| + | # メッセージ  | ||
| + | |||
| + | == 乱数(ランダム) ==  | ||
| + | * パッチ random, drunk  | ||
| + | |||
| + | ;random 乱数を発生させる  | ||
| + | * bang  | ||
| + | * 発生させる数値の最大値  | ||
| + | |||
| + | ;drunk  | ||
| + | * bang  | ||
| + | * 発生させる数値の最大値  | ||
| + | * 発生させる数値の揺れ幅  | ||
== 算術演算 ==  | == 算術演算 ==  | ||
* パッチ + - * / % mod  | * パッチ + - * / % mod  | ||
| + | |||
| + | ;+ 足し算  | ||
| + | * 左 + 右  | ||
| + | |||
| + | ;- 引き算  | ||
| + | * 左 - 右  | ||
| + | |||
| + | ;* 掛け算  | ||
| + | * 左 × 右  | ||
| + | |||
| + | ;/ 割り算  | ||
| + | * 左 / 右  | ||
| + | |||
| + | ;% 剰余算(あまり)  | ||
| + | * 左を右で割った余り  | ||
| + | |||
| + | == 条件分岐 ==  | ||
| + | * パッチ  gate, sel, switch, if, route  | ||
| + | ; sel  | ||
| + | * inlet  | ||
| + | # message ( if )  | ||
| + | * outlet  | ||
| + | # message ( then )  | ||
| + | |||
| + | ; gate  | ||
| + | * inlet  | ||
| + | # ゲート(出口)番号  | ||
| + | # message  | ||
| + | * outlet  | ||
| + | # message 1,2,3,4...  | ||
| + | |||
| + | ; switch  | ||
| + | * inlet  | ||
| + | # スイッチ(入口)番号  | ||
| + | # message 1,2,3,4...  | ||
| + | * outlet  | ||
| + | # message  | ||
| + | |||
| + | == サブパッチ ==  | ||
| + | * パッチ  p パッチ名  | ||
| + | * inlet  インレットで入り口をあける  | ||
| + | * outlet  アウトレットで出口をあける  | ||
== コントロールチェンジ ==  | == コントロールチェンジ ==  | ||
| 59行: | 173行: | ||
== ピッチベンド ==  | == ピッチベンド ==  | ||
| − | * パッチ bendin, bendout  | + | * パッチ bendin, bendout ピッチをシフトする(ピッチベンド)  | 
| − | * Pitch Bend値(–8192~8191)  | + | ; bendout  | 
| + | * inlet  | ||
| + | # Pitch Bend値(–8192~8191)  | ||
| + | # channel  | ||
== ループカウント制御 ==  | == ループカウント制御 ==  | ||
* パッチ counter, uzi  | * パッチ counter, uzi  | ||
| − | |||
| − | |||
| − | |||
== キーボードとマウス ==  | == キーボードとマウス ==  | ||
| 74行: | 188行: | ||
* パッチ loadbang 起動時に自動的にbangを発生させる。  | * パッチ loadbang 起動時に自動的にbangを発生させる。  | ||
* パッチ preset 現パッチの数値、状態をボタンにセーブ(Shift+Click)、ロード(Click)ができる。  | * パッチ preset 現パッチの数値、状態をボタンにセーブ(Shift+Click)、ロード(Click)ができる。  | ||
| + | [[ファイル:PresetMax.JPG]]  | ||
== 保存した値を呼び出して再生 ==  | == 保存した値を呼び出して再生 ==  | ||
| 86行: | 201行: | ||
== 自動作曲パッチの例 ==  | == 自動作曲パッチの例 ==  | ||
| − | + | === notein noteout ===  | |
| − | *   | + | * noteinは、MIDIキーボードから、叩いた鍵盤の情報を入力値として受け取る  | 
| + | * noteinから得られる情報は、note number(pitch), velocity, channelである。nouteoutに渡すと、音が鳴る。  | ||
[[ファイル:Ex001 notein noteout.png]]  | [[ファイル:Ex001 notein noteout.png]]  | ||
| 95行: | 211行: | ||
[[ファイル:Ex001 noteOn Off.png]]  | [[ファイル:Ex001 noteOn Off.png]]  | ||
| + | === makenote ===  | ||
* makenoutでnote OFFを自動で出力する。makenoteには、デフォルトのvelocityとduration(msec)を指定する。  | * makenoutでnote OFFを自動で出力する。makenoteには、デフォルトのvelocityとduration(msec)を指定する。  | ||
[[ファイル:Ex001 mokenote noteout.png]]  | [[ファイル:Ex001 mokenote noteout.png]]  | ||
| + | === metro random ===  | ||
* metroでビートを発生させる。  | * metroでビートを発生させる。  | ||
* randomでランダムに数字を発生させる。ピッチを0-128の間でランダムに発音させている。  | * randomでランダムに数字を発生させる。ピッチを0-128の間でランダムに発音させている。  | ||
| 106行: | 224行: | ||
[[ファイル:Ex003 metro random calc makenote.png]]  | [[ファイル:Ex003 metro random calc makenote.png]]  | ||
| + | === channel ===  | ||
* channel 1とchannel 2 の2チャンネルでアンサンブルをする。  | * channel 1とchannel 2 の2チャンネルでアンサンブルをする。  | ||
* '''s''' (send)と '''r''' (recieve)で変数を使い、数値を送受信(send recieve)している。  | * '''s''' (send)と '''r''' (recieve)で変数を使い、数値を送受信(send recieve)している。  | ||
** 結線が複雑に絡み合うことを回避できる。  | ** 結線が複雑に絡み合うことを回避できる。  | ||
* loadbangでプログラム起動時に自動的にbangを送り、チャネルの初期値を設定している。  | * loadbangでプログラム起動時に自動的にbangを送り、チャネルの初期値を設定している。  | ||
| + | * channelを10に指定すると、ドラムセットになる。  | ||
[[ファイル:Ex004 metro random calc makenote 2ch.png]]  | [[ファイル:Ex004 metro random calc makenote 2ch.png]]  | ||
| − | *'''+'''  | + | === 音程 ===  | 
| − | + | *'''+'''演算子を使い音程を指定して、2つ音を重ねて発生させる。  | |
| − | [[ファイル:  | + | [[ファイル:Interval maxpatch.png]]  | 
| + | === 和音 ===  | ||
| + | * pipeを使って、3和音の発音タイミングをずらして鳴らす。  | ||
| + | [[ファイル:3chord maxpat.png]]  | ||
| + | * 3和音の2つ目の音程と3つ目の音程に乱数で揺らぎを与える。  | ||
| + | [[ファイル:Chord02 maxpat.png]]  | ||
| + | |||
| + | === スケール ===  | ||
* selを使って、発音するピッチを特定のスケールに限定している。  | * selを使って、発音するピッチを特定のスケールに限定している。  | ||
| + | * instrumental selectを使って、楽器を選択する。  | ||
[[ファイル:Ex006 metro random scale makenote.png]]  | [[ファイル:Ex006 metro random scale makenote.png]]  | ||
| − | *   | + | === コード進行 ===  | 
| − | *   | + | * counterを使って、ビートを刻む。  | 
| + | * selを使って、コードを選択する。  | ||
| + | * 1625コード進行(C,Am,Dm,G)を生成するパッチの例  | ||
| + | [[ファイル:ChordProgress1625 maxpatch.png]]  | ||
| + | |||
| + | === ビート ===  | ||
| + | * tempoを使って、ビートを発生する。  | ||
| + | * matrix controlを使って、発音ビートのタイミングを指定する。  | ||
** tempoは、(BPM, 倍数,単位音符)を引数として指定する。  | ** tempoは、(BPM, 倍数,単位音符)を引数として指定する。  | ||
| + | ** BPMは、Beats Per Minuteの略で、1分間にビートがいくつあるかを示す。例えばBMP=120だと、1分間に4分音符が120個あるので、4分音符1個の時間は0.5秒になる。  | ||
| + | |||
[[ファイル:Ex007 metro random scale matrixcntl makenote.png]]  | [[ファイル:Ex007 metro random scale matrixcntl makenote.png]]  | ||
| − | * 複数行のmatrix   | + | * 複数行のmatrix controlを使用して、複数のビートパターンを指定する。  | 
| − | *   | + | * ビートパターンをメッセージで数値で入力するには、(列番号,行番号,0[off]か1[on])で指定する。  | 
| − | *   | + | * switchを使って、流れてくる信号の入り口を切り替える。  | 
| − | *   | + | * randomで、信号の切り替えをランダムにする。  | 
| + | * unpackはリスト内の複数の数値を個々に分解する。  | ||
[[ファイル:Ex008 metro random scale matrixcntl2 makenote.png]]  | [[ファイル:Ex008 metro random scale matrixcntl2 makenote.png]]  | ||
* switchを2つ使用し、1つをピッチのビート、もう1つをvelocityの強さの値を指定している。  | * switchを2つ使用し、1つをピッチのビート、もう1つをvelocityの強さの値を指定している。  | ||
* loadbangで、ビートパターンの初期値を設定している。  | * loadbangで、ビートパターンの初期値を設定している。  | ||
| − | + | * presetで値を保存して、呼び出すことができる。  | |
| − | + | ;matrixcntlを使ったドラムシーケンス  | |
| − | + | [[ファイル:Drumseq maxpat.png]]  | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | [[ファイル:  | + | === サブパッチ ===  | 
| + | パッチ内にサブのパッチを作ることができる。  | ||
| + | ;ドラムにピアノとベースパートを追加  | ||
| + | *'''p''' でピアノパート('''p piano''')とベースパート('''p bass''')のsubpatchを作る。  | ||
| + | *全体のパッチ  | ||
| + | [[ファイル:3partsBlues_maxpat.png]]  | ||
| − | *   | + | *ピアノパート('''p piano''')のサブパッチ  | 
| + | **メロディはブルーススケールを使用  | ||
| + | **''' % 10 '''は10で割った余り(剰余系)が返ってくる。('''sel 0 1 2 3 4 5 6''') となっているので、0から6の場合は、それぞれの数値のoutletにbangが出力されるが、7,8,9の場合は、その他のoutletにbangが出力される。出力先にノート番号が割り当たっていると音符になり、それ以外は休符の扱いとなる。この例では、音符と休符が、7:3の比率で出力される。  | ||
| + | [[ファイル:PfpartsBlues_maxpat.png]]  | ||
| − | [[ファイル:  | + | *ベースパート('''p bass''')のサブパッチ  | 
| + | [[ファイル:BspartsBlues_maxpat.png]]  | ||
| + | ;'''gate'''で特定のメッセージを止めたり、流したりする。  | ||
| + | [[ファイル:gate_maxpat.png]]  | ||
| − | + | == Keyを使って音階を鳴らす ==  | |
| − | [  | + | ;Key  | 
| + | キーボードの押されたキーの[https://ja.wikipedia.org/wiki/ASCII アスキーコード]を10進数で返す。  | ||
| − | + | キーボードの2段目の並びのキー'''asdfghjkl'''を'''ドレミファソラシドレ'''に対応させ、'''makenote,noteout'''で音を鳴らす。  | |
| − | + | ||
| − | + | ||
| − | + | [[ファイル:Key noteout.png|500px]]  | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
== Tips ==  | == Tips ==  | ||
| 184行: | 312行: | ||
== 参考リンク ==  | == 参考リンク ==  | ||
| − | *[  | + | *[https://github.com/naotokui/MaxMSP_Objects/ naotokui/MaxMSP_Objects]  | 
| − | *  | + | *[http://www.kuhalabo.net/~kuha/nime/wiimu/ Wiiを使ったライブ演奏ムービの例]:遠藤綾香氏の作品例([http://nime2008.casapaganini.org/ NIME2008]に出展)  | 
| − | + | ||
| − | + | ||
| − | + | ||
* Chikashi Miyama: "Angry Sparrow"  http://www.youtube.com/watch?v=6U-TVZDaryE  | * Chikashi Miyama: "Angry Sparrow"  http://www.youtube.com/watch?v=6U-TVZDaryE  | ||
| + | |||
| + | * Life Game Orchestra http://www.kuhalabo.net/~kuha/nime/lifegorch/  | ||
| + | |||
| + | * VT Piano http://www.kuhalabo.net/~web/vtp/  | ||
== 関連項目 ==  | == 関連項目 ==  | ||
| − | + | ||
| + | == 参考 ==  | ||
| + | [[作曲演習]]  | ||
[[Category:授業|授業]]  | [[Category:授業|授業]]  | ||
2024年9月1日 (日) 02:23時点における最新版
目次 | 
[編集] 概要
- MIDIデータを自由にプログラミングし、音楽を自動生成させる。
 - キーボード、マウス、MIDIコントローラから情報を取得する。
 - MIDIコントローラからの入力をプログラミングし、リアルタイムに音楽演奏を変化させる。
 
-  工芸大図書館蔵書検索
- トランスMaxエクスプレス
 - 前の版。プログラミングの手法、MIDI処理、オーディオ処理までなら、大体同じ。映像処理Jitterの記述がない。
 
 - 2061:Maxオデッセイ
 
[編集] ノート
- ノートとは音符のこと。
 
- 音の高さ、音の強さ、音の長さで構成される。
 -  noteoutにpitchとvelocityをメッセージとして送り、音を鳴らす。
- velocityが1-127のとき、note ON
 - velocityが0のとき、note OFF
 
 - makenoteでduration(note ONとnote OFF)を作り、noteoutに送る。
 - noteinでMIDI Keyboardからノートを入力する。
 
- notein
 
- outlet
 
- pitch
 - velocity
 - channel チャネル (1から16)
 
- noteout
 
- inlet
 
- pitch
 - velocity
 - channel チャネル (1から16)
 
- pitchとvelocity(>=1)がくると、音をだす。(note ON)
 - pitchとvelocity(=0)がくると、音を消す。(note OFF)
 
- makenote
 
- inlet
 
- pitch 音の高さ(0から127)
 - velocity 音の強さ(0から127)
 - duration 音の長さ(1から***) ミリ秒(ms=1/1000秒)で指定
 
- outlet
 
- pitch 音の高さ(0から127)
 - velocity note ON時の音の強さ(1から127)とNote OFF(velocity=0)
 
- 確認事項
 
-  note on とnote offの関連を理解する。 
- note offは,velocity の値が 0 の note on のこと。
 
 - channel 10 はドラムセット
 
[編集] プログラムチェンジ
- programとは、音色のこと。
 
0番から127番までの128種類の楽器番号で音色を指定する。 (1番-128番のこともある)
- pgmout
 - 楽器番号とチャネルを指定する。
 
- 楽器番号 ( 0から127 )
 - channel
 
- 楽器番号(program) と音色の対応表
 
- GM規格音色リスト( Program Number 1-128 )
 - GM規格ドラムマップ( Note Number Channel 10 )
 
- 楽器は発音メカニズムによって大きく2つに分類できる。
 
-  減衰振動系
- Note ON時に瞬時に音量が立ち上がり、Note OFFがなくても、やがて音が減衰して消える。
 - ピアノ、ギター、ハープ、シロフォン、打楽器など。
 
 -  自励振動系
- Note ONから徐々に音量が立ち上がり、Note OFFがくるまで音が持続して鳴り続ける。
 - オルガン、バイオリン、クラリネット、サックス、トランペットなど。
 
 
[編集] 時間制御
- metro メトロノーム
 
- inlet
 
- トグル 1=ON, 0=OFF
 - interval (ms)
 
- outlet
 
- bang バング
 
- bang バング
 - 鉄砲玉のように「バン」とアクションを起こす
 
- tempo
 
- inlet
 
- トグル 1=ON, 0=OFF
 - BPM
 - 倍率
 - ビート拍
 
- outlet
 
- bang バング
 
- delay
 
- inlet
 
- bang
 - 遅延時間 (ms)
 
- outlet
 
- bang
 
- pipe
 
- inlet
 
- メッセージ
 - 遅延時間 (ms)
 
- outlet
 
- メッセージ
 
[編集] 乱数(ランダム)
- パッチ random, drunk
 
- random 乱数を発生させる
 
- bang
 - 発生させる数値の最大値
 
- drunk
 
- bang
 - 発生させる数値の最大値
 - 発生させる数値の揺れ幅
 
[編集] 算術演算
- パッチ + - * / % mod
 
- + 足し算
 
- 左 + 右
 
- - 引き算
 
- 左 - 右
 
- * 掛け算
 
- 左 × 右
 
- / 割り算
 
- 左 / 右
 
- % 剰余算(あまり)
 
- 左を右で割った余り
 
[編集] 条件分岐
- パッチ gate, sel, switch, if, route
 
- sel
 
- inlet
 
- message ( if )
 
- outlet
 
- message ( then )
 
- gate
 
- inlet
 
- ゲート(出口)番号
 - message
 
- outlet
 
- message 1,2,3,4...
 
- switch
 
- inlet
 
- スイッチ(入口)番号
 - message 1,2,3,4...
 
- outlet
 
- message
 
[編集] サブパッチ
- パッチ p パッチ名
 - inlet インレットで入り口をあける
 - outlet アウトレットで出口をあける
 
[編集] コントロールチェンジ
- パッチ ctlin, ctlout
 - コントロール値, コントロール番号, channel
 
[編集] ピッチベンド
- パッチ bendin, bendout ピッチをシフトする(ピッチベンド)
 
- bendout
 
- inlet
 
- Pitch Bend値(–8192~8191)
 - channel
 
[編集] ループカウント制御
- パッチ counter, uzi
 
[編集] キーボードとマウス
- パッチ key, mousestate
 
[編集] 値の設定、プリセット
- パッチ loadbang 起動時に自動的にbangを発生させる。
 - パッチ preset 現パッチの数値、状態をボタンにセーブ(Shift+Click)、ロード(Click)ができる。
 
[編集] 保存した値を呼び出して再生
- パッチ coll, table
 
[編集] マトリクス制御、スライダーなど
- matrixctrl, pictslider
 
[編集] MIDIシーケンス録音、再生
- パッチ seq, midiformat, midiin, midiout
 - MIDIメッセージをテキスト保存、再生
 
[編集] 自動作曲パッチの例
[編集] notein noteout
- noteinは、MIDIキーボードから、叩いた鍵盤の情報を入力値として受け取る
 - noteinから得られる情報は、note number(pitch), velocity, channelである。nouteoutに渡すと、音が鳴る。
 
- note ON(鍵盤を押す)とnote OFF(鍵盤を離す)に注意する。velocity の値が0の時、note OFF
 -  複数の数値を半角スペースで区切り、ひとまとめにして送ることができる。
- 複数の値をまとめたものをリストという。
 
 
[編集] makenote
- makenoutでnote OFFを自動で出力する。makenoteには、デフォルトのvelocityとduration(msec)を指定する。
 
[編集] metro random
- metroでビートを発生させる。
 - randomでランダムに数字を発生させる。ピッチを0-128の間でランダムに発音させている。
 - pgmoutで楽器を選択する。
 
- 算術演算子 + を使って、randomで発生させる数字を、調整している。
 
[編集] channel
- channel 1とchannel 2 の2チャンネルでアンサンブルをする。
 -  s (send)と r (recieve)で変数を使い、数値を送受信(send recieve)している。
- 結線が複雑に絡み合うことを回避できる。
 
 - loadbangでプログラム起動時に自動的にbangを送り、チャネルの初期値を設定している。
 - channelを10に指定すると、ドラムセットになる。
 
[編集] 音程
- +演算子を使い音程を指定して、2つ音を重ねて発生させる。
 
[編集] 和音
- pipeを使って、3和音の発音タイミングをずらして鳴らす。
 
- 3和音の2つ目の音程と3つ目の音程に乱数で揺らぎを与える。
 
[編集] スケール
- selを使って、発音するピッチを特定のスケールに限定している。
 - instrumental selectを使って、楽器を選択する。
 
[編集] コード進行
- counterを使って、ビートを刻む。
 - selを使って、コードを選択する。
 - 1625コード進行(C,Am,Dm,G)を生成するパッチの例
 
[編集] ビート
- tempoを使って、ビートを発生する。
 -  matrix controlを使って、発音ビートのタイミングを指定する。
- tempoは、(BPM, 倍数,単位音符)を引数として指定する。
 - BPMは、Beats Per Minuteの略で、1分間にビートがいくつあるかを示す。例えばBMP=120だと、1分間に4分音符が120個あるので、4分音符1個の時間は0.5秒になる。
 
 
- 複数行のmatrix controlを使用して、複数のビートパターンを指定する。
 - ビートパターンをメッセージで数値で入力するには、(列番号,行番号,0[off]か1[on])で指定する。
 - switchを使って、流れてくる信号の入り口を切り替える。
 - randomで、信号の切り替えをランダムにする。
 - unpackはリスト内の複数の数値を個々に分解する。
 
- switchを2つ使用し、1つをピッチのビート、もう1つをvelocityの強さの値を指定している。
 - loadbangで、ビートパターンの初期値を設定している。
 - presetで値を保存して、呼び出すことができる。
 
- matrixcntlを使ったドラムシーケンス
 
[編集] サブパッチ
パッチ内にサブのパッチを作ることができる。
- ドラムにピアノとベースパートを追加
 
- p でピアノパート(p piano)とベースパート(p bass)のsubpatchを作る。
 - 全体のパッチ
 
- ピアノパート(p piano)のサブパッチ
- メロディはブルーススケールを使用
 - % 10 は10で割った余り(剰余系)が返ってくる。(sel 0 1 2 3 4 5 6) となっているので、0から6の場合は、それぞれの数値のoutletにbangが出力されるが、7,8,9の場合は、その他のoutletにbangが出力される。出力先にノート番号が割り当たっていると音符になり、それ以外は休符の扱いとなる。この例では、音符と休符が、7:3の比率で出力される。
 
 
- ベースパート(p bass)のサブパッチ
 
- gateで特定のメッセージを止めたり、流したりする。
 
[編集] Keyを使って音階を鳴らす
- Key
 
キーボードの押されたキーのアスキーコードを10進数で返す。
キーボードの2段目の並びのキーasdfghjklをドレミファソラシドレに対応させ、makenote,noteoutで音を鳴らす。
[編集] Tips
[編集] 日本語フォントの文字化け対策
Macintoshで書かれたMaxパッチの日本語コメントは,Osakaフォントであることが多く、Windowsでは文字化けする。対処方法は以下のとおり。
- 各コメントを選んで,適当なWindowsのフォント(例:MS Pゴシック)を指定。
 - Maxをインストールしたフォルダ内の[Cyclin'74]フォルダ内の[init]フォルダにあるmax-fontmappings.txtに以下の一文を追加して、フォントを一括置換。
 
max system windows genericfontmap Osaka "MS Pゴシック";
[編集] 参考リンク
- naotokui/MaxMSP_Objects
 - Wiiを使ったライブ演奏ムービの例:遠藤綾香氏の作品例(NIME2008に出展)
 - Chikashi Miyama: "Angry Sparrow" http://www.youtube.com/watch?v=6U-TVZDaryE
 
- Life Game Orchestra http://www.kuhalabo.net/~kuha/nime/lifegorch/
 
- VT Piano http://www.kuhalabo.net/~web/vtp/
 

















