PDA

View Full Version : مبتدی: چه طوری با زدن مثلا یک دکمه ،یک صدای مشخص تولید بشه، درست مثل یک پیانو؟



forough.tg
یک شنبه 14 فروردین 1390, 14:08 عصر
سلام به شما دوستان محترم، من میخوام یه برنامه توی سی شارپ بنویسم که مثل یه پیانو عمل کنه، چه طور میتونم صدای هر دکمه رو ایجا کنم،که توی برنامم بش یک آهنگ رو با زدن هر دکمه بنوازم؟ اگه کسی میدونه لطفا به من بگه، ممنون میشم اگه ساده توضیح بدید چون من تازه شروع کردم به یاد گیری سی شارپ و توی اینترنت هم با کد های خیلی سخت مواجه شدم.........فقط میشه بگید که آیا من باید اوون صدا ها یا در واقع نت هارو خیره کنم جایی یا اینکه خود_سی شارپ میتونه با نوشتن کد اونارو تولید کنه مثل تغیرر فرکانس توی وی بی؟

Directx
یک شنبه 14 فروردین 1390, 14:20 عصر
اولین پستتون رو بهتون تبریک می گم شاید منظور شما این باشه-- فقط این که پارامتر اول فرکانس صداست و دومی زمان پخش صدا

Console.Beep(300, 1000);

forough.tg
یک شنبه 14 فروردین 1390, 18:36 عصر
بازم سلام.ممنونم دوست عزیز از جوابتون
ولی منظورم من تعیین زمان مشخص واسه زدن کلید نیست
منظورم اینه که با فشردن یکی از کلید ها صدا ی اون کلید یا در واقع نت مورد نظر نواخته بشه
میشه در این رابطه اگه اطلاعی دارید راهنماییم کنید....ممنونم

forough.tg
یک شنبه 14 فروردین 1390, 18:40 عصر
بازم سلام
ممنونم از جوابی ککه دادید
ولی منظورم این بود که بعد از زدن کلید خاص ، صدای مربوط یا در واع نت مورد نظر نواخته بشه
نه اینکه زمان مشخص کنم واسش
اگه در این مورد اطلاعی دارید راهنماییم کنید لطفا

Directx
دوشنبه 15 فروردین 1390, 00:51 صبح
سلام ببخشید دیز شد پستتونو الان دیدم راستش برای این کار باز هم می تونید از همون روشی که گفتم استفاده کنید منتها کافیه که کدش رو تو رویداد keyDown مربوط به فرم وارد کنید مثلا تو این رویداد بنوسید

private void Form1_KeyDown(object sender, KeyEventArgs e)
{

switch (e.KeyCode)
{
case Keys.A:
Console.Beep(400, 1000);
break;
case Keys.B:
Console.Beep(200, 1000);
break;
}
}

sabloger
دوشنبه 15 فروردین 1390, 02:11 صبح
سلام دوست عزیز
این دوستمون درست جواتونو دادن اما مفهومو بد رسوندن
public void ding(int frq)
{
Console.Beep(frq, 500);
}

private void button1_Click(object sender, EventArgs e)
{
ding(200);
}

private void button2_Click(object sender, EventArgs e)
{
ding(300);
}

private void button3_Click(object sender, EventArgs e)
{
ding(400);
}

private void button4_Click(object sender, EventArgs e)
{
ding(500);
}

private void button5_Click(object sender, EventArgs e)
{
ding(600);
}

این ماله 5تا دگمس
میتونی تابعو توی هر تعداد دگمه که خواستی صدا بزنی و فقط فرکانس رو که به عنوان پارامتر میده رو تغییر بدی

میشد این رو با 3 خط کد هم نوشت اما چون گفتید ساده اینطور نوشتم

موفق باشید

forough.tg
دوشنبه 15 فروردین 1390, 10:43 صبح
سلام به شما دوست گرامی
بسیارزیاد ممنونم از جوابی که دادید.......خیلی زیاد ممنونم.........لطف کردید......میشه روش دیگرش رو که گفتید رو هم. بگید ......اگه این کارو بکنید ممنون میشم......فقط یه سوال قبل از امتحان کردنش بپرسم ازتون ، یعنی ایجاد نت هایی با قانون سلفژ یه همون دو ، ر، می فا.......خودمون با تغییر فرکانس ایجاد میشه؟و اگه قرار باشه مثلا یه پیانویی با 7 اکتاو که تعداد دکمه هاش باید حدود 52 تا باشه از این روش اگه استفاده کنم به نظرتون خطوط برنامه زیاد نمیشه؟؟؟
باز هم اگه میتونید منو راهنماییم کنید.ممنونم..........بسیار زیاد تر از زیاد

forough.tg
دوشنبه 15 فروردین 1390, 10:45 صبح
سلام دوباره به شما دوست عزیز
خیلی لطف کردید کهوقت گذاشتید و جواب منو دادید ..........خیلی زیاد ممنونم.....فقط بازم میخوام بدونم این کار یعنی تغییر فرکانس باعث ایجاد نت ها میشه، همون دو ، ر، می، فا ، سو ، ........منظورم ایناست؟ و اینکه اگه بخوام یه پیانو با 7 اکتاو باشه به نظرتون این تعداد دستور زیاد نیست واسش؟
ممنون میشم راهنماییم کنید
خیلی زیاد سپاز گزارم

sabloger
دوشنبه 15 فروردین 1390, 12:43 عصر
با سلام خدمت شما دوست عزیز

در مورد سوالتون، بنده در مورد موسیقی سر رشته ای ندارم(اما علاقه دارم!!)

و اما در مورد کد:
private void button1_Click(object sender, EventArgs e)
{
Console.Beep(Convert.ToInt32(sender.ToString().Rem ove(0, sender.ToString().Length - 4)), 500) ;
}

باید برای هر دگمه، فرکانسی رو که میخواهید توی خاصیتtext اون بگذارید و در قسمت رویدادهاش، این تابعی رو که گذاشتم برای click از لیستش انتخاب کنید

من تا 12 تا دگمه و فزکانس 3 و 4 زقمی رو چک کردم درست بود

اگه سوالی داشتید پیام بدید

موفق باشید

forough.tg
دوشنبه 15 فروردین 1390, 13:12 عصر
بازم سلام
مرسی ........زیاد مرسی.....من اینو امتحان میکنم و دوباره اگه کمکی خواستم میپرسم اینجا.....................بسیار زیاد ممنونم ازتون دوست عزیز
با آرزوی بهترین ها برای شما
موفق باشیددو شاد