使用c++将MIDI数据保存到缓冲区
Saving MIDI data to a buffer Using C++
我希望有一个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);
}
MTHD之后的第一个字节是0,因此printf将只打印MTHD
,因为C字符串以零字节结束。如果要打印MIDI文件的内容,则需要将文件的字节转换为十六进制。
相关文章:
- C++字符*缓冲区的大小
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- 将图像魔术 blob 保存到节点缓冲区
- 填充和保存线程之间的共享缓冲区
- 用于保存按下的键的动态缓冲区 - c++
- 将图像缓冲区保存到Android上的文件
- 如何将视频帧保存到缓冲区中
- 协议缓冲区;将数据保存到磁盘并重新加载问题
- 分配字符缓冲区以保存浮点的文本表示形式
- 如何保存和恢复 std::istringstream 的缓冲区?
- 为什么我的缓冲区在多次读取()后会保存相同的数据
- 使用c++将MIDI数据保存到缓冲区
- 如何从RGBA格式保存图像的缓冲区中创建opencv中的图像
- C++ 从 txt 文件中读取并将"|"之前的所有内容保存在缓冲区中
- 为什么缓冲区的末尾和保存的帧指针之间有8个字节