Max/MSPによるオーディオプログラミング
提供:kuhalaboWiki
(版間での差分)
(→音の物理的3要素) |
(→色の検出) |
||
(1人の利用者による、間の55版が非表示) | |||
24行: | 24行: | ||
[[ファイル:Sinwav.png]] | [[ファイル:Sinwav.png]] | ||
− | |||
− | |||
* line~によるなめらかな変化 | * line~によるなめらかな変化 | ||
− | |||
[[ファイル:Sinline.png]] | [[ファイル:Sinline.png]] | ||
− | |||
− | |||
* MIDIのpitchを周波数に変換 mtof~ | * MIDIのpitchを周波数に変換 mtof~ | ||
− | |||
[[ファイル:Sinemix.png]] | [[ファイル:Sinemix.png]] | ||
41行: | 35行: | ||
* 演算子(「*」 や「+」)の位置は、オシレータ(cycle~)の前か後のどちらか?。 | * 演算子(「*」 や「+」)の位置は、オシレータ(cycle~)の前か後のどちらか?。 | ||
− | + | === AM (Amplitude Modulation)合成 === | |
* 波形('''シグナル''')を乗算(掛け算)する | * 波形('''シグナル''')を乗算(掛け算)する | ||
* 波形の振り幅が変わる。すなわち、音量が変わる。 | * 波形の振り幅が変わる。すなわち、音量が変わる。 | ||
50行: | 44行: | ||
− | + | === FM (Frequency Modulation)合成 === | |
* 周波数('''数値メッセージ''')を加算(足し算)する | * 周波数('''数値メッセージ''')を加算(足し算)する | ||
* 波形の周波数が変わる。すなわち、音高が変わる。 | * 波形の周波数が変わる。すなわち、音高が変わる。 | ||
113行: | 107行: | ||
[[ファイル:05-12-10Chorus.png]] | [[ファイル:05-12-10Chorus.png]] | ||
− | == | + | == マウスを使ったインタラクション == |
− | + | ;世界初の電子楽器 '''テルミン''' | |
− | + | ||
* [https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AB%E3%83%9F%E3%83%B3 テルミン] | * [https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AB%E3%83%9F%E3%83%B3 テルミン] | ||
* テルミン https://www.mandarinelectron.com/theremin/ | * テルミン https://www.mandarinelectron.com/theremin/ | ||
− | + | * [https://www.youtube.com/watch?v=e6bSRcRAhnc Don't Worry, Be Happy on theremin] | |
− | === マウスの値をシンセに入力 === | + | * [http://www.thereminworld.com/Article/14129/moog-music-introduces-polyphonic-theremin Moog Music Introduces Polyphonic Theremin] |
+ | === マウステルミン === | ||
+ | ==== マウスの値をシンセに入力 ==== | ||
;mousestatでマウスの位置と速度の値を取得し、アナログシンセの変数に入力 | ;mousestatでマウスの位置と速度の値を取得し、アナログシンセの変数に入力 | ||
*マウスのボタンのON/OF | *マウスのボタンのON/OF | ||
129行: | 124行: | ||
[[ファイル:Synth20131210v1s.png]] | [[ファイル:Synth20131210v1s.png]] | ||
− | + | ==== zmapを使って値を変換 ==== | |
+ | |||
*AからBに変化する値を、XからYに変化する値に変換する。 | *AからBに変化する値を、XからYに変化する値に変換する。 | ||
<pre> | <pre> | ||
142行: | 138行: | ||
[[ファイル:Zmap2.png]] | [[ファイル:Zmap2.png]] | ||
+ | |||
+ | ;FM合成とAM合成のパラメータをマウスの状態から入手 | ||
+ | |||
+ | [[ファイル:MouseTerumin02.png]] | ||
=== キーボードのキーの値を取得 === | === キーボードのキーの値を取得 === | ||
147行: | 147行: | ||
* key | * key | ||
**キーのアスキーコードを整数で取得する。 | **キーのアスキーコードを整数で取得する。 | ||
+ | |||
+ | == カメラ入力を使ったインタラクション == | ||
+ | === 動き検出 === | ||
+ | #jit.grabを使ってカメラ画像を取得。qmetroでサンプリング間隔を指定。 | ||
+ | #jit rgb2lumaを使ってカラーをモノクロに変換。 | ||
+ | #t l l (triger list list)を使って、動画のフレームデータの連続したリストを得て、順番を入れ替える。 | ||
+ | #jit.opのabsdiff(差の絶対値)を使って、2つのフレームの差分をとる。'''動きが検出される''' | ||
+ | #jit.3mで差分の平均と最大値を取得し、diff_meanとdiff_maxに送信 | ||
+ | |||
+ | [[ファイル:Camera_diff01.jpg|600px]] | ||
+ | |||
+ | ;検出された動きの平均値と最大値からアナログシンセで音を生成する。 | ||
+ | # diff_maxとdiff_meanを受け取り、 | ||
+ | # zmapで値を変換して | ||
+ | # オシレータとLFOの周波数に入力している | ||
+ | |||
+ | [[ファイル:Camera_diff2synth.jpg|600px]] | ||
+ | |||
+ | |||
+ | === 色の検出 === | ||
+ | |||
+ | # '''jit.findbounds'''で、画像の中の特定の色を検出して、その領域を含む矩形の座標を得る。 | ||
+ | # '''jit.lcd'''で、得られた矩形を囲う長方形を描く。 | ||
+ | |||
+ | 下記の例では、赤色の部分を検出し、面積を計算している。 | ||
+ | |||
+ | [[ファイル:Color_detect_maxpat.png|600px]] | ||
+ | |||
+ | * 座標は、x軸が右向き、y軸が下向き。 | ||
+ | * 得られる座標は、左上と右下。対角線上の頂点。 | ||
+ | |||
+ | [[ファイル:Zahyou.jpg|300px]] | ||
+ | |||
+ | ;検出された色からFM合成で音を生成する。 | ||
+ | # 赤色を検出し、赤の領域の面積を求める、 | ||
+ | # FM合成のキャリア周波数に面積に基づいていられた値を入力。 | ||
+ | |||
+ | [[ファイル:Color_detect_synth_maxpat.png|900px]] | ||
== 参考リンク == | == 参考リンク == | ||
− | *[http://www. | + | *[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 | ||
== 関連項目 == | == 関連項目 == | ||
− | + | ||
+ | == 参考 == | ||
+ | [[作曲演習]] | ||
[[Category:授業|授業]] | [[Category:授業|授業]] |
2024年8月28日 (水) 01:53時点における最新版
目次 |
[編集] 音の物理的3要素
通常、音の3要素とは、「高さ、強さ、音色」であるが、ここでは、「音色」の代わりに「長さ」を考慮する。
- 高さ
- 周波数, 音高
- 強さ
- 音量, ボリューム
- 長さ
- 時間, 空間
[編集] オシレータ
- 発振器のこと。振動を発生させる器械のこと。
- サイン波 cycle~, ノコギリ波 phasor~
- 周波数
- adc~(マイク) dac~(スピーカー)
- a : アナログ:空気の振動
- d : デジタル:PCの中の数値
- c : コンバート
- 音量操作 *~
- 加算合成 +~
複数の周波数を足していくと、波形が変わっリ、音色が変わる。
- line~によるなめらかな変化
- MIDIのpitchを周波数に変換 mtof~
[編集] LFO
- Low Frequency Oscillator(低周波発振器)
- LFOで、音源オシレータにモジュレーション(変調)をかける。
- AMとFMの違い
- 演算子(「*」 や「+」)の位置は、オシレータ(cycle~)の前か後のどちらか?。
[編集] AM (Amplitude Modulation)合成
- 波形(シグナル)を乗算(掛け算)する
- 波形の振り幅が変わる。すなわち、音量が変わる。
- トレモロ効果
- 振り幅変化の周期と深さを変える。
[編集] FM (Frequency Modulation)合成
- 周波数(数値メッセージ)を加算(足し算)する
- 波形の周波数が変わる。すなわち、音高が変わる。
- ビブラート効果
- 周波数変化の周期と深さを変える。
[編集] Envelope(エンベロープ)
- 時間軸における音量変化。楽器ごとに個性がある。
- ピアノ、ギターなどはアタックが早く立ち上がるが、ストリングスはアタックがゆっくり立ち上がる。
- Maxではfunctionパッチを使って、音量変化を描く。
- クリックで点が増える。シフトクリックで点を消す。
[編集] フィルター
- 特定の周波数帯域をカットする。つまり、特定の周波数帯域のみを通す(パスする)。
- lowpass (highcut)
- hightpass (lowcut)
- bandpass
- bandstop
- 周波数構成が変わるので、音質が変わる。
- イコライザーの一種
- Max/MSPでは、biquad~とfiltergraph~を使う。
フィルターを実装したパッチの例
[編集] ディレイ Delay
- 原音を時間を遅らせて再生する。エコー、やまびこ効果のこと。
- 耳に聞こえてくる音は、原音以外に、壁や天井から跳ね返ってくる反響音が必ず含まれている。
- Max/MSPでは、tapin~とtapout~を使う。
[編集] 基本的なディレイ
- 原音を dry ディレイ音を wet と呼ぶ。
[編集] dry, wetをLRに分配
[編集] delayを入力に戻す(FeedBack)
[編集] delayタイムの異なる複数種類のwetを合成
- Reverb : 原音に余韻,残響感を付加する。Delayの集合体。
[編集] Delayの応用エフェクト
- delayタイムに手動で変化を加えて、ディレイ音を揺らがせる。
- delayタイムにLFOで変化を加えて、ディレイ音を揺らがせる。
- Chorus : Delay音が弱め。Feedbackが少なめ。
- Flanger : Delay音が強め。Feedbackが多め。
[編集] マウスを使ったインタラクション
- 世界初の電子楽器 テルミン
- テルミン
- テルミン https://www.mandarinelectron.com/theremin/
- Don't Worry, Be Happy on theremin
- Moog Music Introduces Polyphonic Theremin
[編集] マウステルミン
[編集] マウスの値をシンセに入力
- mousestatでマウスの位置と速度の値を取得し、アナログシンセの変数に入力
- マウスのボタンのON/OF
- マウス位置のx座標
- マウス位置のy座標
- マウス速度のx成分
- マウス速度のy成分
[編集] zmapを使って値を変換
- AからBに変化する値を、XからYに変化する値に変換する。
zmap A B X Y
- 0から255に変化する値を、0.0から1.0に変化する値に変換する。
zmap 0 255 0. 1.
- FM合成とAM合成のパラメータをマウスの状態から入手
[編集] キーボードのキーの値を取得
- key
- キーのアスキーコードを整数で取得する。
[編集] カメラ入力を使ったインタラクション
[編集] 動き検出
- jit.grabを使ってカメラ画像を取得。qmetroでサンプリング間隔を指定。
- jit rgb2lumaを使ってカラーをモノクロに変換。
- t l l (triger list list)を使って、動画のフレームデータの連続したリストを得て、順番を入れ替える。
- jit.opのabsdiff(差の絶対値)を使って、2つのフレームの差分をとる。動きが検出される
- jit.3mで差分の平均と最大値を取得し、diff_meanとdiff_maxに送信
- 検出された動きの平均値と最大値からアナログシンセで音を生成する。
- diff_maxとdiff_meanを受け取り、
- zmapで値を変換して
- オシレータとLFOの周波数に入力している
[編集] 色の検出
- jit.findboundsで、画像の中の特定の色を検出して、その領域を含む矩形の座標を得る。
- jit.lcdで、得られた矩形を囲う長方形を描く。
下記の例では、赤色の部分を検出し、面積を計算している。
- 座標は、x軸が右向き、y軸が下向き。
- 得られる座標は、左上と右下。対角線上の頂点。
- 検出された色からFM合成で音を生成する。
- 赤色を検出し、赤の領域の面積を求める、
- FM合成のキャリア周波数に面積に基づいていられた値を入力。
[編集] 参考リンク
- Wiiを使ったライブ演奏ムービの例:遠藤綾香氏の作品例(NIME2008に出展)
- Chikashi Miyama: "Angry Sparrow" http://www.youtube.com/watch?v=6U-TVZDaryE