当前位置: 首页 > news >正文

网站做友链有什么用明港seo公司

网站做友链有什么用,明港seo公司,做网站什么科目,深圳东门街道办事处电话在C语言中直接读取MIDI文件并不简单#xff0c;因为MIDI文件是一种包含音乐事件#xff08;如音符的开始和结束、控制信号等#xff09;的二进制格式#xff0c;而不是像文本文件那样容易解析。不过#xff0c;你可以通过以下步骤来实现#xff1a; 了解MIDI文件格式因为MIDI文件是一种包含音乐事件如音符的开始和结束、控制信号等的二进制格式而不是像文本文件那样容易解析。不过你可以通过以下步骤来实现 了解MIDI文件格式 MIDI文件有多种格式最常见的是SMF (Standard MIDI File) 格式也被称为Type 0、Type 1或Type 2。你需要了解MIDI文件的各个部分包括文件头、轨道头和轨道事件等。编写解析器 编写一个C程序来读取MIDI文件的二进制内容。首先你需要读取文件头以获取文件的整体信息如文件类型、轨道数等。然后逐个读取轨道头了解每个轨道的详细信息。接下来解析轨道中的MIDI事件这通常涉及解析时间戳和事件数据。处理MIDI事件 对于每个MIDI事件你需要解析事件数据以了解它是什么类型的事件如音符开始、音符结束、控制更改等。根据事件类型你可以执行相应的操作如播放音符、更改音量或发送其他MIDI消息。使用库 考虑到MIDI文件的复杂性你可能希望使用现有的库来帮助解析和处理MIDI文件。例如你可以查找支持C语言的MIDI库如libsmf或libmidi请注意这些库可能不存在或已过时因为MIDI文件处理在C语言中并不常见。集成到项目中 一旦你能够解析和处理MIDI文件你可以将其集成到你的C项目中。这可能涉及将MIDI事件转换为音频输出如使用MIDI输出设备或软件合成器或将MIDI数据转换为其他格式如MIDI转乐谱。测试和调试 编写测试用例来验证你的MIDI解析器是否能够正确处理各种MIDI文件。使用调试工具来查找和修复任何错误或问题。 请注意直接处理MIDI文件需要深入了解MIDI规范和相关文件格式。如果你不熟悉这些概念可能需要花费一些时间来学习它们。此外由于MIDI文件的复杂性编写一个健壮且可靠的MIDI解析器可能是一个相当复杂的任务。 如果你只是想在C语言项目中播放MIDI文件而不是解析和处理MIDI文件的内部细节那么一个更简单的方法是使用外部MIDI播放器或库来播放MIDI文件并通过命令行或API接口与你的C程序进行交互。 请先看百度百科MIDI文件格式 编写 mid_head.c 读取 midi 文件头部 #include stdio.h #include stdint.htypedef struct {char ctag[4]; // chunk_tag: MThdint32_t chunk_size;// 指定Midi的格式: 00 00单音轨; 00 01多音轨,且同步; 00 02多音轨但不同步uint16_t geshi; uint16_t tracks; // 轨道数:实际音轨数字 1个全局音轨// 指定基本时间格式类型: 类型1定义一个四分音符的tick数; // 类型2定义每秒中SMTPE帧的数量及每个SMTPE帧的ticksuint16_t ticks; char ttag[4]; // track_tag: MTrkuint8_t t_id;uint16_t track_size; } MidiHeader;uint16_t swapUint16(uint16_t shortValue){return ((shortValue 0x00FF ) 8) | ((shortValue 0xFF00)8); }int32_t swapInt32(int32_t intValue){int32_t temp 0;temp ((intValue 0x000000FF) 24) ((intValue 0x0000FF00) 8) ((intValue 0x00FF0000) 8) ((intValue 0xFF000000) 24);return temp; }int main(int argc, char *argv[]) {if (argc 2) {printf(Usage: %s filename\n, argv[0]);return 1;}const char *f1 argv[1]; // filenameFILE *file fopen(f1, rb);if (!file) {perror(Error opening file);return -1;}MidiHeader hd;if (fread(hd, sizeof(MidiHeader), 1, file) ! 1) {fclose(file);perror(Error reading file head);return -1;}// 打印读取到的数据验证读取成功printf(Chunk tag: %s\n, hd.ctag);printf(Chunk Size: %04d\n, swapInt32(hd.chunk_size));printf(geshi:%d, tracks:%d, ticks:%d\n,swapUint16(hd.geshi),swapUint16(hd.tracks),swapUint16(hd.ticks));printf(Track tag: %s\n, hd.ttag);printf(track id: %x, track Size: %d\n, hd.t_id, swapUint16(hd.track_size));if (fseek(file, swapUint16(hd.track_size)-2, 1) !0) {fclose(file);perror(Error fseek file );return -1;}char t1tag[5];if (fread(t1tag, sizeof(char), 4, file) ! 4) {fclose(file);perror(Error reading file head);return -1;}printf(track1 tag: %s\n, t1tag);uint32_t track1_size;if (fread(track1_size, sizeof(uint32_t), 1, file) ! 1) {fclose(file);perror(Error reading file head);return -1;}printf(track1 size: %d\n, swapInt32(track1_size)); fclose(file);return 0; } where gcc D:\Strawberry\c\bin\gcc.exe 编译 gcc mid_head.c -o mid_head.exe 运行 mid_head  happy_birthday.mid mid_head happy_birthday.mid Chunk tag: MThd Chunk Size: 0006 geshi:1, tracks:2, ticks:1024 Track tag: MTrk Track id: 0, Track Size: 20 Track1 tag: MTrk track1 size: 247 为了对单个几十MB的.mid 文件采样数据读取.mid 文件头部 4080 bytes  Unix 命令 head -c 4080 sample1.mid temp1.mid 运行 strings temp1.mid
http://www.yayakq.cn/news/2904/

相关文章:

  • 做公司网站建设价格低七里河微信网站建设
  • 如何将自己做的网站传到网上做建材的哪些网站
  • 电子商务网站建设 试题制作企业网站的问题
  • 买标准的网站建设上海市网站建设加盟
  • 天津做网站网页的公司室内设计学校排名
  • 网站的后台管理账号和密码wordpress 开启评论
  • wordpress 调用站外api网站开发一年费用总计
  • 怎么免费搭建属于自己的网站网站制作软件工程师
  • 网站建设语录企业网站的内容
  • 网站建设维护百家号制作网站对话框
  • 如何建设网站济南兴田德润o简介电话北京网络运营推广团队
  • 网站建设费计入销售费用的子目公司管理系统名称大全
  • 凡科网做网站贵吗网站引导页利弊
  • 网站建设免责声明简单微信小程序开发首页
  • 厦门成品网站自动编程软件
  • 一个新的网站开发语言平价网站建设
  • 移动端企业网站模板下载网站制作视频教程大全
  • 一键做单页网站免费注册网站哪个好
  • 网站克隆镜像做关键字seo常州哪些网站公司做的好
  • 基于html5的购物网站开发教师网络培训
  • 工信部网站备案文件阿里云云栖wordpress
  • 太原市建设工程招投标信息网站公众号怎么做文章
  • 本地常州网站建设百度是不是门户网站
  • 枣强网站建设培训学校班级优化大师app下载学生版
  • 国内的c2c网站有哪些wordpress缩略图幻灯片展现
  • 域名出售后被用来做非法网站免费申请手机网站
  • 沈阳快速网站建设网站开发广东公路建设有限公司官网
  • 网站seo是什么意思wordpress 引用网页
  • 360网站弹窗推广怎么做的七个php源码下载的网站
  • app客户端开发百度seo整站优化公司