قبل از شروع این بحث بهتر است آشنایي مختصري با تئوري موسیقي پیدا کنید.اجزاي یک ملودي نتها هستند.هر نت در واقع يک فرکانس یا يک باند فرکانسي است.مثلا طبق استاندارد جهاني نت لا ازپايينترین اکتاو (Octave)، با فرکانس 440HZ نواخته می شود.نتها در اکتاوها متوالیا تکرار می شوند.اما فرق یک نت در یک اکتاوتا اکتاودیگر چیست؟تفاوت دربمی وزیری صداست.درواقــــع صدای نتهـــــای واقع در اکتــاوهای بالاتر، زیرترمی شود.

فرکانس نتهای موسیقی را می توان طبق رابطه زیر به دست آورد.

fx=fbase * 2 ^(n/12)

در رابطه بالا fbase فرکانس یک نت معلوم است.مثلا نت لا که قبلا گفته شد وn فاصله کلید مجهول از کلید معلوم رو به بالاست.مثلا فرکانس نت سی از همان اکتاو،طبق زیر به دست می آید.

fsi=440*2^(2/12)=494HZ

حال شما می توانید با تولید فرکانسهای متناظر نتها به وسیله یک میکروکنترلر،موسیقی دلخواه خود را اجرا کنید.در واقع میکروکنترلر شما باید برای هر نت یک موج مربعی با فرکانس آن نت و مدت زمان کشش آن نت روی یک پین خود تولید کند.ساختن موج مربعی با میکروکنترلر کار ساده ایست.همچنین می توانید فرکانس یا پرید نتها یا عددی متناسب با آنها را به عنوان اعدادی ثابت در یک آرایه ذخیره کنید تا متناسب با هر نت آنها را از جدول استخراج کنید.

برای شروع کار می توانيد مثال زير را دانلود کنيد.

 

Download : AVR-Music.zip

 

http://www.amnelec.persianblog.com