Metropoli BBS
VIEWER: democ.c MODE: TEXT (ASCII)
/*
	16/06/87

	Sound-driver demonstration program.
*/


#define	fSDInit			0
#define	fSDRelTimeStart		2
#define	fSDSetState		3
#define	fSDGetState		4
#define	fSDFlush		5
#define	fSDSetMode		6
#define	fSDGetMode		7
#define	fSDSetRelVolume		8
#define	fSDSetTempo		9
#define	fSDSetTranspose		10
#define	fSDGetTranspose		11
#define	fSDSetActVoice		12
#define	fSDGetActVoice		13
#define	fSDPlayNoteDel		14
#define	fSDPlayNote		15
#define	fSDSetTimbre		16
#define	fSDSetPitch		17
#define	fSDSetTickBeat		18
#define	fSDNoteOn		19
#define	fSDNoteOff		20
#define	fSDTimbre		21



#define END		100			/* indicate the end of 'melodie' array */

int marimba3[] = {
 0x0001, 0x0005, 0x0005, 0x000d, 0x0001, 0x0000, 0x000a, 0x0005, 0x000e,
 0x0001, 0x0000, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000, 0x000f, 0x0001,
 0x0000, 0x0009, 0x0003, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001
};



char melodie[] = {
0, 1, 2,
2, 1, 2,
4, 3, 4,
7, 1, 4,
7, 1, 1,
4, 3, 4,
0, 1, 4,
4, 3, 2,
2, 1, 2,
0, 2, 1,

0,1,2,
4,1,2,
7,1,2,
12,3,2,
2,3,4,
5,1,4,
9,1,2,
12,3,2,
11,3,4,
9,1,4,
7,1,2,
5,1,1,
2,1,2,
4,1,1,
9,1,2,
7,3,2,
100, 100, 100
};


extern	char SoundCall();			/* interface to sound-driver */


main()
{
	int i;

	if( !GetSoundDrvVersion()) {		/* verify that sound-driver is installed */
		printf( "\n Sound-driver not installed!");
		exit( 1);
		}
	SoundCall( fSDInit);			/* reset sound-driver */
	SoundCall( fSDSetState, 0);		/* make shure that sound-driver is disabled */
	SoundCall( fSDSetMode, 0);		/* set to melodic mode */
	SoundCall( fSDSetTickBeat, 4);		/* 4 ticks by beats */
	SoundCall( fSDRelTimeStart, 0, 1);	/* start of music piece */
	SoundCall( fSDSetTempo, 100, 0, 1);	/* set tempo to 100 */
	SoundCall( fSDSetActVoice, 0);			/* use voice 0 */
	SoundCall( fSDSetTimbre, &marimba3[ 0], 0, 1);	/* set timbre voice */
/*
	Play all notes of 'melodie' array....
*/
	i = 0;
	while( 1) {
		if( END == melodie[ i])
			break;
		SoundCall( fSDPlayNote, (unsigned)melodie[ i], (unsigned)melodie[ i+1],
			(unsigned)melodie[ i+2]);
		i += 3;
		}
	SoundCall( fSDSetState, 1);			/* enable the sound-driver to play */
	while( SoundCall( fSDGetState))			/* wait until the last note */
		;
	printf( "\nDone!");
	exit( 0);
}


[ RETURN TO DIRECTORY ]