Download - Ssaw08 0422
SSAW08 第2回
音のしくみMax/MSP入門 II2008年4月22日
今日の内容
• 「音のしくみ」について• Max/MSPを基礎から学ぶ
音とは何か?
• 疑問:• もし、誰もいない森の中で1本の樹が倒れたとする。そこに果たして音は存在するのだろうか?
音とは何か?
• 2つの観点
• 心理的な観点• 音とは我々が聞くもの• 脳に聞こえの感覚を生み出すもの
• 物理的な観点• たとえ音を聞く人がいなくても、音は存在する• 音は物理現象• 振動する音源と、音を伝える媒質
音波
• 波の種類• 縦波:波の進行方向に振動する
• バネの伸縮による振動• 音波
• 横波:波の進行方向に直交して振動する• 水面の波紋• 弦の振動
• 音波はどちらの波か?
音波は縦波
• 音波 = 空気の粗密波→縦波
高密度 低密度
音源
進行方向
波形とは
• ある一点に置ける空気の密度の変化をプロット• 音の特徴を厳密にとらえるための、便宜的な表示
時間
密
疎
音の3要素
• 音の大きさ = 音圧• 音の高さ = 音程• 音の聞こえ方 = 音色
音の強さ(音圧)とは
• 音圧 = 空気の圧力変動の度合い• 音圧の変化が小さい:小さな音• 音圧の変化が大きい:大きな音
音圧
時間
音圧
時間
音圧小さい 音圧大きい
• 一定の高さの音 → 波形が周期的に繰り返す• 周波数:1秒あたり何回振動を繰り返すか
• 単位:Hz(ヘルツ)• 振動数が多い = 周波数が高い = 高い音• 振動数が少ない = 周波数が低い = 低い音
音の高さ(音程)とは
音圧
時間
音圧
時間
低い周波数 = 低い音 高い周波数 = 高い音
Sin波
• Sin波、正弦波、• 全ての波形の基本となる、単一の周波数しかもたないもっとも純粋な音。純音。
• 疑問:なぜ、全ての基準となる波の形と、三角関数が関係あるのだろうか?• 「ばね」の性質と関連している
• フックの法則• 多くの弾性体では変形の量が小さい限り復元力と変形量の間に比例関係がある
振動を繰り返す(単振動)
0
x
F = -kxma = -kx
x = -sinmk t
x = Csin(!t + ")
ばねの性質(フックの法則)
単振動
• ばね質量系(ばね伸び縮みの、空気の粒子)のような弾性を持った物体にみられる運動
• 単振動とは、等速円運動の正射影の運動
光
単振動 → 波へ
• 等速円運動の上下の動きを縦軸(y)• 時間を横軸(x)• 時間経過による動きをプロットしてみる• 波になる
P0
P1 P3P3
P4P4
P5P5
P6P6
P7P7
P1
P2 P2
P0
等速円運動の変化を関数化する
• 等速円運動における上下の位置の変化を関数で表すにはどうすれば良いか?
• 三角関数を思い出してみる
a
cb
α
sinα = b / ccosα = a / ctanα = b / a
等速円運動 = sin関数
• 半径1の円を描く• 中心角θの際のY軸方向の高さは?
• sinθ• 等速園運度の投射はsin関数と等しい
θ
1 高さx 三角関数の定理よりsinθ = x / 1よって、x = sinθ
sin波(正弦波、純音)
• あらゆる音の基本となる最も基本的な波形• x = Asin(ωt + φ)
• A;振幅 … 物体の最大の変位• ω;角振動数(固有振動数)• φ;初期位相
0 π 2π
音圧
時間
音波のパラメータ
• 周期 ・振幅・位相
音圧
時間
周期
振幅
位相
• 波の振幅と周波数で、音の「大きさ」「高さ」は決定される• しかしもう一つ重要な要素を忘れていないだろうか?
• 全ての音がサイン波だったら、音楽は成り立たない• 「音色 (おんしょく)」:音のキャラクター• 音の3要素:「大きさ」「高さ」「音色」の3つ
• では「音色」な何によって特定されるのだろうか?
もう一つ重要な要素「音色」
• ちょっと実験、Max/MSPで下のパッチを作成する• sin波を合成する簡単なパッチ
音色に関する実験
• それぞれの位相 (cycle~の第2インレットの値) を変化させてみる• 波形が変化してないか?• 音色は変化したか?
音色に関する実験
• 波形が変化したのに、音色の変化を聴き取ることができない• 我々はいったい何を聴いているのか?
• 波形ではなさそう
• 人間の耳は、音に含まれる「周波数成分」を分解してい聴いている• つまり耳には天然の「周波数分析装置」!!• 耳の内部、内耳にある蝸牛で周波数の分解をしている
音色に関する実験
• 耳の構造
音色に関する実験
• 波形を凝視しても、聴こえる音を想像することは難しい• 「音色」を調べるには、音を「周波数成分 (スペクトラム)」に分解して、各成分の強さを調べなくてはならない
• どうやったら、耳が聴いているように音を分析することができるのだろうか?
• 数学的な処理をすることで、音の周波数成分を知ることができる• フーリエ級数展開• フーリエ変換・逆変換• 短時間フーリエ変換
音色を分析するには
• 全ての複合波(正弦波でないあらゆる音波)は、振幅、周波数、位相の異なる正弦波の足し合わせにより構成されている。
• 異なる位相をもった正弦波の組み合わせにより、あらゆる音色を再現できるはず
• 「加算合成」の理論的根拠
フーリエ級数展開
• フーリエ級数展開の基本周期T0を0~無限大にとると、波形に含まれる連続する周波数の分布と位相の情報が得られる
• これがフーリエ変換• 波形 → スペクトラム
• 連続する周波数成分と位相の情報から、元の波形を復元することができる• これがフーリエ逆変換• スペクトラム → 波形
フーリエ変換・逆変換
• サイン波 → 1本の縦線
波形とスペクトラムの関連
時間 →
音圧 →
周波数→パワー →
• 周期的に繰り返す波 → 基本周波数と整数倍の複数の倍音
波形とスペクトラムの関連
時間 →
音圧 →
周波数→パワー →
• ホワイトノイズ → 全ての周波数帯域が含まれる
波形とスペクトラムの関連
時間 →
音圧 →
周波数→パワー →
• インパルス → 全ての周波数帯域が含まれる
波形とスペクトラムの関連
時間 →
音圧 →
周波数→パワー →
• 現実世界では「無限大」の長さの波形など存在しない• コンピュータで実際に周波数成分の時間変化を見る際には、信号を「窓関数」を用いてある範囲(サンプル数)だけとりだして分析している
• これを、(離散時間における)短時間フーリエ変換という
短時間フーリエ変換
窓関数のひとつ「ハミング窓」
• 時間の経過に従って変化する、スペクトラムを分析することが可能となる• 「波形 → スペクトラム」「 スペクトラム → 波形」相互に変換可能
• 分析再合成
短時間フーリエ変換
バイオリンのスペクトラム (Spectrogram)
コンピュータで音を扱うには
• 音波:連続した波→アナログ信号• そのままでは、コンピュータで扱えない• アナログ信号をデジタルへ
• ADC:Analog Digita Converter• デジタル信号をコンピュータで処理• 処理した結果を再びアナログ信号に再変換
• DAC:Digital Analog Converter
• 連続する信号を一定間隔で区切って、その数値を読み取っていく→サンプリング• 時間方向の目盛りの細かさ:サンプリングレイト• 振幅の分割の目盛りの細かさ:量子化ビット数
コンピュータで音を扱うには
アナログ信号 サンプリング→デジタル信号
01100101000101001010011101...
• 音波:連続した波→アナログ信号• そのままでは、コンピュータで扱えない• アナログ信号をデジタルへ
• DAC:Digital Analog Converter• デジタル信号をコンピュータで処理• 処理した結果を再びアナログ信号に再変換
• ADC:Analog Digita Converter
デジタルオーディオ
マイクロホン
ローパスアンチエイリアシング
フィルタ
ADC
メモリ
DAC
ローパス平準化フィルタ
アンプ
スピーカ
録音
記録
再生
アナログ信号
(電圧)
デジタル信号
(数値)
アナログ信号
(電圧)
Max/MSPをつかって実験
• ここまでやってきた、音の性質を、Max/MSPを用いて実際に聞きながら実験してみる!
Max/MSP起動
• アプリケーションの起動• 「アプリケーション」→「MaxMSP 4.3」フォルダ内の「MaxMSP 4.3.app」を起動
• 注意:「MaxMSP Runtime 4.3.app」の方ではない。Runtimeは既存のプログラムを実行するだけのもの
Max/MSP基本構成
• Maxウィンドウ• 処理結果やエラーなどのテキスト情報を表示
Max/MSP基本構成
• オブジェクトパレット• パッチウィンドウの上部にある• プログラムのパーツやユーザインタフェイスとなるオブジェクトを選択して、配置する
Max/MSPプログラムの基本
• オブジェクトパレットから、オブジェクトを選択してパッチウィンドウに配置する
• オブジェクト同士をパッチコードで接続することでプログラムが作成される
• ウィンドウをロックすると、実行モードになる• パッチ右上のボタンを押してロック/ロック解除• メニュー“View”→”Edit”でロック/ロック解除• コマンド-Eでロック/ロック解除
Max/MSPプログラムの基本
• オブジェクトとパッチコード
オブジェクトパッチコード
ロック/ アンロックのスイッチ
Max/MSPプログラムの基本
• インレットとアウトレット• インレット:オブジェクトへデータを入力• アウトレット:オブジェクトからデータを出力
インレット
アウトレット
Max/MSPプログラムの基本
• 処理の流れ
1. ユーザーがナンバーボックスに83.0という数字を入力
2. 83.0という数字がパッチコードに流れる
3. * オブジェクトが入力された数字を2.0倍する
4. パッチコードに166.0という数字が流れる
5. ナンバーボックスに入力された数字166.0を表示する
83.0
166.0
Max/MSPプログラムの基本
• 今日、最低限憶えたいオブジェクト
オブジェクトボックス:最も汎用的なオブジェクト
メッセージボックス:メッセージ(数字、文字列、bangなど)の表示と送信
ボタン:クリックすると"bang"を送出、"bang"を受信して光る
トグルボタン:クリックでONとOFFを切り替える
ナンバーボックス(整数):整数の数字を入力・表示
ナンバーボックス(浮動点少数):浮動点少数を入力・表示
音を出してみる!
• 一番シンプルな音響生成プログラム• 突然大きな音が出るので、コンピュータのボリュームを下げておくこと!
• スピーカのボタンを押して、ON/OFF切り替え
音を出してみる!
• 名前に”~”(チルダ)がつくオブジェクトは、オーディオ信号を扱うオブジェクトの印
• パッチコードの色が黄色と黒の縞模様になる• 黄色いパッチコードのなかには連続するデジタル信号の数値のストリームが、DACをOFFにするまでは、絶え間なく流れ続けている
DACオブジェクト
• スピーカのアイコンは、DACを行うオブジェクトを視覚的に表したもの• ノーマルオブジェクトに”dac~”と書き込んでも同じ• “dac~”はウィンドウごとにも再生ができる• “dac~”はマルチチャンネルにも対応
波形をモニターする
• signal scopeオブジェクトを追加• 選択した状態で、Object → get infoを選択• Buffer per Pixelを4、Buffer Sizeを110に調整
• cycle~から出力される信号の値全てに対して、一定の値をかけ算することで、振幅が変えられるはず!
音量を変化できるように改造
全てのサンプルに0.5をかけ算する
音量を変化できるように改造
• “*~” オブジェクトで信号のかけ算が出来る• 普通の*とは違うことに注意!
周波数を変化させる
• “cycle~” オブジェクトの第1インレットに数値を入力すると、周波数が変化する
音を混ぜる
• 2つの”cycle~”の音を足し合わせるにはどうするか• 単純に2つのパッチコードをひとつのインレットに入れてあげればOK
ちなみにPdだと…
• 同じような機能をPdで作成するとこんな感じ
音律について探る
• 左側のオシレータの周波数を基準にして、次の音程になるように右側のオシレータの周波数を合わせてみる• オクターブ(ドと上のド)• 5度(ドとソ)• 4度(ドとファ)• 3度(ドとミ)
• それぞれはどのような関係にあるか?
音律について探る
• 音律 = 2つの音の整数比できまる(純正律の場合)
比率 音階 半音の数
1:1 ド 0
1:2 ド(オクターブ) 12
2:3 ソ 7
3:4 ファ 5
4:5 ミ 4
5:6 ミ♭ 3
ハーモニーを視覚化してみる
• オシレータ1をX軸、オシレータ2をY軸にして、プロットしてみる
ハーモニーを視覚化してみる
• 協和的な響きの比率では、シンプルな図形に• 不協和な響きの比率では、複雑な図形に• リサージュ曲線:• 互いに直交する二つの単振動を合成して得られる軌跡が描く平面図形のこと。それぞれの振動の振幅、振動数、初期位相の違いによって、多様な曲線が描かれる。
FFT (高速フーリエ変換)を用いて音を分析する
• 前半で解説したフーリエ変換を、Max/MSPで実装してみる• 色々な波形をフーリエ変換して、その形状を観察してみる• FFT = 高速フーリエ変換
• 離散フーリエ変換 (Discrete Fourier Transform, DFT) を計算機上で高速に計算するアルゴリズム
FFT (高速フーリエ変換)を用いて音を分析する
FFT : Pd版