Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
Windows CE上的声音处理
来源:http://dev.yesky.com   作者:
字体大小:[大][中][小]


  现在有一些标准类型的数字音乐。例如,WAV,MP3,MIDI,MOD等等。每种音乐在技术上只有些细微的差别。MP3和WAV是其实是相似的,除了使用不同的记录和重放方法外就只在压缩技术略有区别。

  MIDI和MOD更是除了音源不一样以外完全一样。众所周知有两种音乐技术可以制作数字音乐。这两种方法是采样和MIDI。MIDI(Musical Instrument Ditaigal Interface)是一个缩略词表示乐器数字接口。在乐器和计算机之间它充当一个接口。在MIDI文件内, 包含了音乐序列的代码(音符,效果,节拍等等)。音序器将发送代码到声音模块生产音乐和声音。所以播放MIDI我们需要两个主要的部件,音序器和声音模块。音序器能用软件实现,声音模块通常是硬件。

  不是很清楚有没有Windows CE将此设备嵌入。一般来说如果你想在你的Windws CE设备上播放MIDI,你需要添加专用的硬件设备。采样技术是非常有趣的。如果我们记录声音(例如狗叫) 在8KHz,当我们在其他的频率下播放它,例如在6KHz。我们将听见比原始声音低一些的声音。 相反的如果我们在10KHz频率下播放它,我们将得到高一些音调的声音。因此如果从钢琴录制了一段C音符,我们几乎将播放出任何想要的音符。MOD(声道)音乐出自Amiga系统。它也使用采样技术。它带给我们的主要是,它是一种能使用纯软件播放音乐文件。在以前只有Amiga有四声道硬件音频设备。所以MOD是唯一的有四个轨道的音乐,它能同时播放四个音符。现在我们应用软件混频技术,依靠处理器的高速度我们可以将许多声道混合成一个声音。 我们可以拥有超过四个音轨,最多可以达到128轨。一个典型的MOD声音文件的组成是音效(乐器)和音乐符号(歌曲)。数字音乐支持将采样和MIDI这两种基本的重要的音乐标准技术联合使用。但是非常遗憾的是他们忘记了Windows CE系统。对Windows CE系统来说这些声音文件太大并且太复杂了。现在, 让我们回到20年以前。你还能想起下面的代码吗;Play "L1O1C1E2DGA";没错,它们是MBASIC音乐代码式样。用它为一个简单的游戏产声音乐是很简单的方法。我们不需要外部的资源。我们将试着做一个小程序来模拟MBASIC音乐。下面是对这个技术的简单描述;

  1。 编写一个规则,用来产生音调和频率。

  2。 写一个函数用来转换音乐编码流。

  3。 使用定时器的控制节拍。现在,让我们看下面的代码。

  static BYTE *pMusicStream;

  static int nMusicPos;

  static nNotePeroid;

  static nNoteOctep;

  static int chtoi(char ch)

  {

  return ch - 0;

  }

  void PlayMusic(void)

  {

  switch(pMusicStream[nMusicPos])

  {

  case L: // tempo

  nTempo = chtoi(pMusicStream[nMusicPos+1]);

  nMusicPos++;

  break;

  case O: // octep

  nOctep = chtoi(pMusicStream[nMusicPos+1]);

  nMusicPos++;

  break;

  case C: // note

  case D:

  case E:

  case F:

  case G:

  case A:

  case B:

  note_no = pMusicStream[nMusicPos] - C;

  if(isdigit(pMusicStream[nMusicPos+1]))

  {

  tempo1 = chtoi(pMusicStream[nMusicPos+1]);

  Tone(note_no,nOctep,nTempo*tempo1);

  nMusicPos++;

  }

  else

  Tone(note_no,nOctep,nTempo);

  break;

  }

  nMusicPos++;

  }

  我们甚至可以把它应用到我们的游戏中。看到了吧音乐可以这样容易的被实现。在前的章节,我已经提及关于我们的动态产生声音的函数库。这个库使用一些低级的音频API使我们能够获得有效的音乐和动态的音响效果。 更多的详细介绍放在我们的网页上. 你可以播放一首歌曲作为背景音乐。你可以使用pg_LoadMod(…)函数装载音乐并暂时保存音乐。你可以使用pg_PlayMod(…)函数播放音乐。当你装载了新的音乐先前的一个将自动地卸载由新的代替。使用pg_ModStop(…)函数你能停止播放。用什么办法创建MOD格式的音乐呢?答案是你需要一个声道音乐作曲软件。这类软件通常都是功能很强大的,但也是不容易使用的。:/解决这个问题,我们能用采样技术从MBASIC音乐流生产音乐。混合的代码是太复杂的,这样,我们将把这些特征加到我们的声音引擎。现在,下面是它的实现..... 在音乐控制方面的更深层的函数是...pg_LoadInstrument(...)- 装载声音到内存pg_LoadMusicData(...)- 保存音乐流到游戏缓冲区pg_PlayMusic(...) - 开始播放背景音乐pg_StopMusic(...) - 停止播放音乐
Upload by 小刘(2007-5-11)
IC
·VxWorks下UDP协议栈效率的研..
·基于MPC860T的嵌入式通信服务器..
·基于VxWorks嵌人式操作系统的C..
·VxWorks操作系统及实时多任务程..
·基于嵌入式操作系统VxWorks的图..
·利用VxWorks作Internet..
·linux下命令行下编译c程序
·移植U-Boot到AT91RM920..
·一种改进嵌入式Linux操作系统实时..
·Linux内核初始化及启动之用户模式..
·Linux在信息家电(IA)上的应用
·嵌入式Linux的动态扩展技术研究
·基于Linux的嵌入式POS的GUI..
·Linux嵌入式系统与硬件平台的关系
·基于嵌入式Linux的打印控制系统的..
·Linux下获得CPU利用率和内存使..
·擂台战:嵌入式Linux面临图形化挑..
·面向多媒体应用的嵌入式Linux实时..
·Linux系统内存磁盘初始化技术详细..
·Linux下的网络HOOK实现以及使..
·Linux系统下搭建C/C++开发的..
·移动电话挑战嵌入式Linux
·在嵌入式Linux上实现JFFS文件..
·基于嵌入式Linux系统界面的研究
·Linux的向“心”力运动
·支持基于Linux的USB设备的三种..
·基于ARM的嵌入式Linux开发平台
·主流嵌入式Linux动态扩展技术比较..
·嵌入Linux基于MiniGUI信息..
·蓝牙模块在HHARM2410上的移植
·基于Linux的嵌入式系统在测控系统..
·uClinux在嵌入式系统中的移植研..
·用busybox制作嵌入式Linux..
·基于uClinux的远程温度监控系统..
·uClinux内核移植相关代码分析
·linux驱动相关
·WinCE系统下BootLoader..
·Windows CE环境下无线网卡的..
·Windows CE中实现蓝牙串口驱..
·WinCE--嵌入式系统简介
IC
推荐技术文章:
IC
IC

©2007 版权归ICGLE所有   页面执行时间:62.500毫秒