文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院工具软件媒体播放MIDI文件结构分析及生成方法
精品推荐
特别推荐
·卡拉当然OK 录制自己的专辑
·Windows Media Player11使用技巧
·制作有真人视频讲解的幻灯片
·购机必看:主流MP4播放器视频转换全攻略
·Winamp使用指南
·将录像带转为VCD进行保存
·KMPlayer常见问题及解决方法整理
·Nero超刻的详细方法
·KMplayer播放技巧22则
·Windows Media Player专题问答
·用Nero制作音视频光盘
·暴风影音新酷技巧串串烧
·MPEG、RM、WMV电影文件格式转换指南
·APE变成高品质MP3音乐 转换工具介绍
·网络电台DIY
·3GP手机视频转换工具WinAVI
·视频下载不求人 突破封锁保存各类视频资源
·酷我音乐盒独家秘籍偷偷报
·巧设置RealPlayer工作到最佳状态
·轻松化解RealPlayer各种常见问题
热点TOP10
·p8:电影还是边下边看的好
·3GP手机视频转换工具WinAVI
·MPEG、RM、WMV电影文件格式转换指南
·认识MPEG视频压缩标准及相关编码格式
·卡拉当然OK 录制自己的专辑
·转换MP4/3GP格式的至尊法宝---MP4/RM转换专家
·Nero超刻的详细方法
·视频下载不求人 突破封锁保存各类视频资源
·DVD转换MPEG-4三部曲之一
·将你的VP6影片播放出来
·四大网络视频压缩技术大比拼
·亲手打造自动播放的郭德纲相声盘
·APE变成高品质MP3音乐 转换工具介绍
·轻松听歌千千静听技巧十七招
·用Nero制作音视频光盘
·趣味变声软件——AV VCS
·RM,RMVB转VCD全功略
·音量控制 随心所欲
·将VCD转换成RM格式转换就这么简单
·实战RM音频转MP3

MIDI文件结构分析及生成方法

日期:2005年5月2日 作者:清风网络学院 查看:[大字体 中字体 小字体]


  int MIDI::ChangeTextToMidi(char *TextFileName,
  char *MidiFileName)
  { int tracks,ntrack,delaytime;
  int speed,IsFirst,nn,dd;
  unsigned char buf[80],*msgbuf,c;
  FILE *TextFp,*MidiFp;
  long FileSize;
  char SpeedVal;
  TextFp=fopen(TextFileName,"r");
  if (TextFp==NULL)
  {sprintf(ErrorMsg,
  "文本文件[%s]不能打开。\n",TextFileName);
   return(TextFileNotOpen);
   }
  fseek(TextFp,0,SEEK_END); /*测试文件大小*/
  FileSize=ftell(TextFp);
  TextFileBuf=(char *)malloc(FileSize);/*为文件分配内存*/
  if (TextFileBuf==NULL)
  { sprintf(ErrorMsg,
  "文本文件[%s]太大,没有足够的内存处理。\n",
  TextFileName);
   fclose(TextFp);
   return(TextFileToBig);
  }
  memset(TextFileBuf,0,FileSize);
  MidiFileBuf=(char *) malloc(FileSize*4);
  if ( MidiFileBuf==NULL)
  { sprintf(ErrorMsg,"不能为MIDI文件分配内存。\n");
  fclose(TextFp);
  free(TextFileBuf);
  return(MallocError);
  }
  MidiFp=fopen(MidiFileName,"wb");
  if (MidiFp==NULL)
   { sprintf(ErrorMsg,
  "Midi文件[%s]不能建立。\n",MidiFileName);
   fclose(TextFp);
   free(MidiFileBuf);
   free(TextFileBuf);
   return(MidiFileCanNotCreate);
   }
  MidiFileOldBuf=MidiFileBuf;
  TextFileOldBuf=TextFileBuf;
  fseek(TextFp,0,SEEK_SET);
  fread(TextFileBuf,FileSize,1,TextFp);
  fclose(TextFp);
  JumpNullChar(TextFileBuf);
  c=strnicmp(TextFileBuf,"[MIDI]",6);
  if (c)
  {sprintf(ErrorMsg,
  "文本文件[%s]不是MIDI文本文件。\n",MidiFileName);
  fcloseall();
  free(TextFileOldBuf);
  free(MidiFileOldBuf);
  return(NotMIDITextFile);
  }
  TextFileBuf+=6;
  JumpNullChar(TextFileBuf);
  sscanf(TextFileBuf,"%c,%d/%d,%d,%d", //取调号等信息
  &c,&nn,&dd,&speed,&tracks);
  buf[0]=c;buf[1]=0; SetOneVal(buf); //设置该调1的键值
  if (nn<1 || nn> 7) nn=4;
  if (dd<2 || dd>16) dd=4;
  while(*TextFileBuf!='\n') TextFileBuf++;
  JumpNullChar(TextFileBuf);
  if (speed<60 || speed >200) speed=120;
  JumpNullChar(TextFileBuf);
  if (tracks<1 || tracks>16) tracks=1;
  JumpNullChar(TextFileBuf);
  ntrack=1;
  WriteMHToFile(6,1,tracks,speed,MidiFp);
  WriteTimeSignature(nn,dd); //设置时间记录格式
  SetPaiNum(nn);
  WriteSpeed(speed); //设置演奏速度
  while(ntrack<=tracks && *TextFileBuf!=0)
  {sprintf(buf,"[%d]",ntrack);
  TextFileBuf=strstr(TextFileBuf,buf);//查找该磁道起始位置
  if (TextFileBuf==NULL) //没有找到
  { sprintf(ErrorMsg,
  "在文件[%s]中,第%d磁道音乐信息没找到。\n.",

上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 




上一篇:EMS图片格式转换(Java)程序

下一篇:利用手机模块实现短消息(一)

MIDI文件结构分析及生成方法 相关文章:
·女性自慰方法大搜查
·电脑提速的新方法
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·GHOST使用方法(图解)
·局域网文件共享详解
·C++中的文件输入/输出(4):检测输入/输出的状态标志
·水晶图片制作方法
·MPEG、RM、WMV电影文件格式转换指南
·配置Catalyst交换端口分析器(SPAN)
·QQ挂号升级方法
MIDI文件结构分析及生成方法 相关软件:
·AUTOCAD2004序列号生成器
·最强文件加密锁2007
·3D 动画与建模:人体的综合与分析技术
·西门子plc软件及教程 文件类型 其它介绍
·现代企业领导艺术与方法
·注册表结构
·文件夹加密器V9.6
·2005年一级注册结构工程师考试钢结构辅导课件
·资产评估学课件第二章资产评估的基本方法(二)
·ISO9000内审全套文件

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot