سلام دوستان. اگه کسی با نگاه کردن این فیلم کوتاه، میتونه حدس بزنه برنامه ی این پروژه از چه قسمت هایی تشکیل شده و کمکم کنه یه نمونشو بسازم، بسیار سپاس گذارش میشم!

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: