/* * Tony Givargis */ /*---------------------------------------------------------------------------*/ #pragma SMALL #include /*---------------------------------------------------------------------------*/ /* octave 1 */ #define F1_A 0x00 #define F1_AS 0x01 #define F1_B 0x02 #define F1_C 0x03 #define F1_CS 0x04 #define F1_D 0x05 #define F1_DS 0x06 #define F1_E 0x07 #define F1_F 0x08 #define F1_FS 0x09 #define F1_G 0x0a #define F1_GS 0x0b /* octave 2 */ #define F2_A 0x10 #define F2_AS 0x11 #define F2_B 0x12 #define F2_C 0x13 #define F2_CS 0x14 #define F2_D 0x15 #define F2_DS 0x16 #define F2_E 0x17 #define F2_F 0x18 #define F2_FS 0x19 #define F2_G 0x1a #define F2_GS 0x1b /* octave 3 */ #define F3_A 0x30 #define F3_AS 0x31 #define F3_B 0x32 #define F3_C 0x33 #define F3_CS 0x34 #define F3_D 0x35 #define F3_DS 0x36 #define F3_E 0x37 #define F3_F 0x38 #define F3_FS 0x39 #define F3_G 0x3a #define F3_GS 0x3b /* no sound */ #define F_NO 0xff /*---------------------------------------------------------------------------*/ #define TEMPO_ELEVATOR 10000 #define TEMPO_SLOW 9000 #define TEMPO_FAST 7000 #define TEMPO_ROCKNROLL 5000 /*---------------------------------------------------------------------------*/ #define D_WHOLE 8 #define D_HALFDOT 6 #define D_HALF 4 #define D_QUARTERDOT 3 #define D_QUARTER 2 #define D_EIGHT 1 /*---------------------------------------------------------------------------*/ unsigned char xdata PLAY_REG _at_ 0xff00; /*---------------------------------------------------------------------------*/ const unsigned char code SONG[][2] = { /* pitch, duration */ { F2_D, D_QUARTER }, { F2_D, D_QUARTER }, { F2_G, D_HALF }, { F2_FS, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_HALF }, { F2_C, D_QUARTER }, { F2_C, D_QUARTER }, { F2_E, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_QUARTER }, { F2_C, D_QUARTER }, { F2_B, D_HALF }, { F2_A, D_QUARTER }, { F2_A, D_QUARTER }, { F2_C, D_QUARTER }, { F2_C, D_QUARTER }, { F2_B, D_QUARTER }, { F2_A, D_QUARTER }, { F1_G, D_QUARTER }, { F2_A, D_QUARTER }, { F1_G, D_QUARTER }, { F2_A, D_QUARTER }, { F1_G, D_HALF }, { F1_G, D_WHOLE }, { F2_D, D_QUARTER }, { F2_D, D_QUARTER }, { F2_G, D_QUARTER }, { F2_G, D_QUARTER }, { F2_FS, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_HALF }, { F2_C, D_QUARTER }, { F2_C, D_QUARTER }, { F2_E, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_QUARTER }, { F2_C, D_QUARTER }, { F2_B, D_HALF }, { F2_A, D_QUARTER }, { F2_A, D_QUARTER }, { F2_C, D_QUARTER }, { F2_C, D_QUARTER }, { F2_B, D_QUARTER }, { F2_A, D_QUARTER }, { F1_G, D_QUARTER }, { F2_A, D_QUARTER }, { F1_G, D_WHOLE }, { F1_G, D_HALF }, { F2_B, D_QUARTER }, { F2_D, D_QUARTER }, { F2_D, D_HALFDOT }, { F2_E, D_QUARTER }, { F1_G, D_QUARTER }, { F2_A, D_QUARTER }, { F2_B, D_QUARTER }, { F2_D, D_QUARTER }, { F2_D, D_HALF }, { F2_D, D_QUARTER }, { F2_E, D_QUARTER }, { F1_G, D_QUARTER }, { F2_A, D_QUARTER }, { F2_B, D_QUARTER }, { F2_D, D_QUARTER }, { F2_D, D_HALFDOT }, { F2_D, D_QUARTER }, { F2_G, D_QUARTER }, { F2_FS, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_QUARTER }, { F2_E, D_QUARTER }, { F2_D, D_QUARTER }, { F2_D, D_HALF }, { F2_D, D_WHOLE } }; /*---------------------------------------------------------------------------*/ void Duration(int tempo, int delay) { static cnt; int i, j; for(i=0; i