在C ++中使用FMOD实时创建和播放声音。 (UE4)

时间:2016-01-18 22:12:28

标签: c++ audio unreal-engine4 fmod

浏览所有API文档,我可以看到如何创建程序音频,但是一旦创建了音频文件,我希望它能够在一个对象上播放,但从我可以看出,我相信我需要它来播放使用该函数调用UE4插件中的PlayEventAtLocation,这意味着我需要将声音发送到事件中。

我曾经在Unity 4.x中安装了我的设置。我想在游戏中动态构建一个wav文件并播放它。我的想法是在整个地图上都有静音,然后播放静音。在范围内的播放器将自行决定从该静音音频源捕获音频。

这个想法是你有一个在游戏中播放的wav文件,在任何给定的时间我都可以从缓冲区当前的位置开始抓取数据,直到我决定停止。我获取了我在这个新缓冲区中创建的所有数据,并用它创建了一个新的wav文件。

示例,就像一个20秒的文件,但我会在5秒钟内获取一个7秒的音频片段。所以我的新音频文件将是5到12.我认为你可以在FMOD中做类似的事情,因为我已经看过录音示例和无间隙播放示例等,它似乎具有相同的功能和访问权限来寻找文件。

现在我需要将这个在游戏中制作的新文件迁移到UE4会使用的东西。在FMOD中,查看插件文件中的.h和.cpp文件,我看到接受Fmod事件只是为了附加到UObject。由于我没有在FMOD Studio中创建活动,因此我无法使用这些活动。 createSound的声音是什么?是一个wav?和fsb?我只是一个声音,并且不知道它是什么格式。

我无法使用设计师来制作这种声音,因为它在播放过程中的任何给定时间都依赖于播放器。

在Unity中,我所做的是访问音频文件的缓冲区,在任何给定时间从缓冲区中提取数据,然后放入新的缓冲区,然后我将其转换为文件。在提取数据时,我会检查声音文件的缓冲区大小和频率,以确保我有无间隙播放。 (不完美,但非常接近),我将使用Unity中的音频功能将我的数据数组转换为可用的音频片段并通过声音发射器运行。这很不错。因为我会保持原始的wav文件静音,但循环。所以玩家永远不知道他们捕获了什么。真的很棒。

由于UE4不允许访问未压缩的PCM数据,因此我无法在UE4中执行此低级数据操作。我不得不使用FMOD,但它证明同样困难,因为它没有记录,或缺乏我想要的功能。我需要帮助。

如果在createsound中创建的数据只是普通的pcm wav文件数据,那么我可以使用标准的AudioComponent,只需将其保存到文件中,然后从UE4中将其拉入。如果是,那么我需要把它变成一个事件,这样我就可以使用FMOD插件库中的FMODPlayEventAttached。

我已在不同地点发布了一些其他一切都保持沉默的帖子。任何评论将不胜感激。我知道我最近几天在FMOD上阅读了很多文档,但是如果人们想让我指向一个更好的方向,或者你有什么需要补充的话,我仍然可能会错过任何一些文章。

谢谢大家。我希望我的描述性足够。

0 个答案:

没有答案