در این پروژه، دو فایل 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 قرار دهید.

نحوه اجرا:

  1. دو فایل mariosong.m و note.m را در یک پوشه ذخیره کنید.
  2. نرم‌افزار MATLAB را اجرا کنید.
  3. به پوشه‌ای که فایل‌ها را در آن ذخیره کرده‌اید، بروید.
  4. در خط فرمان MATLAB، دستور mariosong را تایپ و Enter کنید.

با انجام این مراحل، آهنگ قارچ خور پخش خواهد شد. شما می‌توانید با تغییر کدها و پارامترها، آهنگ را به دلخواه خود تغییر دهید و صداهای مختلفی را تجربه کنید.

دسته بندی: برچسب ها: