در این پروژه، دو فایل MATLAB به نامهای mariosong.m و note.m برای پخش بخش ابتدایی آهنگ قارچ خور (Super Mario Bros) طراحی شدهاند. فایل mariosong.m وظیفهٔ تنظیم نتها و ریتم آهنگ را بر عهده دارد و فایل note.m نحوهٔ تولید صدای هر نت را تعیین میکند.
فایل mariosong.m:
این فایل شامل کد اصلی برای پخش آهنگ است. ابتدا، آرایههایی از نتها و مدت زمان آنها تعریف میشوند. هر نت به صورت یک رشته (مانند ‘c4’ یا ‘e5’) و مدت زمان آن به صورت یک عدد (نسبت به یک زمان پایه) مشخص میشود. سپس یک حلقه (for loop) روی این آرایهها اجرا میشود و برای هر نت، تابع playNote فراخوانی میشود.
تابع playNote دو کار انجام میدهد: ابتدا تابع generateNote (که در فایل note.m قرار دارد) را برای تولید صدای نت مورد نظر فراخوانی میکند و سپس صدای تولید شده را با استفاده از تابع soundsc پخش میکند. تابع soundsc صدا را با نرخ نمونهبرداری ۴۴۱۰۰ هرتز پخش میکند که یک نرخ استاندارد برای صدا است.
فایل note.m:
این فایل حاوی تابع generateNote است که صدای هر نت را تولید میکند. این تابع دو ورودی میگیرد: نت (به صورت رشته) و مدت زمان آن. در داخل تابع، ابتدا یک map (dictionary) به نام frequencies تعریف شده است که فرکانس هر نت را ذخیره میکند. سپس فرکانس نت مورد نظر از این map استخراج میشود.
برای تولید صدا، یک موج سینوسی با فرکانس مشخص و مدت زمان معین ساخته میشود. تابع linspace برای ایجاد یک بردار از زمان استفاده میشود و سپس تابع sin موج سینوسی را تولید میکند. در نهایت، برای جلوگیری از ایجاد صدای “کلیک” در ابتدا و انتهای نت، یک envelope (پوشش) به موج سینوسی اعمال میشود. این پوشش باعث میشود که صدا به تدریج شروع و خاتمه یابد.
نکات مهم:
- تنظیم تمپو: متغیر
baseDurationدر فایلmariosong.mسرعت آهنگ را کنترل میکند. مقادیر کوچکتر باعث میشوند آهنگ سریعتر پخش شود. - تغییر صدا: شما میتوانید با تغییر تابع تولید موج (به عنوان مثال، از
sinبهsquareیاsawtooth) در فایلnote.m، جنس صدای نتها را تغییر دهید. - پوشش صدا: شما میتوانید با تغییر پارامترهای تابع
linspaceو نحوهٔ اعمال آن، شکل و زمان پوشش صدا را تغییر دهید و صدای بهتری ایجاد کنید. - فرکانسها: دقت فرکانسهای تعریف شده در map
frequenciesبسیار مهم است. شما میتوانید این فرکانسها را با استفاده از تیونر یا منابع دیگر دقیقتر کنید. - نتهای بیشتر: برای اضافه کردن نتهای بیشتر به آهنگ، باید فرکانس آنها را به map
frequenciesاضافه کنید و آنها را در آرایهnotesدر فایلmariosong.mقرار دهید.
نحوه اجرا:
- دو فایل
mariosong.mوnote.mرا در یک پوشه ذخیره کنید. - نرمافزار MATLAB را اجرا کنید.
- به پوشهای که فایلها را در آن ذخیره کردهاید، بروید.
- در خط فرمان MATLAB، دستور
mariosongرا تایپ و Enter کنید.
با انجام این مراحل، آهنگ قارچ خور پخش خواهد شد. شما میتوانید با تغییر کدها و پارامترها، آهنگ را به دلخواه خود تغییر دهید و صداهای مختلفی را تجربه کنید.
