شما عضو نیستید, برای دسترسی کامل به سایت لطفا از طریق این لینک ثبت نام نمائید.     close
 

تالارهای گفتمان جی تاک

جدیدترین موضوعات انجمنها دانلود تولبار جی تاک


بازگشت   تالارهای گفتمان جی تاک برنامه نویسی , طراحی وب و موضوعات مرتبط برنامه نویسی C, C++ and Visual C
ارسال موضوع جدید  پاسخ
 
لینک مستقیم ابزارهای موضوع جستجو در موضوع
قدیمی 11th August 2006   #1

admin

administrator

 admin آواتار ها

تاریخ عضویت: Mar 2006
محل سکونت: ایران
نوشته ها: 2,502
تشکر از دیگران: 1,033
تشکر شده 7,269 بار در 1,782 پست

حالت
Relaxed

 

بكار گيري صدا در C

اين مقاله:thumbsdownsmileyani براي كساني كه تمايل دارند از صدا در برنامه هاي نوشته شده در زبانهاي تحت DOS استفاده كنند جالب مي باشد. بكار گيري كارت صدا در DOS نياز به درايور هاي كارت صدا در سيستم عامل DOS دارد كه اغلب توسط سازندگان اين نوع كارت ، تهيه و توليد نمي شود. بنابراين بكارگيري كارت صدا در سيستم عامل DOS هر چند كه غيرممكن نيست اما كمي دور از دسترس بنظر مي رسد. ولي نا اميد نباشيد چراكه مي توان با ايجاد فركانسهاي مختلف از بلندگوي ساده PC جهت توليد صداهاي گوناگون و بكارگيري آن در برنامه هاي تحت DOS و بازيهاي ساده ، استفاده نمود.

در ابتدا به تشريح يك دستور ساده در زبان C مي پردازيم كه براي توليد صداي معمولي از بلندگوي كامپيوتر استفاده مي شود . تابع sound جهت ايجاد صدا با يك فركانس خاص بكار مي رود. در اين تابع نمي توان مدت زمان پخش صدا را تعيين نمود . بنابراين از تابع nosound جهت قطع صدا استفاده مي شود. بهتر است براي ايجاد تاخير در پخش صدا بين اين دو فرمان از delay و يا يك حلقه تاخيري استفاده نمود. هر دو تابع در سرفايل DOS.H قرار دارند:

نقل قول:

Declaration:
‏ void sound(unsigned frequency);
void nosound(void);

اما راه ديگري نيز براي توليد صداهاي جذاب تر وجود دارد.مي توان با توليد پالس و خاموش و روشن كردن بلندگوي كامپيوتر تحت يك فركانس خاص ، توليد صوت نمود. تعدادي پورت براي اين عمل منظور شده اند كه با آنها و نحوه مقدار دهي آنها آشنا مي شويم:

پورت 66 براي تعيين فاصله بين پالسهاي بلندگو بكار مي رود.فاصله بين پالسها از تقسيم عدد 1.193.280 بر فركانس مورد نظر بدست مي آيد.عدد 1.193.280 برابر با سرعت توليد پالس توسط ساعت سيستم مي باشد.

پورت 67 را مي بايست با مقدار 182 مقداردهي نمود.

سپس بايت كم ارزش فاصله را در پورت 66 قرار مي دهيم.

دوباره پورت 66 را مقداردهي مي كنيم اما اين بار با بايت باارزش فاصله.

حال نوبت به روشن كردن بلندگو مي رسد. بلندگو با فعال شدن بيت هاي شماره يك و صفر ثباتي روشن مي شود كه از طريق پورت 97 قابل دستيابي است. هر زمان هم كه اين دو بيت صفر شوند ، بلندگو خاموش مي شود. توجه داشته باشيد كه بلندگو با فركانس تعيين شده روشن مي شود و توليد صدا مي كند.

بنابراين براي ايجاد صدا با فركانسي معين مقدار پورت 97 خوانده شده ، با عدد 3 به منظور روشن شده بيت هاي 0و1، OR مي شود.نتيجه دوباره در پورت 97 ثبت ميگردد.

پس از آن نوبت به خاموش كردن بلندگوي PC مي رسد.براي انجام اين عمل مقدار پورت را با 253، AND مي كنيم تا دو بيت گفته شده 0 شوند. مي توان با نوشتن مقدار قبلي اين پورت در آن ، صدا را قطع نمود.

تا به اينجا آموختيم كه چگونه از بلندگو استفاده كنيم . اما اعمال گفته شده در بالا با چه تابعي قابل انجام است ؟

