栏目搜索
 
 
 
 
你的位置:首页 > 移动开发 > 在Pocket PC上编写游戏之十 >
 

在Pocket PC上编写游戏之十

发布者:[本站编辑] | 来源:[]

在Pocket PC上编写游戏之十_电脑维修资料库


  现在有一些标准类型的数字音乐。例如,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、使用定时器的控制节拍。

  现在,让我们看下面的代码。

<souce lising one - mbasic music decoder>
static byte *pmusicstream;
static int nmusicpos;
static nnoteperoid;
static nnoteoctep;

static int chtoi(char ch)
{
 return ch - '0';
}

void playmusic(void)
{
 switch(pmusicstream)
 {
  case 'l': // tempo
   ntempo = chtoi(pmusicstream);
   nmusicpos++;
   break;
  case 'o': // octep
   noctep = chtoi(pmusicstream);
   nmusicpos++;
   break;
  case 'c': // note
  case 'd':
  case 'e':
  case 'f':
  case 'g':
  case 'a':
  case 'b':
   note_no = pmusicstream - 'c';

   if(isdigit(pmusicstream))
   {
    tempo1 = chtoi(pmusicstream);
    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(...) - 停止播放音乐




zmbbs=1;</t

 
 
  推荐文章
 
     暂无
 
 
  随机资讯
 
     暂无