サウンドプログラミング演習 '08 5/8

16
’08 サウンドプログラミング演習 5/8 徳井直生 1

Upload: nao-tokui

Post on 07-Jul-2015

1.390 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: サウンドプログラミング演習 '08 5/8

’08 サウンドプログラミング演習 5/8

徳井直生

1

Page 2: サウンドプログラミング演習 '08 5/8

前回のトピック

• (再度) 授業の内容について (自己紹介含む)

• Maxプログラミング

• Max = 入力と出力の変換(マッピング)を行うもの

• タイミングの管理

• 様々なユーザインタフェースを使ってみる

• エクスターナルオブジェクト

• Videoピアノ - 鍵盤じゃなくてもいいじゃん!

• MIDIのルーティング (時間があれば) → 今日

2

Page 3: サウンドプログラミング演習 '08 5/8

Maxの役割

Max

変換

入力

例)

外部入力

(MIDI, センサー, ネットワーク)

コンピュータ内部のアルゴリズム

例)

音楽/サウンドアクチュエータ (モータ等)

出力

作品の肝 例)

何と何を対応させる?一定のルール?それとも可変?

ランダム性

3

Page 4: サウンドプログラミング演習 '08 5/8

今回のトピック

• ランダム性をてなずける!

• 一様分布、確率分布、遷移確率表

• メッセージの流れを理解する

• MIDIのルーティング

• 課題

4

Page 5: サウンドプログラミング演習 '08 5/8

5

Page 6: サウンドプログラミング演習 '08 5/8

メッセージは「右から左」←「下から上」↑の順番で伝わる

6

Page 7: サウンドプログラミング演習 '08 5/8

メッセージのルーティング

サウンドプログラミング演習 08 5/8

select 1 2 10

0

0

gate

0

0

門を開く閉じる

通す値

開く門を選ぶ

流れを変える

gate 3

00

0 0 0

必ずしも数字でなくても良い

select 4 kid

0

print 1 print 2 print 3

kid■ select オブジェクト

入力値がアーギュメントで指定された特定の値の時、対応するoutletからbangを出す。どれにもあてはまらなければ、一番右のアウトレットから入力値をそのまま出力。

■ gate オブジェクト

左インレットが1のとき、右インレットの入力をスルー。0のときはブロック。文字通り、ゲート(門)のような役割。�

値の比較�

== 5 > 5

0

0

0

0

7

Page 8: サウンドプログラミング演習 '08 5/8

サウンドプログラミング演習 08 5/8

random 10

0

■ random オブジェクト

bangを受けるたびに、0から(アーギュメント-1)の値の範囲で、ランダム(擬似乱数)な値を出力 �

ほんとにrandomオブジェクトはランダムな値を返すのか

おまけ

p

makenote 100 1000

■ makenote オブジェクト

ノートオフメッセージを生成してくれる

アーギュメント: ベロシティの初期値 音の長さ(ms)

noteout

(課題) 特定のオクターブの音を周期的にランダムに出力するパッチをつくる。(ヒント: 1オクターブは12の半音=MIDIノート12個分)�

seed 33

seed(乱数の生成に使う初期値)が同じなら、同じ乱数列になる

<< ダブルクリック�

単純なランダム

(課題) 小数の乱数を発生させるには?

(課題) �白鍵の音のみを出力させるには?

(課題) �ファの音以上の音のみを出力させるには?

8

Page 9: サウンドプログラミング演習 '08 5/8

table

■ tableオブジェクト

数値の列を保持する.ダブルクリックすると、格納されている値が表としてみられる

格納する数値の数と範囲を変更するときは、Get Info...�

table

0

「確率分布」の表としても使える

サウンドプログラミング演習 08 5/8

確率分布

確率分布とは、特定の事象の起りやすさを記述する

0

0

x: �

y:

bangを入力すると、tableを確率分布としてとらえ、その分布のもとでランダムな値を出力�

値の読み出し

table a

0 x: �

値の書き込み

0 :y

table b

pack 0 0

0 x: � 0 :y

区別するためにtableに名前を付ける事も出来る�

write load

tableのセーブ/ロード�

同じ名前のデータがセーブされていたら自動的にロードされる

(課題) 特定のオクターブの音を周期的に「ある確率分布に基づいて」ランダムに出力するパッチをつくる。�

(課題) 特定のコードの音のみを生成するようにしてみよう (音楽理論に詳しい人)

9

Page 10: サウンドプログラミング演習 '08 5/8

サウンドプログラミング演習 08 5/8

prob

anal

makenote 100 250

noteout

0

notein

metro 250

clear0

seq bach.mid

stop

start

stripnote

midiparse

0 0

1. � 適当に弾いてみる (和音はなし)

dump

1. � もしくはバッハの曲を再生 �

2. �遷移確率テーブルが作られる

3. �遷移確率テーブルに基づいた演奏 クリア

遷移確率テーブルにもとづく演奏

音Aの次にBがくる確率, Cがくる確率... の表を作る。その表をもとにランダムに再生�

確率テーブルの表示

10

Page 11: サウンドプログラミング演習 '08 5/8

ランダム性を手なずける

• 一口に「ランダム」といっても様々なランダムがありうる

• 作曲にランダム性をとりいれる意味を考えよう

• ランダム性をコントロールする = 意外性と必然性のバランスをとる

11

Page 12: サウンドプログラミング演習 '08 5/8

今後の授業- Max

×プログラミングの組み立て方

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

×まずは四則演算

×外部入/出力 (MIDI, ビデオ)

×時間をコントロール

×様々なユーザインタフェースを使う

×エクスターナルの使い方を知る

×ランダム性をてなずける(0.5)

×メッセージの種類と流れを理解する(0.5)

•ネットワークを使ってみる(0.5)

次回以降

オーディオ!

12

Page 13: サウンドプログラミング演習 '08 5/8

5/15 休講6/12 休講

13

Page 14: サウンドプログラミング演習 '08 5/8

課題

• maxbasics.zipの中のパッチに一通り目を通す•これまでに使ったサンプルパッチなどをもとに自分なりの音楽生成パッチを作る•条件

•ランダム性をとりこむ•外部入力 (MIDI, カメラ, マウス, キーボード)でコントロールする

(maxbasics.zipのパッチにもヒントが...)

•提出: 次回の授業 5/22 が始まる前に

[email protected] まで パッチを圧縮/添付して•工夫した点を簡単に書き添えて

14

Page 15: サウンドプログラミング演習 '08 5/8

告知

• Tokyo Max Users Group

• Max/MSP/Jitterユーザの自発的な集まり

•毎回、異なるジャンルのアーティスト/デザイナー/研究者のトークとディスカッション, ライブなど

•次回は, 5/10 デザインや広告の現場でMaxを使っている方のプレゼン

•詳しくは http://tokyomax.jp/

15

Page 16: サウンドプログラミング演習 '08 5/8

Tips

• オブジェクト

• Option(Mac) / Alt (Win) + クリックで「helpパッチを開く」

• Command (Mac) / Control (Win) + i で「オブジェクトの情報ウィンドウが開く」

• Option(Mac) / Alt (Win) + クリック + ドラッグで「オブジェクトの複製」

• 複数選んで Command (Mac) / Control (Win) + Y 「オブジェクトの整列」

16