【转】声音处理

http://www.cocoachina.com/bbs/read.php?tid-42355-page-e-fpage-45.html

最近要搞一个合成一个钢琴的application, 虽然在google code 找到了 一个叫mobilesynth的例子,但是总是和心里想的那种钢琴声音相差距离,请问个位大大,有没有一些合成模拟声音的例子呢?
有经验的大大可以讨论下吗

 

之前在论坛上看过一个类似的程序,名字叫FingerPiano,你可以试一下里面的音频文件。
http://www.cocoachina.com/bbs/read.php?tid-15712-keyword-FingerPiano.html

//*************************************************** too professional too expensive

要做合成声音的话有个音频引擎支持iPhone OS,叫FMOD,  功能强大音频/MIDI都可以.  免费使用,但如果你的app单价卖5美金以上它就要收费。

但iOS 4.2貌似会增加Core MIDI,不知道包不包括合成器,要是官方SDK原生支持就最好了。



FMOD简介



fmod Ex 声音系统是为游戏开发者准备的革命性音频引擎。目前最新版本是FMOD Ex,算作是FMOD 4吧。你也可以在FMOD的官网上下载到FMOD 3。如今采用了FMOD作为音频引擎的游戏包括Far Cry(孤岛惊魂)、Tom Clancy's Ghost Recon(幽灵行动),甚至著名的World Of Warcraft(魔兽争霸)。(发现这些游戏名翻译的真好⋯⋯)





Part I 支持平台

五花八门的音效Feature当然不用说了,令我眼前一亮的还有它对多个平台的支持。在FMod Ex附带的文档中,列举了10个平台:



Microsoft Windows series. 

Microsoft Windows series 64bit. (AMD64) 

Linux 

Linux 64bit. (AMD64) 

Macintosh. OS8 / 9 / X and OSX for x86. 

Sony PlayStation 2 

Microsoft Xbox 

Nintendo Gamecube 

Sony Playstation Portable. 

Microsoft Xbox 360. 

基本上能想到的这里都齐了。引用FMod的原话——“No other game audio library can claim to match anywhere near that many platforms!(没有一个游戏音频库敢于宣布自己能够完美支持这么多平台啦!)”不过有一点我觉得好笑,在这之后FMod的文档是这么写的:



fmod Ex also has support for the following platforms coming soon. 

PlayStation 3. 

Nintendo Revolution. 

但是官网上直接就把他们列为第11、12个平台了⋯⋯算了咱也不要太咬文嚼字。



Part II 使用许可(License)

只要不是用于商业用途就可以免费使用FMod/*其实这是个很聪明的做法*/,但如果是商业用途则有不同的付费方式。就如FMod-DmWiki上的评论所说——“FMod has a more complicated licensing structure than other API's due to its professional nature.(介于FMod的专业特性,FMod比其他API应用拥有更为复杂的许可证制度)”。



假如你的最终应用程序售价低于每份5美元,那么需要支付“$100 per title, per platform”,也就是说,无论你的程序卖出多少份,只需要针对每个平台支付100美金。然而随着开发者的专业化程度提高,所需支付的FMod版权费也跟着上升。别忘了,100美金只是针对5美元的小Case,一般的大型游戏需要为使用Fmod支付1000到4000美金“per platform, per title”的费用。实际上,假如你决定使用FMod Ex作为你的大型应用的音频引擎,无论平台是什么,都要支付4000美金。



另外有一点你要知道,无论购买了什么样的License,你的应用中总有一个地方要注明FMod的版权信息。



Part III 特性(Feature List)

fmod Ex提供的特性列表很长,大部分我直接翻译过来了。



简化了API 

以前我们可能会针对采样、流或者CD音频使用不同的API,但是现在这一切都被一个“Sound”函数所取代。任何形式的声音,例如mod、midi、wav等都可以被这个API平滑地调用。





虚拟频道(Virtual Channels) 

虚拟频道允许在有限的软硬件条件下使用数以千计的声道。声音可以根据3D距离和彼此优先级进行切换。





插件设计(Plug-in System) 

新的音频格式、输出模式和编码器都将以DLL文件提供给用户下载和添加到系统中。其中也包括了对VST(Virtual Studio Technology)效果器和Winamp DSP(Digital Singnal Processor)插件的支持。//就是说,它的扩展性很好





数字CD回放(Digital CD Playback) 

数字CDDA回放时允许使用DSP特效(dsp effects)、频谱分析(spectrum analysis)和音轨抓取(ripping)等,就好像回放一个PCM(Pulse Code Modulation:脉码调制录音,模拟信号——脉冲——数字信号1、0)文件一样。





同时支持多个声卡 

初始化多个“System”对象就行了。





支持多路输出(Multi-speaker output) 

