در متلب توابعی وجود دارند که به منظور کار با صوت طراحی شده اند.در این نوشته مقدماتیترین این توابع و طرز کار این توابع را با هم مرور می کنیم.
بصورت پیشفرض میدانیم که هنگام بروز خطا و اخطار در متلب این نرم افزار خطای اتفاق افتاده را با رنگ قرمز و ایجاد صدا به اطلاع کاربر میرساند. ساده ترین دستور تولید صدا در متلب دستور beep است که همانطوری که از اسمش پیداست یک صدای بیپ تولید می کند.این صدا برای اجرا به هنگام تولید پیامهای اخطار در برنامه هایتان می تواند مفید باشد.می توان حالت بیپ کامپیوتر را فعال و غیر فعال کرد.به این صورت:
beep on
beep off
اگر حالت بیپ کامپیوتر غیر فعال باشد دیگر دستور beep تولید صدا نخواهد کرد.
wavrecord:
این تابع پس از فراخوانی،از یک دستگاه ورودی صدا مثلا میکروفون در زمان مشخصی تحت فرکانس تعیین شده ای صدا را ضبط می کند. ساختار تابع به این صورت است:
data=wavrecord(n,fs);
این تابع تعداد n نمونه از یک سیگنال صوتی را تحت فرکانس fs هرتز ضبط می کند و آن را در متغیر data ذخیره می کند.مقدار پیش فرض fsبرابر 11025هرتز است.
همانطور که گفته شد تابع wavrecord تعداد n فرکانس را ضبط می کند.بنابراین اگر بخواهیم t ثانیه صدا ضبط کنیم باید t*fs فرکانس را ضبط کنیم.یعنی تابع را تحت این ساختار فراخوانی کنیم:
data=wavrecord(t*fs,fs);
wavwrite:
حال باید صدای ضبط شده را در یک فایل صوتی ذخیره کنیم.برای این منظور از تابع wavwrite استفاده می شود.این تابع بردار حاوی صدای ضبط شده را در یک فایل با پسوند .wav ذخیره می کند.فایل تولید شده قابل پخش در کلیه ی برنامه های پخش صداست.
wavwrite(data,fs,’filename’);
به متغیر fs در ساختار تابع توجه کنید.مقدار متغیر fs در ساختار تابع wavwrite باید با مقدار متغیر fs در ساختار تابع wavrecord برابر باشد.در واقع باید صدا را با همان فرکانسی که ضبط کرده ایم در فایل ذخیره کنیم.در غیر این صورت صدا زیر یا بم می شود.
wavread:
این تابع یک فایل صوتی با پسوند .wav را می خواند و آن را در متغیر data و فرکانسش را در متغیر fs ذخیره می کند.
[data fs]=wavread(‘filename’);
wavplay:
این تابع بردار حاوی صوت را تحت فرکانس مشخصی پخش می کند.
wavplay(data,fs);
sound:
طرز کار این تابع مشابه wavplay است.
sound(data,fs);
در انتها قابل ذکر است که متغیرهای شامل فایل صوتی با دستور plot به سادگی قابل نمایش هستند. به عنوان مثال داریم:
;(data=wavrecord(50000,10000
;(plot(data
خروجی برنامه:
سلام
بنده ان شاء الله از مطالب شما برای برنامه نویسی یک پروژه می خواهم استفاده کنم .امیدوارم رضایت داشته باشید.
مطالب مفیدی بود برایتان آرزوی موفقیت می کنم.
یاعلی(ع)مدد
یاحق