2016-04-08 21 views
0

Anahtar girdiğimde ses çıkaran bir program yapmak istiyorum.Programlamada dijital piyano (Bip fonksiyonunu kullanma)

süreci bu gibi -> txt dosyasından anahtar & frekans ilgili verileri almak ve dizi bu verileri depolar. Sonra, yaptığım 'findFrequency' ve 'playpiano' işlevlerini kullanarak, bir anahtar girdiğimde ses çıkarmak istiyorum.

yaptığım kod şu şekildedir:

#include <stdio.h> 
#include <windows.h> 
#include <stdbool.h> 

#define NUM_NOTES 8 

char key_table[NUM_NOTES]; 
float freq_table[NUM_NOTES]; 

float findFrequency(const char note); 
void playpiano(void); 

void main() 
{ 
FILE *input_file = fopen("digitalpiano.txt", "r"); 

int num_keys; 
fscanf(input_file, "%d\n", &num_keys); 

printf("%d\n", num_keys); 

for (int i = 0; i < NUM_NOTES; i++) 
{ 
    char key; // I think I can delete this code 
    float freq; // I think I can delete this code 

    fscanf(input_file, "%c %f\n", &key_table[i], &freq_table[i]); 
    printf("%c %.3f\n", key_table[i], freq_table[i]); 

} 

fclose(input_file); 

while (true) 
    playpiano; 

} 


float findFrequency(char note) 
{ 
for (int i = 0; i < NUM_NOTES; i++) 
{ 
    if (key_table[i] == note) return freq_table[i]; 
} 
return 0.0f; 
} 

void playpiano(void) 
{ 
char ch = getch(); 
Beep(findFrequency(ch), 500); 

return; 
} 

Ama bu kodu başlattığınızda, ben txt dosyasından bir verileri gösterebilir. Ama bir tuşa girdiğimde, herhangi bir ses var, bu yüzden hiçbir şey duyamıyorum.

Ve digitalpiano.txt dosya şu şekildedir:

8 
a 261.626 
s 293.665 
d 329.628 
f 349.228 
g 391.995 
h 440.000 
j 493.883 
k 523.251 

cevap

1

Sen playpiano arayarak değildir; parantezleri eklemeniz gerekir: playpiano();.

İlgili konular