PDA

View Full Version : چطور دوتا فایل wav رو بهم بچسبونم؟



gbg
یک شنبه 30 فروردین 1388, 14:28 عصر
سلام
2 تا فایل wav دارم چطوری این ها رو بهم بچسبونم و تبدیل به یه فایل wav کنم
اگه کامپوننتی هم میشناسین ممنون میشم معرفی کنین

Delphi Coder
دوشنبه 07 اردیبهشت 1388, 16:38 عصر
http://www.carlosb.com/downloads/waveio.zip

فقط یه چیزیو توجه کنید ممکنه 2 تا فایل با مشخصات متفاوت باشه مثلا یکی مونو باشه یکی استریو یا مثلا یکی 48 کیلو باشه یکی 44100 ولی شما با یک فرمت فایل Wave می سازید در این صورت مجبور میشوید یکی از اونارو تبدیل کنید و بعد فایل wave رو بنویسید.

gbg
پنج شنبه 10 اردیبهشت 1388, 00:34 صبح
ممنون مشکل من هم در چسباندن دوتا فایل متفاوت بودنشون هست

Delphi Coder
پنج شنبه 10 اردیبهشت 1388, 19:56 عصر
روی Sample های PCM باید عملیاتی انجام داد تا به فرمت دلخواه برسیم.
ساده ترین کار در اینجا تبدیل بین Sample های 8 بیتی 16 بیتی و 32 بیتی است. به شکل زیر:
ُ
Sample32 := Sample16 shl 16
Sample32 := (Sample8 xor $80) shl 24
Sample16 := Sample32 shr 16
Sample16 := (Sample8 xor $80) shl 8
Sample8 := (Sample16 shr 8) xor $80
Sample8 := (Sample32 shr 24) xor $80برای تبدیل مونو به استریو میتوانید هر sample را 2 بار تکرار کنید (چون سورس مونو هست برای Left و Right همان صدا گذاشته می شود.)
برای تبدیل استریو به مونو میتوانید Left و Right را باهم جمع کنید با در نظر گرفتن maximum. مثال برای 16 بیتی:

MixedSample := EnsureRange(LeftSample+RightSample,-32768,32767)در تمامی سورسهای C و Delphi که من در Net دیده ام میکس صدا با این روش انجام شده. ایراد آن اینست که باعث بالا رفتن gain صدا میشود و آنچه مسلم است ابزارهایی مثل AdobeAudition یا DirectSound الگوریتمهای بهتر و درست تری برای این کار دارند.
برای تبدیل SampleRate که من شخصا فکر میکنم کار سختی هست الگوریتمهای متفاوتی وجود دارد که البته روی کیفیت صدا هم بعد از Resample تاثیر گذار هست. در ساده ترین و کم کیفیت ترین الگوریتم به نسبت بعضی از Sample ها را برای DownSampling حذف میکنند یا برای UpSampling تکرار میکنند. اما قطعا این روش مطابق اصول مهندسی صدا نیست. من سورس درست حسابی برای UpSampling یا DownSampling در net تا حال به چشمم نخورده اگر پیدا کردید ممنون میشم لینکشو اینجا قرار دهید تا استفاده کنیم.
در ضمن برای تبدیلات می توانید از ACM هم استفاده کنید ولی ACM همه مدل تبدیل را پشتیبانی نمیکند. مثلا نمیتوانید با آن صدای 48000 هرتز را به 44100 یا 22050 هرتز تبدیل کنید اما تبدیل به 24000 یا 12000 و بالعکس را پشتیبانی میکند.