// /************************************************************** melodyd (Correspond two voice) Copyrights(C)2004 air variable http://www.geocities.co.jp/SiliconValley-Sunnyvale/4889/ May,22,2004 ver arpha 4 Output port is 5pin and 6pin KANON SAMPLE(Under construction) Total ROM used 747 words (73.0%) (non optimization) **************************************************************/ /* staff is 237 score */ #include #pragma CLOCK_FREQ 4000000 #define CL tone= 20; #define C$L tone= 34; #define DL tone= 46; #define D$L tone= 58; #define EL tone= 69; #define FL tone= 80; #define F$L tone= 90; #define GL tone=100; #define G$L tone=109; #define AL tone=117; #define A$L tone=125; #define BL tone=132; #define C tone=140; #define C$ tone=146; #define D tone=153; #define D$ tone=159; #define E tone=164; #define F tone=170; #define F$ tone=175; #define G tone=179; #define G$ tone=184; #define A tone=188; #define A$ tone=192; #define B tone=196; #define CH tone=199; #define C$H tone=203; #define DH tone=206; #define D$H tone=209; #define EH tone=212; #define FH tone=214; #define F$H tone=217; #define GH tone=219; #define G$H tone=221; #define AH tone=223; #define A$H tone=225; #define BH tone=227; #define R tone=0; #define HCL tone_b= 20; #define HC$L tone_b= 34; #define HDL tone_b= 46; #define HD$L tone_b= 58; #define HEL tone_b= 69; #define HFL tone_b= 80; #define HF$L tone_b= 90; #define HGL tone_b=100; #define HG$L tone_b=109; #define HAL tone_b=117; #define HA$L tone_b=125; #define HBL tone_b=132; #define HC tone_b=140; #define HC$ tone_b=146; #define HD tone_b=153; #define HD$ tone_b=159; #define HE tone_b=164; #define HF tone_b=170; #define HF$ tone_b=175; #define HG tone_b=179; #define HG$ tone_b=184; #define HA tone_b=188; #define HA$ tone_b=192; #define HB tone_b=196; #define HCH tone_b=199; #define HC$H tone_b=203; #define HDH tone_b=206; #define HD$H tone_b=209; #define HEH tone_b=212; #define HFH tone_b=214; #define HF$H tone_b=217; #define HGH tone_b=219; #define HG$H tone_b=221; #define HAH tone_b=223; #define HA$H tone_b=225; #define HBH tone_b=227; #define HR tone_b=0; //Length (Midi timebase like 48 tick) #define L1 wtime(192); //whole #define L2 wtime(96); //half #define L3 wtime(64); //triplets half #define L4 wtime(48); //quater #define L4D wtime(72); //dotted quater #define L6 wtime(32); //triplets quater #define L8 wtime(24); //eighth #define L8D wtime(36); //dotted eighth #define L12 wtime(16); //triplets eighth #define L16 wtime(12); //sixteenth #define L16D wtime(18); //dotted sixteenth #define L24 wtime(8); //triplets sixteenth #define L32 wtime(6); //32th #define L32D wtime(9); //dotted 32th #define L48 wtime(4); //triplets 32th #define L64 wtime(3); //64th #define L96 wtime(2); //triplets 64th #define L192 wtime(1); //192th(The minimum unit) //output port is #define sound_output 0x04 //gpioO2 #define sound_output_b 0x02 //gpioO1 //Tempo trim (0 to 4) #define tempo_multi 8; //See Configure -> Configuration Bits __CONFIG(0x3184); char tone,tone_b; char tempocont = 176;//TEMPO CONT(value 176 is tempo 120) #pragma interrupt_level 1 //Timer Int process/ void interrupt toneset( void ){ //timer 0 if (T0IF == 1){ if (tone != 0 ) GPIO ^= sound_output;//alternate port TMR0 = tone+1; T0IF =0; } //timer 1 if (TMR1IF == 1){ if (tone_b != 0) GPIO ^= sound_output_b; TMR1L = tone_b+1; TMR1H = 0xff ; TMR1IF =0; } } //tempo control wtime(char t0){ int i,t1; for ( i=0 ; i != t0 ;i++) { t1 = tempocont * tempo_multi; while ( --t1 ); } } main(){ //Initialization int n=0; char tmp,tmp2; OSCCAL = _READ_OSCCAL_DATA();//get osccaldata and set OSCCAL CMCON = 7; ANSEL = 0b00000000; TRISIO = 0b11111111; GPIO = 0; TMR1H = 0xff ; TMR1L = 0x00 ; tone = 0x00; tone_b = 0x00; T1CON = 0b00110001;// tmr1 on OPTION = 0b10000010; // prescale 8 PEIE = 1; TMR0 = 0x00 ; T0IE = 1; TMR1IE = 1; GIE = 1; wtime(100); TRISIO = 0b11111001; GPIO = 0; while(1){ //SONG DATA---------------------------- tempocont = 120; // FL HA L8 AL L8 C L8 F L8 CL HG L8 EL L8 GL L8 C L8 // DL HF L8 FL L8 AL L8 D L8 AL HE L8 CL L8 EL L8 AL L8 // A$L HD L8 DL L8 FL L8 A$L L8 FL HC L8 AL L8 CL L8 FL L8 // A$L HD L8 FL L8 GL L8 DL L8 CL HE L8 EL L8 GL L8 C L8 // // FL HFH L8 AL L8 C HA L8 F L8 CL HCH L8 EL L8 GL HA$ L8 C L8 // DL HA L8 FL L8 AL HF L8 D L8 AL HA L8 CL L8 EL HG L8 AL L8 // A$L HF L8 DL L8 FL HD L8 A$L L8 FL HF L8 AL L8 CL HCH L8 FL L8 // A$L HA$ L8 FL L8 GL HDH L8 DL L8 CL HFH L8 EL L8 GL L8 C HEH L8 // FL HF L8 HE L8 AL HF L8 HFL L8 CL HE L8 HC L8 A$L HGL L8 HAL L8 // DL HFL L8 HF L8 FL HE L8 HD L8 AL HE L8 HA L8 GL HCH L8 HDH L8 // FL HA$ L8 HA L8 DL HG L8 HA$ L8 FL HA L8 HG L8 AL HF L8 HE L8 // GL HD L8 HC L8 FL HA$L L8 HD L8 EL HC L8 HD L8 GL HC L8 HA$L L8 // FL HF L4 AL HA L4 C HG L4 A$L L4 // AL L4 DL HF L4 FL HA L4 GL L4 // FL HDH L4 DL L4 DL HCH L4 AL L4 // GL HF L4 FL HA$ L4 EL HG L4 GL HCH L4 // R HR L8 } }