0
鍵を入力したときに音を出すプログラムを作りたい。cプログラミングでデジタルピアノ(ビープ音機能を使用)
このようなプロセスは、データをキー&の .txtファイルから取得し、そのデータを配列に格納します。そして、私が作った関数 'findFrequency'と 'playpiano'を使って、キーを入力したときに音を出したい。
私が作ったコードは次のようである:
#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;
}
しかし、私はこのコードを起動したとき、私はtxtファイルからのデータを表示することができます。しかし、私がキーを入力したときには何の音もないので、何も聞こえません。
そしてdigitalpiano.txtファイルは、このようなものです:
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