Rovat: Dr. Bit
2000. május 29., hétfő 00:00
|
Hangok és dallamok... Programozzunk együtt.
Hangok és dallamok 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 hangszóró, illetve lehet egy hangkártya is, külsõ hangszórókkal. A hangkártyák használata egy kicsit bonyolultabb, ezért ezekkel valamikor késõbb foglalkozom majd, de ott van a beépített hangszóró, ami kiválóan alkalmas arra, hogy egyszerû hangokat, dallamokat lejátsszunk vele. Ennek 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ólaltatja a hangszóró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 egyéb 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ás 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");
}
Próbálkozz vele egy kicsit, nagyon jó dallamokat lehet vele kihozni. Megjegyzés: Lehet, hogy a hangszóró 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. |