feb19.jp blog - life is creative!

Flash Player 10 Astroを予習。Dynamic Sound Generate編 #1

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

Flash Player 10 Astroを予習。Dynamic Sound Generate編 #1 ラの音を鳴らす編

さてとりあえずFlashPlayer 10 beta2の開発環境を整えたところで、早速個人的にやりたかったダイナミックサウンド生成を試してみます。

このページを参考に、一つサンプルを作ってみました。

2008.10.28追記
> 最新のFlash Player 10に対応しました。

「ラの音を鳴らす」

AstroDynamicSoundTest1.as
 
package 
{
	import flash.display.Sprite;
	import flash.events.SampleDataEvent;
	import flash.media.Sound;
	public class AstroDynamicSoundTest1 extends Sprite
	{
		private var sound:Sound;
		
		private var A4:Number = 440.000;
		
		public function AstroDynamicSoundTest1()
		{
			sound = new Sound();
			sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleDataHandler);
			sound.play();
		}
		private function onSampleDataHandler(e:SampleDataEvent):void
		{
			var volume:Number = .2;
			var freq:Number = (Math.PI * 2) * A4 / 44100;
			for (var c:int = 0; c < 4048; c++)
			{
				var sample:Number = Math.sin(Number(c + e.position) * freq) * volume;
				e.data.writeFloat(sample);
				e.data.writeFloat(sample);
			}
		}
	}
}

サンプルデモはこちら。(Flash Player 10 beta2でご覧ください)

ピアノでいう、真ん中のラ(A4)の音は、440Hz。(最近のオーケストラとかシンフォニックとかだと442Hzですが)

「ラ」の音は、よくチューニングとかでも使われていて、オーケストラのコンサートとか行くと、奏者達は演奏する前に一斉に楽器の音を出して、最終調整なんかしたりするわけですが、その音が「ラ」なわけであります。

あと赤ちゃんの産声とかも、全世界共通で、大体「ラ」の音らしいです。。。だから、「基準の音」として使われているとか・・・絶対音階持ってない自分は、今手元のピアノで音をだして比べてみたのですが、ちょっと分かりませんでした。。。

というわけで、「ラ」の音をサイン波で鳴らしてみます。毎サンプル毎に、位相を足し算して(e.position)、単位時間あたりにおける波の数をサンプリングレートで割った値を単振動で表した値freqをかけ算して、最終的にその音のボリューム(波の振幅)をかけ算(0から1)して、サンプル毎の音を決めて、最後にL-Rに割り当てています。多分。(ちょっと自信ない)

音鳴ったよー!!すげー!!

これは楽しい!!

というわけで、ActionScriptで曲を作ってみるのを目標に、ちょっとしばらく音関係を連載してみます。

2008年07月20日16:14

Webデザインブログ

「Flash Player 10 Astroを予習。Dynamic Sound Generate編 #1」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

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

この一覧は、次のエントリーを参照しています: Flash Player 10 Astroを予習。Dynamic Sound Generate編 #1:

» Flash Player 10 Astroを予習。Dynamic Sound Generate編 #2 送信元 feb19.jp blog
音をFlashPlayerで生成して鳴らすことができるようになったの... [詳しくはこちら]

Navigation

古:Flex SDK 3で、Flash Player 10(Astro)を予習する
新:Flash Player 10 Astroを予習。Dynamic Sound Generate編 #2
トップページ

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...