/* ** SOUND.H ** ** Original Copyright 1988-1991 by Bob Stout as part of ** the MicroFirm Function Library (MFL) ** ** This subset version is functionally identical to the ** version originally published by the author in Tech Specialist ** magazine and is hereby donated to the public domain. */ #if defined(__ZTC__) #include #undef int_on #undef int_off #elif defined(__TURBOC__) #define int_on enable #define int_off disable #ifndef inp #define inp inportb #endif #ifndef outp #define outp outportb #endif #else /* assume MSC/QC */ #include #define int_on _enable #define int_off _disable #define getvect _dos_getvect #define setvect _dos_setvect #endif /* defines for mktone() update parameter: */ #define ON 0 /* turn the speaker on */ #define UPDATE 1 /* sound is on, just change freq */ #define TOGGLE 2 /* for delay use, turn on, then off */ /* port equates */ #define SCNTRL 0x61 /* sound control port */ #define SOUNDON 0x03 /* bit mask to enable speaker */ #define SOUNDOFF 0xfc /* bit mask to disable speaker */ #define C8253 0x43 /* port address to control 8253 */ #define SETIMER 0xb6 /* tell 8253 to expect freq data next */ #define F8253 0x42 /* frequency address on 8253 */ /* frequency equates (muscical scale) */ /* digit in label is octave number, S indicates Sharp (#) */ #define C0 36489 #define CS0 34445 #define D0 32512 #define DS0 30673 #define E0 28961 #define F0 27329 #define FS0 25804 #define G0 24351 #define GS0 22981 #define A0 21694 #define AS0 20473 #define B0 19326 #define C1 18244 #define CS1 17218 #define D1 16251 #define DS1 15340 #define E1 14480 #define F1 13668 #define FS1 12899 #define G1 12175 #define GS1 11493 #define A1 10847 #define AS1 10238 #define B1 9663 #define C2 9121 #define CS2 8609 #define D2 8126 #define DS2 7670 #define E2 7239 #define F2 6833 #define FS2 6450 #define G2 6088 #define GS2 5746 #define A2 5424 #define AS2 5119 #define B2 4832 #define C3 4561 #define CS3 4305 #define D3 4063 #define DS3 3835 #define E3 3620 #define F3 3417 #define FS3 3225 #define G3 3044 #define GS3 2873 #define A3 2712 #define AS3 2560 #define B3 2416 #define C4 2280 #define CS4 2152 #define D4 2032 #define DS4 1917 #define E4 1810 #define F4 1708 #define FS4 1612 #define G4 1522 #define GS4 1437 #define A4 1356 #define AS4 1280 #define B4 1210 #define C5 1140 #define CS5 1076 #define D5 1016 #define DS5 959 #define E5 905 #define F5 854 #define FS5 806 #define G5 761 #define GS5 718 #define A5 678 #define AS5 640 #define B5 604 #define C6 570 #define CS6 538 #define D6 508 #define DS6 479 #define E6 449 #define F6 427 #define FS6 403 #define G6 380 #define GS6 359 #define A6 339 #define AS6 320 #define B6 302 #define C7 285 #define CS7 269 #define D7 254 #define DS7 240 #define E7 226 #define F7 214 #define FS7 202 #define G7 190 #define GS7 180 #define A7 169 #define AS7 160 #define B7 151 #define C8 143 #define REST 0 typedef struct { unsigned int freq; unsigned int duration; } NOTE; #if __cplusplus extern "C" { #endif void mktone(int, int, unsigned), dosound(int), soundon(void), soundoff(void), playb_close(void); int playb_note(unsigned, unsigned); NOTE *playb_open(unsigned); #if __cplusplus } #endif