#include <stdio.h>
#include <math.h>

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<128;i++){
		sn[0]=ss[2*(i%12)];
		sn[1]=ss[2*(i%12)+1];
		if(fg==0) printf("\n[%s%d /%d] ",sn,(i/12)-1,i);
		if(i<60) on=440.0/pow(2.0,(double)(5-i/12));
		else if(i>71) on=440.0*pow(2.0,(double)(i/12-5));
		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/95.36743164);
		gs=95.36743164*(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);
		}
	}
}
