feb19.jp

Nobuhiro Takahashi
Designer / Engineer

A Flash Polyphonic Synthesizer

A Flash Polyphonic Synthesizer

Flash Player 10の機能「Dynamic Sound Generate」を使って、ポリフォニックシンセサイザーを作ってみました。画面をクリックすると、FlashPlayerがアクティブになり、キーボードで演奏できるようになります。

こちらから演奏できます。

VCAのADSRエンヴェロープと、オシレーター(波形)選択ぐらいしか機能はないですが、これでも十分アナログシンセサイザー?

音程→周波数に変換するところは、すべての音程を定数で持っておいてもいいのだけど、A4(=440Hz、オーケストラ、クラシックとかだと442Hzですが)の音を基準に考えてオクターブ番号と、一番近いAの音からの音階をパラメータで持てば、どの音でも計算で出せるのでそのようにしてみました。

具体的には以下のような式になります。

frequency = A4 * 2 ^ (オクターブ番号-4) * 2 ^ (Aの音からの差 / 12)
 
※ただし、Aの音からの差が+3以上の時は、表記上番号が増えるので、「オクターブ番号 - 1」をする必要がある。

ActionScriptにするとこんな感じ。

function getFrequency(octave:Number, note:Number):Number
{
	var basisNote:Number = 440.000;	//A4
	if(note>2)
		octave--;
	
	var frequency:Number = basisNote * Math.pow(2, octave - 4) * Math.pow(2, note / 12);
	return frequency;
}

例えば、C5(A4から3度上の音)の周波数を求めるのならば、

440 * 2 ^ (5-1-4) * 2 ^ (3 / 12) = 523.2511306011972 (Hz)

になります。

ちなみに、A4 = 440Hz というのは1939年に国際的に決められた周波数の表記ですが、YAMAHAの電子機器の分野では(MIDIとか)、A3 = 440Hz としているようです。
電子楽器用語集 : ヤマハ マニュアルライブラリー


以上の説明の補足として、このあたりのページが参考になります。
音名・階名表記 - Wikipedia
音程について

Tweet Share Bookmark

Navigation

prev: AS3でPHPと通信する
next: Adobe CS4予約受付開始

Recently Entries