سلام دوستان. اگه کسی با نگاه کردن این فیلم کوتاه، میتونه حدس بزنه برنامه ی این پروژه از چه قسمت هایی تشکیل شده و کمکم کنه یه نمونشو بسازم، بسیار سپاس گذارش میشم!
http://www.aparat.com/v/QImjS
یکم مبانی درموردش بذارم فقط:
+ این سینتی سایزری که مشاهده کردید Polyphonic ـه. یعنی قابلیت نواختن چند نت به صورت موازی رو داره. کیبوردش هم با اسکن صفحه کلید ماتریسی فلگ هارو مقدار میده.
+ هارمونیک میتونیم اضافه کنیم. (که عامل تفاوت قائل شدن بین اصوات ساز های دیگه میشه که اصطلاحاً "طنین" یا Timbre خونده می شه).
+ دنبال کننده ی انوِلاپ خواهیم داشت که با ADSR نشونش میدن و شامل Attack, Decay, Sustain و Release میشه که اولی و آخری (ایجاد و میرایی سیگنال) رو اضافه کردن ایشون.
پروژه ی مشابه ای هم خودم درست کردم یکم زیادی ابتداییه واس همین به کمکتون احتیاج دارم:
+ اولاً این که Monophonic ـه (دلیلش اون پایین هست)
+ دوماً 25 تا کلید داریم، درست ولی با دوتا کلید دیگه و با استعانت از یک متغیر تا ده اکتاو رو دستمون بازه سیگنال نُت رو بسازیم.
+ سیگنال خروجی متأسفانه یا خوشبختانه مربعیه (خروجی تایمر مد پیشرفته) که البته میدونم بی نهایت هارمونیک فرد داره و به طروقی میشه جداشون کرد، ولی
متد اشتباهی برگزیدم کلّاً. طبق گفته ی سازنده ی اون پروژه، سیگنال سازی توسط یک یا چند DAC صورت گرفته. که اطلاعات زیادی نداریم.
فرم کلی برنامه ی من:
(با هر بار مقدار دادن رجیستر OCR و فعال/ غیر فعال سازی تایمر دوم CTC مگا32 سیگنال نهایی ساخته میشه.) کد کلید سُل دوم (کلید 19 ام) به شکل زیره:
کد:
while (PINA.5==0) //SOL 2
{
delay_ms(50);
if (m==0)
{
OCR2=79;
TCCR2=0x1F;
}
if (m==1)
{
OCR2=39;
TCCR2=0x1F;
}
if (m==2)
{
OCR2=79;
TCCR2=0x1E;
}
if (m==3)
{
OCR2=79;
TCCR2=0x1D;
}
if (m==4)
{
OCR2=79;
TCCR2=0x1C;
}
if (m==5)
{
OCR2=79;
TCCR2=0x1B;
}
if (m==6)
{
OCR2=158;
TCCR2=0x1A;
}
if (m==7)
{
OCR2=76;
TCCR2=0x1A;
}
if (m==8)
{
OCR2=38;
TCCR2=0x1A;
}
}
میدونم کد چرتی نوشتم، ولی چیز دیگه ای به ذهنم نمی رسید خو...!

کلاً دنبال پروژه ساده ی ارگ ساده ام که پشن های زیادی بهش اضافه کنم.
تاحالا پست نذاشتم! لطفاً کمکم کنید! سپاس گزارم... :cry2:

