کار با متد SoundMixer.computeSpectrum

arjmand200

Member
با سلام خدمت دوستان یه مدتی سخت درگیر ساخت یک mp3 پلیر با فلش شدم من میخواستم برای بهتر شدن این کار از متد جدیدی که در اکشن اسکریپت 3 در فلش برای کلاس صدا گذاشته شده یک (visualization) جالب برای صدا بزارم البته اینکارو هم کردم ولی از دوستایی که زیاد با این متد کار کردن و هم چنین کلاس ByteArray میخواستم یه راهنمایی بگیرم
بد نیست این نمونه ها رو هم ببینین :

http://www.christeso.com/labs/actionscript-3-sound-visualization.asp
http://technologytranslated.nikrowell.com/?id=325
http://www.anttikupila.com/flash/pond.html
http://www.dougstudio.co.uk/mumik/


متاسفانه اینم نمونه ایی که من با این متد ساختم :lol:
وقتی از حالت فشرده خارج کردین مطمئن باشین یه فایل mp3 با نام col در کنار فایل swf باشه
 

پیوست ها

  • sound spectrum.zip
    615.2 کیلوبایت · بازدیدها: 9
آخرین ویرایش:

apolon_021

Member
سلام ، من یه موزیک پلیر نوشتم و از کلاس Spectrum استفاده کردم که شما هم از اون میتونید به راحتی استفاده کنید.

کد:
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.filters.DropShadowFilter;
	import flash.geom.Rectangle;
	import flash.media.SoundMixer;
	import flash.utils.ByteArray;
	import flash.display.Stage;

	public class Spectrum extends Sprite {
		private var _spectrumBMP:BitmapData;
		private var _spectrumWidth:Number = 900;

		public function Spectrum() {
			// Bitmap to draw spectrum data in
			_spectrumBMP = new BitmapData(_spectrumWidth, 50, true, 0x00000000);//width, height, transp, fill
			var bitmap:Bitmap = new Bitmap(_spectrumBMP);
			addChild(bitmap);
		}
		public function update():void {
			// Get spectrum data
			var spectrum:ByteArray = new ByteArray();
			SoundMixer.computeSpectrum(spectrum);

			// Draw to bitmap
			_spectrumBMP.fillRect(_spectrumBMP.rect, 0x00000000);// spectrum rectangle
			_spectrumBMP.fillRect(new Rectangle(0, 0, _spectrumWidth, 0), 0x000000000);//spectrum background
			for (var i:int=0; i<_spectrumWidth; i++) {
				_spectrumBMP.setPixel32(i, 10 + spectrum.readFloat() * 20, 0xAAAAAAAA);//spectrum color
			}
		}
	}
}
 
آخرین ویرایش:

arjmand200

Member
دوست عزیز ممنون از سورس کارتون ولی من نمونه کار نمیخوام میخواستم در باره این متد و کلاس ByteArray یه چیزایی بدونم
اینم کدیه که میخوام تو mp3 خودم تکمیلش کنم :

PHP:
var bytes:ByteArray;
var CHANNEL_LENGTH:uint = 256;
var s:Sound = new Sound(new URLRequest("col.mp3"));
s.play();
bytes = new ByteArray();
addEventListener( Event.ENTER_FRAME, onEnterFrame );
function onEnterFrame( event: Event ):void {
	SoundMixer.computeSpectrum(bytes, true, 0);
	var smooth:Number;
	var value:Number;
	graphics.clear();
	var xVal:Number = (stage.stageHeight / 2);
	var spacing:Number = (stage.stageWidth / CHANNEL_LENGTH);
	var color:Number;
	for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
		value = bytes.readFloat();
		value = (value * CHANNEL_LENGTH) << 0;
		color = 0xFF0000|(value << 8);
		graphics.lineStyle(1, color, 1);
		graphics.beginFill(color);
		graphics.drawCircle(i * spacing, xVal, value / 8);

	}
}


PHP:
color = 0xFF0000|(value << 8);
البته در مورد این قسمت یه توضیحی بدم که این کد رنج رنگهای 8 بیتی از رنگ 0xFF0000 برمیگردونه و برای دونستن این رنج میتونین از این کد استفاده کنین
PHP:
trace(color.toString(16))


(اقا این ادیتور انجمن فکر کنم مشکل داره اگه درست میشد از دست این ادیتها راحت میشدیم)
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا