PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : بكار گيري صدا در c



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

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



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

پورت 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 استفاده كنيد.

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