如今Fmod已经完全成为一个多声道混音器(a full multichannel mixer)。2D声音可以用5.1甚至7.1的形式播放。声音可以交换彼此分配到的声道,举个例子,一个3D立体声的左右声道可以相互交换、混音或是全都通过左扬声器播放出来。Fmod可以实现这一特性是由于它支持pan matrices(低音矩阵?泛矩阵?)。任何输入声音频道都可以被重定向到任意输出扬声器,并且支持紧接着的这个百分比层,因此可以说没有一个绝对的扬声器分配方案。这句话我不是很理解,原文是:The way this is available is FMOD supports pan matrices. Any input sound channel can be redirected to any output speaker, and on top of this percentages/fractional levels are supported, so there are no absolute speaker assignments.



为了满足高端音效设备,FMod借助ASIO(Audio Stream Input Output,音频设备零延迟)功能,目前已支持多达16个输出通道的完全多通话线路输出(multichannel output)。





支持多路输入(Multi-speaker input) 

例如Fmod支持多波段wav(multichannel wavs)、ogg和FSB文件的5.1音乐播放。





支持低延迟录音 

FMOD Ex 如今支持相当低延迟的录音,通过一种新型录音引擎来进行这些处理和输出。通过ASIO实现的“录音->DSP->回放”延迟可以降低到1-3ms。这对于录音的实时处理和回放都有莫大好处。





增强网络特性 

网络音频流。包括自定义网络流编码,它能够无缝支持Shout and Broadcast、Icecast(网络流式广播服务器/网络电台服务器)和HTTP流。





下载能力。Fmod中支持网络文件的组件有另一个功能就是支持下载。甚至可以从互联网上装载静音采样(static samples)。





语音交谈。在以后的版本中,将为网络实时语音会话提供服务器到客户端语音聊天支持。



支持文件类型 

FMOD目前支持很多音频文件格式。



DLS - (DownLoadable Sound format可作为midi回放,也可以单独使用。) 

M3U - (playlist, 播放列表格式,记录了许多到其他音频文件的链接。使用FMOD EX的标记API获取文件。) 

ASX - (同上) 

WAX - (同上) 

PLS - (同上) 

AIFF - (Audio Interchange File Format) 

ASF - (Advanced Streaming format,同时也支持视频流中的音频轨迹。) 

FLAC - (Lossless compression codec,无损压缩编解码器) 

FSB - (用FSBank和FMOD设计工具生成的FMOD采样库:FMOD Sample Bank) 

IT - (Impulse tracker sequenced mod format. FMOD Ex also fully supports resonant filters in .IT files, and the per channel or per instrument echo effect send, that can be enabled in ModPlug Tracker. This is cross platform effect support and does not require DirectX like other libraries do.) 

MOD - (Protracker / Fasttracker and others sequenced mod format) 

MP2 - (MPEG I/II Layer 2) 

MP3 - (MPEG I/II Layer 3, including VBR support) 

OGG - (Ogg Vorbis format) 

RAW - (Raw file format support. 用户可以指定频道数量、bitdepth和所用格式等。) 

S3M - (ScreamTracker 3 sequenced mod format) 

WAV - (Microsoft Wave files, inlcluding compressed wavs. PCM, MP3 and IMA ADPCM compressed wav files are supported across all platforms in FMOD Ex, and other compression formats are supported via windows codecs on that platform). 

WMA - (Windows Media Audio format) 

XM - (FastTracker 2 sequenced format) 

VAG - (PS2 / PSP only) 

XMA - (Xbox 360 only) 

因为Fmod支持新文件格式的插件,所以可以认为Fmod能够支持的文件格式是无限的。注意,FMOD Ex不支持ACC,因为ACC所需的唯一引用文件是GPL,但FMOD Ex中没有GPL保护代码。为了支持这种格式,用户需要自行添加插件。





声音写输出 

所有的输出都可以写入wav文件。如果使用编码插件,它还能够实时地编码为mp3或者其他文件格式。





采样精确寻址 

多数系统寻址时采用密集块分界线,例如mp3解码时每次采样块大小为1152。而FMOD Ex支持精确的采样寻址和译码,比如说你可以一下子准确地找到采样偏移1000000的位置进行解码,也可以精确地对音频的1个采样(?,原文是:1 sample of audio)进行解码。





增强的流引擎 

一种新型的低延迟流解码器能够在运行时将解码负担分散开去,而不是doing it in chunks (cpu spikes!)/*看不懂⋯⋯*/。这意味着游戏将拥有更平滑的帧频。





增强的采样格式支持 

包括对24位、32位整型和32位IEEE浮点采样支持,还有对超立体声的支持(more than stereo support)。Wav、ogg或者用户自创的超立体声采样可以获得相应支持。8个声道以上的声音都可以自然地播放。





增强的混音引擎 

增强了输出声道支持

多数系统仅支持混音输出到单声道(mono)或是立体声(stereo)。FMOD Ex允许混音输出到任意数量的声道。例如,6声道输出(带低音)可以用5.1或是杜比数码(Dolby digital,多通道音频格式)方式进行3D音效实时输出。立体声和5.1都被优化为特殊快速通道格式(special case fast-path)。





