#include #include int i,j,d1,fg; char ss[25],sn[3]; double hf,on,fn,gs; main(){ sn[2]=0; strcpy(ss,"C C#D EbE F F#G G#A BbB "); hf=pow(2.0,1.0/12.0); fg=0; disp(); fg=1; disp(); } disp(){ for(i=0;i<73;i++){ sn[0]=ss[2*(i%12)]; sn[1]=ss[2*(i%12)+1]; if(fg==0) printf("\n[%s%d /%d] ",sn,1+(i/12),i+24); if(i<36) on=440.0/pow(2.0,(double)(3-i/12)); else if(i>47) on=440.0*pow(2.0,(double)(i/12-3)); else on=440.0; j=i%12; if(j<9) fn=on/pow(hf,(double)(9-j)); else if(j>9) fn=on*pow(hf,(double)(j-9)); else fn=on; if(fg==0) printf("%10.5fHz --> ",fn); d1=(int)(fn*256.0/39.0625); gs=39.0625*(double)d1/256.0; if(fg==0) printf("%04x (%8.3fHz) ",d1,gs); if(fg!=0){ if((i%8)==0) printf("\n\t.data.w\t"); printf("%d,",d1); } } }