UE4与FMod音乐可视化验证

制作音游的一个重要步骤,就是验证引擎的相关技术特性,以此来决定是否更换引擎或者更改设计。

当前UE版本4.7.6;FMod版本1.06.02;

由于需要播放用户提供的音乐文件,所以需要读取用户设备上的文件。在翻阅文档之后,发现可以使用PlatformFileManager读取外部文件相关信息,同时也有获取目录信息的相关接口。

通过上面的代码,成功获得文件大小。外部文件相关验证完成。

接下来就是音乐播放相关的实现了,FMod在UE4上有插件实现。基本可以满足使用需求。

下载并将FMod插件解压到UE4目录之后,首先在项目的*.Build.cs中添加下面的代码

这样一来在需要使用到FMod地方进行文件包含就不会遇到报错了

如果在编译时遇到LNK1181之类的编译错误,建议按照提示查找FMod插件中是否提供了对应的Lib文件。如果没有的话可能需要重新编译插件或者使用更早期有提供的版本。

使用FMod底层API的第一步是得到一个底层的API System,根据使用方式的不同有两条路径。

获取插件系统

适合与EndPlay和BeginPlay之类的事件挂钩进行使用。不需要自主使用update,插件内部已经有更新机制了。

自主创建系统

适合配合单例模式使用,和插件建立的系统相对独立。不过依然不需要自己进行update操作。与直接获取不同的是,需要自己进行初始化操作。

系统创建之后,音乐播放使用createsound即可

要对音乐进行可视化,最基础的数据获取方式是对音乐进行快速傅里叶变换(FFT)。FMod本身有提供FFT的功能,因此直接使用即可,无需再造车轮。FMod提供的FFT是DSP的一种,可以加载在Channel、ChannelGroup、ChannelControl上。这里,我们选择在系统创建并初始化之后直接加载到ChannelGroup上。

在每一次Ontick时进行FFT数据的获取:

开始播放之后就可以看到fft数据已经正常输出了。

为了方便对fft的数据进行解析,需要获得采样率。

这样基本上音乐数据一块的验证就完成了。

|
本博客所有内容遵循CC BY-NC-SA 4.0协议, 如有转载,请注明出处。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">