next up previous contents
Next: B.4 プログラムリスト: mods.c Up: 付録B 音符の数値化と量子化のプログラム Previous: B.2 プログラムリスト: dat3.c

B.3 プログラムリスト: dat4.c

  1: #include <stdio.h>
  2: #include <stdlib.h>
  3: #include <math.h>
  4: 
  5: #define fl(x) log2(x)/5+1
  6: 
  7: main(){
  8:   int i;
  9:   double l,p;
 10:   char s[20];
 11:   while(gets(s)!=NULL){
 12:     i=0;
 13:     l=1/(double)(s[i]-'0');
 14:     if(s[i+1]=='.'){
 15:       l*=1.5;
 16:       i++;
 17:     }
 18:     i++;
 19:     switch(s[i]){
 20:     case 'c':
 21:       p=13.0;
 22:       break;
 23:     case 'd':
 24:       p=15.0;
 25:       break;
 26:     case 'e':
 27:       p=17.0;
 28:       break;
 29:     case 'f':
 30:       p=18.0;
 31:       break;
 32:     case 'g':
 33:       p=20.0;
 34:       break;
 35:     case 'a':
 36:       p=22.0;
 37:       break;
 38:     case 'b':
 39:       p=24.0;
 40:       break;
 41:     case 'C':
 42:       p=25.0;
 43:       break;
 44:     case 'D':
 45:       p=27.0;
 46:       break;
 47:     case 'E':
 48:       p=29.0;
 49:       break;
 50:     case 'F':
 51:       p=30.0;
 52:       break;
 53:     case 'G':
 54:       p=32.0;
 55:       break;
 56:     case 'A':
 57:       p=34.0;
 58:       break;
 59:     case 'B':
 60:       p=36.0;
 61:       break;
 62:     }
 63:     if(s[i+1]=='1'){
 64:       p-=12;
 65:       i++;
 66:     }
 67:     switch(s[i+1]){
 68:     case '#':
 69:       p+=1.0;
 70:       break;
 71:     case 'f':
 72:       p-=1.0;
 73:       break;
 74:     }
 75:     p/=40.0;
 76:     printf("%lf %lf\n",fl(l),p);
 77:   }
 78: }


Deguchi Toshinori
1999年03月23日 (火) 15時43分49秒 JST