Max/MSPによるオーディオプログラミング

提供:kuhalaboWiki
2025年9月29日 (月) 06:07時点におけるKuha (トーク | 投稿記録)による版

移動: 案内, 検索

目次

音の物理的3要素

通常、音の3要素とは、「高さ、強さ、音色」であるが、ここでは、「音色」の代わりに「長さ」を考慮する。

高さ
周波数, 音高
強さ
音量, ボリューム
長さ
時間, 空間

オシレータ

  • 発振器のこと。振動を発生させる器械のこと。
  • サイン波 cycle~, ノコギリ波 phasor~
  • 周波数
  • adc~(マイク) dac~(スピーカー)
    • a : アナログ:空気の振動
    • d : デジタル:PCの中の数値
    • c : コンバート
  • 音量操作 *~
  • 加算合成 +~

複数の周波数を足していくと、波形が変わっリ、音色が変わる。

Sinwav.png

  • line~によるなめらかな変化

Sinline.png

  • MIDIのpitchを周波数に変換 mtof~

Sinemix.png

LFO

Low Frequency Oscillator(低周波発振器)
  • LFOで、音源オシレータにモジュレーション(変調)をかける。
  • AMとFMの違い
  • 演算子(「*」 や「+」)の位置は、オシレータ(cycle~)の前か後のどちらか?。

AM (Amplitude Modulation)合成

  • 波形(シグナル)を乗算(掛け算)する
  • 波形の振り幅が変わる。すなわち、音量が変わる。
    • トレモロ効果
    • 振り幅変化の周期と深さを変える。

05-07-01amSynth.png


FM (Frequency Modulation)合成

  • 周波数(数値メッセージ)を加算(足し算)する
  • 波形の周波数が変わる。すなわち、音高が変わる。
    • ビブラート効果
    • 周波数変化の周期と深さを変える。

05-08-01 fmSynth.png

Envelope(エンベロープ)

  • 時間軸における音量変化。楽器ごとに個性がある。
  • ピアノ、ギターなどはアタックが早く立ち上がるが、ストリングスはアタックがゆっくり立ち上がる。
  • Maxではfunctionパッチを使って、音量変化を描く。
    • クリックで点が増える。シフトクリックで点を消す。

05-03-30envelope.png

フィルター