توابع inportb و outportb بدين منظور قابل استفاده اند. كار اين دو تابع به ترتيب خواندن و نوشتن در پورتها مي باشد. چنانچه در كامپايلر خود اين دو تابع را نيافتيد مي توانيد از inp و outp استفاده كنيد.

جهت آشنايي بيشتر شما ، برنامه زير تمام مراحل گفته شده را عملا انجام مي دهد . اين برنامه فركانسهاي تصادفي ايجاد كرده و پخش مي نمايد :


نقل قول:
#include <stdlib.h>
#include <conio.h>
void sound(int f);
main(){
while(!kbhit())
sound(100+random(1000));
}
void sound(int f){
char p;
union{
long d;
char c[2];
}count;
count.d=1193280/f;
outportb(67,182);
outportb(66,count.c[0]);
outportb(66,count.c[1]);
p=inportb(97);
outportb(97,p|3);
for(long delay=0;delay<10000000;delay++);
outportb(97,p);
}

admin آفلاين است  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiTweet this Post!
پاسخ با نقل قول
admin ، کاربر روبرو از شما به خاطر پست مفیدتان تشکر کرده است :
قدیمی 4th October 2009   #2

abas_eh

کاربر سایت

 abas_eh آواتار ها

تاریخ عضویت: Oct 2009
نوشته ها: 1
تشکر از دیگران: 0
تشکر شده 0 بار در 0 پست

 

من یک برنامه کوچیک با همین دستور sound نوشتم و برنامه اجرا هم میشه اما بوقی از اسپیکر شنیده نمیشه . میخواستم ببینم علت چیه ؟ متن برنامه هم اینه
#include <dos.h>
void main()
{
sound(1000);
delay(1000);
nosound();
}

abas_eh آفلاين است  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiTweet this Post!
پاسخ با نقل قول
پاسخ


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو در موضوع
جستجو در موضوع:

جستجوی پیشرفته

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال



ست مروارید عشق

بهترین هدیه برای دختران و خانم ها :
زیبا ترین و جذاب ترین هدیه سال برای دختر خانم ها و بانوان محترم

تولد – سالگرد ازدواج –هدیه آشنایی - روز عشق و ....

خودتان مروارید داخل صدف زنده كه در كنسرو شیشه ای بسته بندی شده است را در بیاورید و در قسمت مخصوصش در گردنبند قرار دهید

» برای مشاهده توضیحات و تصاویر بیشتر اینجا را کلیک کنید ...
 

روش خرید: برای خرید پس از کلیک روی دکمه زیر و تکمیل فرم سفارش، ابتدا محصول مورد نظر را درب منزل یا محل کار تحویل بگیرید، سپس وجه کالا و هزینه ارسال را به مامور پست بپردازید. جهت مشاهده فرم خرید، روی دکمه زیر کلیک کنید.

قیمت: 8900 تومان

 


Powered by vBulletin Version 3.8.6 & Our Members
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2
Host & Support By Kimiahost Co
© Copyright 2005-2010 Gtalk.ir
سایت سرگرمی و تفریحی * ثبت هاستینگ و دامنه * سایت سرگرمی و عکس های جالب * فروشگاه تکچین ، فروشگاه اینترنتی تکچین هدایای جالب و لوکس * ست مروارید عشق * سایت یک در یک ، فال و طالع بینی ، عکس ، مقالات آموزشی، پیامک های جالب *آموزش لاغری در 10 دقیقه *شارژ موبایل با باطری قلمی *بهترین هدیه روز مادر و روز زن *راه های افزایش قد + حرکات جادویی *ساعت LED آدیداس adidas *ساعت بدون عقربه Gucci *دستگاه کپی SMS و شماره تلفن *ست چاقوی میراکل بلید *دماسنج عشق *سایت هدفمند سازی یارانه ها *برچسب ضد اشعه امواج مضر موبایل * ساعت و گردنبند جادویی آرامبخش *مجله اینترنتی پی سی پارسی *بزرگترین شهر دانلود *فال و طالع بینی -تاروت *دانلود *پک سفیدکننده دندان اصل Whitelight *پاتوق تفريحي ايرانيان *سرگرمی و تفریحی شهرشب * کرم موبر باله آ اصل - Balea Cream *توپترينها *موبفا-مرجع تخصصی موبایل *قره جه طیار ، انتخابات گنبد *عکسهای بازیگران * درج آگهي و تبليغات *مجله تاپ مگ *هاست ایرانی ، میزبانی ملی *خرید زیور آلات ، بدلیجات ، مروارید *پنل ارسال sms *عکس *پاتوق اینترنتی *عکس *مجله تفریحی خبری فان فارس *تبادل لینک با ما - رنک 3 به بالا