我希望有一个 Atmel 1284P 微控制器解析存储在 SD 卡上的 MIDI 文件并激活螺线管来播放音乐。我正在尝试将整个 MIDI 文件保存到缓冲区中。据我了解,整个 MIDI 文件最终是一系列命令/数据和其他字节。因此,我认为我可以使用带有“read byte”参数的 c++“fopen”方法来读取文件。但是,它只返回文件的前四个字节(标头的 MTHD 部分)。我可以使用 C++ MIDI 库,但老实说我对此很好奇。这是输出:
MThd
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* midiFile;
midiFile = fopen("C:/Users/Preston/Desktop/cantina.mid","rb");
char* buffer;
long lsize;
size_t result;
fseek(midiFile,0,SEEK_END );
lsize=ftell(midiFile);
rewind(midiFile);
buffer = (char*) malloc(sizeof(char)*lsize);
result = fread(buffer, 1, lsize, midiFile);
printf(buffer);
fclose(midiFile);
}