基于混音引擎的完全DSP网络数据流

新的混音程序分隔开重采样、混音和特效库(resample/mix/effects stages)。它是个基于多输入/输出DSP引擎的异常复杂节点。它支持子混音、*****音和更高级的发声者定位和选择操作。





高质量混音

All mixing is floating point with full 32bit interpolation. 



它所支持的重采样模式包括:

o No interpolation(无样条)

o Linear interpolation(线性样条)

o Cubic interpolation(三次样条)

o 5 point spline interpolation!(5点样条插值)

All resampling is done with true 32bit precision using a 32bit fractional, it is not downscaled or compromised in any way.



音量倾斜(Volume ramping)

音量倾斜作为一个标准存在系统中。立体音量倾斜支持在无“click”杂音的情况下自然调节。(Cubic volume ramps may be supported for crisper volume changes without clicks.) 



增强的3D音效 

支持每个声音的对数和线性rolloff模型。 

几何API. 音频实现中一个革命性的进步是FMOD Ex对用户几何引擎的支持。因此几何场景可以加入到FMOD中,而FMOD可以自动计算用户在世界中行动时遇到的障碍和闭塞(obstraction/occlusion)。 

支持多个监听,包括为了分隔场景引入的多个3D监听。 

真实音速(Real speed of sound)将调节远方的声音传到你耳中的延迟时间。它可以根据用户喜好进行开关。(即将实现) 

为软件混合的3D声音提供ITD(Inter-aural Time Delay,耳间时间延迟)(例如左声道和右声道的声音将各自延迟以制造空间感) 

立体声采样或者多声道采样可以在3D中定位,它们的组成声道也可以在3D空间中定位,并由用户自行配置。 

自定义回放延迟 

可以使用“setDelay”函数设定声音将在启动后多长时间才开始播放(samples or ms)。可以在初始化和启动声道的时候调用它。





MIDI支持 

FMOD Ex拥有它自己的软件midi回放功能,因此midi回放是跨平台工作的。

Patch sets / DLS banks have to currently be provided with the song, or FMOD Ex will take advantage of any found in the operating system. 





Stitching / sentencing (无缝接合?) 

Seamless stitching, for sounds allows one sound to end then another starts immediately afterwards without gaps. This is great for commentary or interactive music. 





基于特效的软件(Built in software based special effects.) 

FMOD Ex提供了一整套特效,并且可以用于任何FMOD所支持的操作系统。下列是默认提供的一些特效,更多的效果可以通过插件来添加。 

Oscillators(振荡器)- sine, square, saw up, saw down, triangle and noise wave oscillators. 

2 Low-pass(低通滤波器) with resonance filters. 

High-pass with resonance. 

2 Echo filters. 

Flange. 

Distortion.(扭曲) 

Normalizer. (标准化) 

Parametric EQ. 

Realtime pitch shifter (changes pitch not playback speed) 

Chorus. (合唱) 

Reverb. (混响) 

频道组和子混音(Channel groups and submixing) 

频道组可以创建多声道组并把声道分配到这些组。因此各种命令可以传递给整个组,例如音量控制、弱音(mute)、频率、暂停等。你可以使用频道组来控制主音量,多频道组可以用于多主音量控制,因此对于游戏中GUI相关音量的控制,或是采用了特效的音乐都很有帮助。这一特性使得允许音频层次控制拥有良好的扩展性(flexibility)。



子混音可以针对某个频道组进行特效处理,而不影响其他频道。这个优势可以大大降低CPU的使用率,或是在一些声音使用了DSP效果的时候,隔离出其他声音来。(keeping some sounds dry)





增强的回叫信号(callback)支持 

为回放设计了“latency adjusted”和“real-time”标记。这样你就可以在混音或是audible的时候调用回放。这两者是不同的,取决于混音缓冲区大小决定的时间长度。(This means you can get a callback at mix time, or audible time)



sample accurate user timer callbacks (ms or sample based) for global or per channel 

Part IV 使用FMOD的优缺点

优点:



免费: 如果你不打算用你的游戏或程序来赚钱,那么FMod是免费的。



卓越的支持: FMod布告版上的资源很多,提出的问题也能很快得到解答。



专业开发工具: FMod作为一个专业产品被使用了好多年,因此它的库文件是稳定和成熟的。



文件支持: FMod提供了对所有通用音频文件的良好支持。这意味着你可以方便地添加声音文件到你的应用中,而不需要考虑手工解码的问题。 

缺点:



许可证费用: 随着FMod的使用程度增加,所需支付的许可证费用也飞速增长。在使用FMod以前要仔细考虑好你需要为使用这个产品支付多少许可证费用。



只有官方版本: FMod不是开源软件,这意味着对一个开发者来说,你只能等待下一个SDK的发行来修正现有产品的Bug。 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lara_dong/archive/2005/12/15/552713.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值