スペクトル(周波数構成

  • スペクトルとは周波数構成のこと。ピッチ感のある音は,ピークとなる基本周波数を中心として複数の倍音成分から構成される。
  • フーリエ変換とは、音の時間軸表記から周波数構成変換すること。
    • Audacityでsin波などを生成し,周波数構成を観察。
      • sin波は基本周波数1つのみ。
      • ノコギリ波はsin波の倍数の無限級数。
      • ホワイトノイズはランダムな周波数構成。
      • ピンクノイズは周波数とダイナミクスが反比例する1/f揺らぎの癒し系。
    • 人のボーカル,楽器の音,車のエンジン音のスペクトルを比較してみる。
  • EQ(イコライザ)によって,音のスペクトルを加工する。

各種フィルター

  • 特定の周波数帯域をカットする。つまり、特定の周波数帯域のみを通す(パスする)。
    • lowpass (highcut)
    • hightpass (lowcut)
    • bandpass
    • bandstop
  • 周波数構成が変わるので、音質が変わる。
  • イコライザーの一種

05-03-33filters.png

lores~

レゾナンス付きローパス・フィルター lores~
カットオフ周波数より高い周波数をカットする。
レゾナンス(Q値)でカットオフ周波数近くのカーブの緩急を変える。

ホワイトノイズnoise~とピンクノイズpink~でフィルターの効果を確かめる。

Lores.png

reson~

バンドパスフィルタ reson~

reson~は、中心周波数以外を減衰させます。

Q値は100などの大きめの値を設定すると、角度が急になり、特定の周波数帯域を取り出せます。

Reson.png

biquad~とfiltergraph~

biquad~フィルタは様々なフィルタを作成できるオブジェクトです。

filtergraphは視覚的にフィルタを操作してフィルタの係数を計算します。

係数をbiquad~に送るとフィルタを作ることができます。

下の例は、ローパス(ハイカット)の例で、高周波の成分がカットされている様子が分かります。

Biquad.png

鍵盤とエンベロープを付けた簡易シンセ

05-03-34filter.png

フォルマント合成

楽器や人の声を特徴付けているのは周波数構成(スペクトル)である。

弦などの振動から発生する音波は、ボディの空洞などを通して、共鳴し、特定の周波数が強められたり弱められたりする。

これを共鳴(レゾナンス)という。 共鳴の結果として、その楽器や人に固有の周波数構成となり、特徴的な音色となる。

共鳴によって生じた周波数帯域の山の部分をフォルマントという。 フォルマントの構成パターンは、ピアノ、ギター、バイオリン、歌声などの音色を識別する要素となる。 フォルマントは、周波数の低いほうから第1フォルマント(F1)、第2フォルマント(F2)、第3フォルマント(F3)と呼ぶ。

人間の声の母音(アイウエオ)の識別を決めているのも、フォルマントである。 声帯の振動はノコギリ波に近いといわれており、この波形が、のど、口、鼻腔、横隔膜などで共鳴し、各母音の固有のフォルマントを構成する。

アイウエオの3つフォルマントF1, F2, F3は、以下の通りで、合成するとアイウエオらしく聞こえる。

母音F1F2F3
780 1200 2520
310 2300 3080
330 1120 2350
470 2040 2250
420 710 2530

下の例は、ノコギリ波をフォルマント合成して、母音らしく響かせている。

  • 人間の声帯の振動はノコギリ波に近い。
  • 声の周波数は微妙に揺らぐのでLFOでビブラートをかけると、母音らしくなる。
  • ゲインは F1 > F2 > F3となっている。

Formant.png

下の例は、キーボードから得たMIDIのピッチを周波数に変換して、ノコギリ波を生成し、フォルマント合成して、母音を発声している。

FormantSynth.png

左はノコギリ波のスペクトル、右はフォルマント合成後のスペクトル

ディレイ Delay

  • 原音を時間を遅らせて再生する。エコー、やまびこ効果のこと。
  • 耳に聞こえてくる音は、原音以外に、壁や天井から跳ね返ってくる反響音が必ず含まれている。
  • Max/MSPでは、tapin~とtapout~を使う。

基本的なディレイ

05-12-01BasicDelay1.png

  • 原音を dry ディレイ音を wet と呼ぶ。

dry, wetをLRに分配

05-12-01BasicDelay2.png

delayを入力に戻す(FeedBack)

05-12-04DelayFeedBack.png

delayタイムの異なる複数種類のwetを合成

05-12-02DelayMulti.png

  • Reverb : 原音に余韻,残響感を付加する。Delayの集合体。

Delayの応用エフェクト

delayタイムに手動で変化を加えて、ディレイ音を揺らがせる。

05-12-06DelayYuragi.png

delayタイムにLFOで変化を加えて、ディレイ音を揺らがせる。
  • Chorus : Delay音が弱め。Feedbackが少なめ。
  • Flanger : Delay音が強め。Feedbackが多め。

05-12-10Chorus.png

マウスを使ったインタラクション

世界初の電子楽器 テルミン

マウステルミン

マウスの値をシンセに入力

mousestatでマウスの位置と速度の値を取得し、アナログシンセの変数に入力
  • マウスのボタンのON/OF
  • マウス位置のx座標
  • マウス位置のy座標
  • マウス速度のx成分
  • マウス速度のy成分

Synth20131210v1s.png

zmapを使って値を変換

  • AからBに変化する値を、XからYに変化する値に変換する。
zmap A B X Y
  • 0から255に変化する値を、0.0から1.0に変化する値に変換する。
zmap 0 255 0. 1.

Zmap.png

Zmap2.png

FM合成とAM合成のパラメータをマウスの状態から入手

MouseTerumin02.png

キーボードのキーの値を取得

  • key
    • キーのアスキーコードを整数で取得する。

カメラ入力を使ったインタラクション

動き検出

  1. jit.grabを使ってカメラ画像を取得。qmetroでサンプリング間隔を指定。
  2. jit rgb2lumaを使ってカラーをモノクロに変換。
  3. t l l (triger list list)を使って、動画のフレームデータの連続したリストを得て、順番を入れ替える。
  4. jit.opのabsdiff(差の絶対値)を使って、2つのフレームの差分をとる。動きが検出される
  5. jit.3mで差分の平均と最大値を取得し、diff_meanとdiff_maxに送信

Camera diff01.jpg

検出された動きの平均値と最大値からアナログシンセで音を生成する。
  1. diff_maxとdiff_meanを受け取り、
  2. zmapで値を変換して
  3. オシレータとLFOの周波数に入力している

Camera diff2synth.jpg


色の検出

  1. jit.findboundsで、画像の中の特定の色を検出して、その領域を含む矩形の座標を得る。
  2. jit.lcdで、得られた矩形を囲う長方形を描く。

下記の例では、赤色の部分を検出し、面積を計算している。

Color detect maxpat.png

  • 座標は、x軸が右向き、y軸が下向き。
  • 得られる座標は、左上と右下。対角線上の頂点。

Zahyou.jpg

検出された色からFM合成で音を生成する。
  1. 赤色を検出し、赤の領域の面積を求める、
  2. FM合成のキャリア周波数に面積に基づいていられた値を入力。

Color detect synth maxpat.png

マイク入力を使ったインタラクション

基本周波数の検出

  1. fzero~で、マイク入力の音声の基本周波数を検出
  2. cycle~phazer~で、周波数の音を発振
  3. ftomで周波数をMIDIのピッチに変換
  4. 0.0から1.0の音量の値に127をかけて、ベロシティに変換
  5. makenotenoteoutでMIDIのピアノの音を出す。

Fzero noteout.png

参考リンク

関連項目

参考

作曲演習

個人用ツール
名前空間

変種
操作
案内
ツールボックス