HTML5 と JavaScriptで 鍵盤を使って 2キー間の合成信号を見てみます。
使い方:
上側に移動しました。[ x ][ / ]ボタンです。 [Wave][FFT][IFFT]の時に表示幅を拡大縮小します。
[ - ][ + ]ボタンです。 [Cent][Wave][FFT][IFFT][Beat][Beat2][Enve.] の時に表示高さを増減します。
[ 1 ... 20 ] セレクタです。 倍音数を選択します。
[ Inha(rmonicity) | Cent | Wave | FFT | IFFT | Beat | Beat2 | Enve(lope)] セレクタです。
[Inha(rmonicity)] キー全体のインハーモニシティ値を表示します。
[Cent] キー全体のセント値を表示します。 右横のスライダに選択キー(緑色)の値が示されています。 (v0.5)インハーモニシティ値を加え無くしました。
[Wave] 合成信号のWave波形を表示します。
[FFT] Wave信号から FFT処理のスペクトルを表示します。 [IFFT]用にドラッグで白い範囲が移動します。
[IFFT] [FFT]で選択したスペクトル(白い範囲)から IFFT(逆FFT変換)で Wave信号に変換します。 窓関数(Hamming)を使ってサンプル数の半分で重ねていますので Wave信号の立上りは丸まっています。
例えば窓関数を使わず直接繋げると 以下の様になります。
[Beat] 合成信号の'うなり'を表示します。 [Beat2]でも 打弦点と響板の特性を加えて倍音のカラー濃度を変化させています。
[Beat2] 音程間でセント値を上下させた'うなり'を見ます。
[Enve(lope)] 'うなり'のエンベロープを表示します。
[ 9 ... 15 ]セレクタです。 [FFT]のサンプル数(2^X)を変更します。
(1 ... 30)スライドバーです。 倍音の倍数を変更します。セレクタに変更しました。
(※)[ Tune3 | Clear | Laying | Extent ]セレクタです。
[Tune3]はTuningのシミュレーションを行います。
[Clear]はセント値を全て 0[cent]に戻します。
[Laying]は割り振り部のみをTuningします。
[Extent]は拡張部のみをTuningします。
[ 4 ... 64 ]セレクタです。 [IFFT]での選択幅を変更します。
右端は スライドバーです。 緑のキーのセント値を上下します。
鍵盤のドラッグで2つのキーを移動出来ます。
キーのデータは画面下にテキスト表示されています。
[ 37(A) : <Octave> : 25(A) : 0.10: -4.40[cent] ]
[ 左キー名 : (あれば 音程名) : 右キー名 :
インハーモニシティ値 : セント値 ] です。
[FFT][IFFT]の時はカーソルの示す周波数[Hz]を表示します。
下側に加えました。[ <-> | <-> ] トグルボタンです。 ボタンで移動するキーを切替えます。
[ -> | <- ]トグルボタンです。 キーの移動方向を切替えます。
[ >> | << ] ボタンです。 オクターブ移動します。
[ > | < ] ボタンです。 1キー移動します。
[ C- ][ C+ ] ボタンです。
セント値を増減します。
移動値は[cent]の最大値の1/40で
40[cent]の時は1[cent] 20[cent]では0.5[cent]
80[cent]では2[cent]などです。
(※変更履歴:
v0.6['17/02/13]
[Tune]を三和音型の[Tune3]に変更しました。
v0.5['16/09/23]
[Cent]表示からインハーモニシティ値を加え無くしました。
v0.4['15/08/02]
エンベロープ部分を共通用としてEnvelope.jsに分離しました。
v0.3 ['15/06/06] エンベロープ表示を追加しました。
ボタンなどの位置を変更しました。
キー移動ボタンを追加しました。
セント値の増減ボタンを追加しました。
v0.2 ['15/01/13]
キーボード部分を共通用の KeyBoard.jsに分離しました。
v0.1.3 ['14/03/16]
[Beat2]のセント値の間隔を1から0.1[cent]に変更しました。
Tuningのシミュレーションに[Laying][Extent]を加えました。
v0.1.2 ['12/10/10] [Beat][Beat2]では
打弦点と響板の特性による倍音のカラー濃度変化に修正しました。
v0.1 ['12/06/01])