CyberPress.Sopron

(http://www.cyberpress.hu/)

Rovat: Dr. Bit

2000. jĂşnius 13., kedd 00:00


Hangok C-ben és C++ -ban

Programozzunk együtt!

Hangok C-ben és C++ -ban

Bizonyára már te is találkoztál olyan programmal, amely egyszerű hangokkal figyelmeztetett valamire.(Ilyen lehet például valamilyen üzenetet kísérő csipogás.)

A számítógép többféle módon adhat ki hangokat, ugyanis (legalábbis majdnem minden gépben) van egy kis, beépített hangszoró, illetve lehet egy hangkártya is, külső hangszorókkal. A hangkártyák használata egy kicsit bonyolultabb, ezért ezekkel majd valamikor később foglalkozom majd, de ott van a beépített hangszoró, ami kiválóan alkalmas arra, hogy egyszerű hangokat, dallamokat lejátszunk vele. Ennek a használata nagyon könnyű C és C++ -ban. Van ugyebár nekünk egy sound() függvényünk a DOS.H -ban, ami megszólalatatja a hangszorót a paraméterként kapott frekvencián. A hang egészen addig szól, ameddig egy nosound() függvény nem kerül meghívásra. A DOS.H -ban van még (sok többi más függvény mellett) egy delay() utasítás, ami annyi ezredmásodpercet vár, amennyit paraméterként kapott.(1000 ezredmásodperc=1 másodperc) Itt van hát egy egyszerű példa, ami egy másodpercig 440 Hz-en szól:

/* sound1.c - Egy egyszeru pelda a sound() 
fuggveny hasznalatara */
#include <dos.h>
void main(void)
{
 sound(440);
 delay(1000);
 nosound();
}
Ha egymás után több hangot szeretnénk lejátszani, az is megoldható, csak több sound() utasítást kell egymás után:
/* sound2.c - Egy egyszeru pelda a sound() -al valo dallamlejatszasra 
*/
#include <dos.h>
#define WAIT 1000
void main(void)
{
  sound(440);
  delay(WAIT);

  sound(660);
  delay(WAIT);

  sound(1000);
  delay(WAIT);

  sound(5000);
  delay(WAIT);
  nosound();
}

(A #define egy állandó(konstans) értéket definiál fordítási időben)

Ha csak 'csipogtatni' akarsz, küldj ki egy 'a' -t a képernyőre!

#include <dos.h>
#include <stdio.h>
void main(void)
{
 printf("a");
}
Ez Windows alatt az egy csöngés, DOS alatt egy beep -elés.

Próbálkozz vele egy kicsit, nagyon jó dallamokat lehet vele kihozni. Megjegyzés: Lehet, hogy a hangszoró nem tud túl alacsony hangokat (általában 10Hz alatt) megszólaltatni.

Hát mostanra ennyi! A következő alkalommal a billentyűzetkezeléssel fogok foglalkozni.

PET