سلام، من قبلا با قسمت تولید صوت میکروکنترلر کار نکردم و در حد خروجی دادن فایل ها صوتی Wave با PWM میکروکنترلر به اسپیکر. ولی شما در نگاه کلی به موارد زیر نیاز دارین.
یک میکروکنترلر که DAC خوبی داشته باشه یا یک میکروکنترلر با آیسی DAC مجزا
یک صفحه کلید ماتریسی که 88 تا دکمه داشته باشه
یک مدار کوچک تقویت کننده صدا و اسپیکر متناسب با آن
و بقیه قطعات لازم برای طراحی با توجه به اندازه و اهمیت پروژه. البته با PWM میکروکنترلر هم میشه طول موج و صدا تولید کرد ولی DAC راحت تر است بازم بستگی به نوع پروژه داره. شاید لازم باشه خروجی DAC یا PWM را فیلتر بذاری ولی فعلا پیچیده نکنیم.
شما اول صفحه کلید را میکروکنترلر وصل کن و ان را به اصلاح در بازه های زمانی هر 10 الی 20 میلی ثانیه اسکن کن تا اگر کلیدی فشرده شده بود خروجی مورد نظر را تولید کنه. با تایمرهای میکروکنترلر اینکار را بکنی خیلی عالی میشه بنظرم.
دوم DAC یا PWM را راه اندازی کن و طول موج های مورد نظر را با توجه به جدول صدای پیانو تولید کن و یک تابع بنویس که با گرفتن ورودی شماره کلید یا فرکانس آن را تولید کنه.
در نهایت در سمت میکروکنترلر هر بار کلیدی فشرده شد تابع صدا را فرخوانی بکن و صدا تولید بشه. حالا خروجی صدا میمونه که یک مدار واسط بین اسپکر و میکروکنترلر لازمه مثل فیلتر پایین گذر و شماتیک مدارات زیاد هستن به این مرحله رسیدی سرچ کنی به نتیجه میرسی و صدا را با این مدار واسط از خروجی DAC بگیر و بده به تقویت کننده.