feb19.jp blog - life is creative!

A Flash Polyphonic Synthesizer

ブックマークに追加する tags:      

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
音程について

2008年12月06日14:20

Webデザインブログ

「A Flash Polyphonic Synthesizer」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/163

この一覧は、次のエントリーを参照しています: A Flash Polyphonic Synthesizer:

» Adobe CS4予約受付開始 送信元 feb19.jp blog
Flash CS4含め、Adobe CS4の予約が開始されてますね。... [詳しくはこちら]

» loader.unload と addChild/removeChild に関する、Flash Player 9 と 10 の微妙な差異 送信元 feb19.jp blog
Flash CS4 Professional で開発を行っていると、... [詳しくはこちら]

Navigation

古:AS3でPHPと通信する
新:Adobe CS4予約受付開始
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...