问题标签 [fmod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4514 浏览

c - FFT - 在 PCM 数据上应用窗口

我目前正在尝试重现getSpectrumFMOD 音频库的功能。此函数读取当前播放缓冲区的 PCM 数据,在此数据上应用一个窗口并应用 FFT 以获取频谱。

它返回一个浮点数组,其中每个浮点数介于 0 和 1 dB ( 10.0f * ( float)log10(val) * 2.0f) 之间。

我不确定我应该做什么,所以我会解释一下:

首先,我在 4096 字节缓冲区中获取 PCM 数据,根据文档,PCM 数据由左右一对数据的样本组成。

数据

就我而言,我正在使用上图中的 16 位样本。所以,如果我只想使用左声道,我将左 PCM 数据保存在一个短数组中:

因此,如果一个样本 = 4 个字节,我有 1024 个样本,即代表左通道的 1024 个短路和代表右通道的 1024 个短路。

为了执行 FFT,我需要一个浮点数组并在我的数据上应用一个窗口(汉宁):

wewin是输入,i是数组中的位置和数组s的大小 (1024)。

仅获取左声道:

然后我通过kiss_fft(从真实到复杂)执行FFT。我得到一个kiss_fft_cpx *ouput大小为 1024/2+1 = 513 的(复数数组)。

我计算每个频率的幅度:

以分贝计算:

amp不在 0 和 1 之间。我不知道我必须在哪里规范化我的数据(在 PCM 数据上或最后)。另外我不确定我在 PCM 数据上应用我的窗口的方式。

这是我从 0 到 20kHz 的歌曲中得到的结果,与 getSpectrum 函数的结果相比。(对于矩形窗口

结果

我怎样才能达到相同的结果?

0 投票
1 回答
1096 浏览

header - Fmod 包含错误

我正在制作一个 C++ 程序来播放一些 mp3 文件并且遇到了麻烦。我收到未找到标识符的错误。除了包括标题之外,任何人都可以给我一些建议吗?

这是我的代码:

};

这是我的错误:

0 投票
2 回答
867 浏览

shift - DSP 的 FMODEx 音高偏移问题

我在用 fmod 调整 pitch 时遇到问题。我可以用 channel::setfrequency 做到这一点,但我需要在更大的 sfx 上使用它,因此需要 DSP 的准确性 [没有节奏变化]。但是我似乎无法应用过滤器。

那里什么也没发生。此代码在我的自定义播放功能中,并在我播放声音之前执行(我在 true 时加载暂停,然后进行更改)。这两个函数都不会向结果变量抛出任何错误。那怎么了?:S

0 投票
1 回答
313 浏览

c - 如何在函数中使用 FMOD_SOUND?

我想通过在函数中使用 FMOD 来收听声音。我之前想说的是,我可以听到所有其他声音,但它们没有与函数一起使用。

这是代码的摘录:

头文件.h

现在是代码:

我想用键 V 调用函数 leson()

这里是 leson()

当我按 V 时,文件 stderr 包含线路测试,所以开关没问题,但为什么我听不到这个声音?

0 投票
4 回答
1309 浏览

c - 无法同时播放两种声音

有人能解释一下为什么我不能同时播放两种声音吗?

这是代码的一部分:

我这样称呼我的声音:

我认为有一个频道问题,因为当我播放“炸弹”时,我能听到它(这个声音大约是 3 秒),但如果“刮擦”的声音发生,“炸弹”的声音就会停止......

0 投票
1 回答
747 浏览

objective-c - iOS - 使用 FMOD 的多个应用程序 - 音频仅适用于要运行的第一个应用程序

我正在开发一个我没有开发的现有应用程序,它使用 FMOD 播放其音频。

从外观上看,该应用程序的早期版本被编写为使用 AVAudioPlayer,并且有构建选项可以使用。

不过,最新版本使用 FMOD,因为许多功能仅在使用 FMOD 版本构建时才包含在内。

当我首先使用现有应用程序之一,然后尝试运行我正在开发的这个新应用程序时,问题就出现了。

如果我运行一个应用程序,然后将其留在后台并运行第二个应用程序,则第二个应用程序中的声音根本不会播放。我可以回到第一个应用程序并毫无问题地播放声音。如果我杀死这两个应用程序,然后先启动另一个应用程序,那么它会完美运行。

如果我使用 AVAudioPlayer 选项构建应用程序,那么我不会遇到这个问题,而且为 FMOD 版本编写的所有功能都不存在。因此,我可以证明它与 FMOD 有关,但无法弄清楚是什么。

编辑:做了更多的挖掘,我得到了两个 FMOD 错误:

首先,当我运行时:
result = fmodSystem->init(4, FMOD_INIT_NORMAL | FMOD_INIT_ENABLE_PROFILE, NULL);
我收到错误 51 - “发生套接字错误。这是其他地方未列出的与套接字相关的错误的全部内容。”

其次,当我运行时:
result = fmodSystem->createSound((const char *)[audioData bytes], FMOD_SOFTWARE | FMOD_OPENMEMORY, &exinfo, &fmodSound);
我收到错误 79 - “此命令失败,因为未调用 System::init 或 System::setDriver。”

第二个似乎是因为 init 失败了。

0 投票
1 回答
2091 浏览

c++ - FMOD 不播放声音 C++

我实际上尝试用 FMOD 播放声音,但没有奏效。

但是当我播放时(“mysound.wav”);在我的代码上没有附加任何内容,我验证返回值并没有问题。所以有什么想法吗?谢谢

0 投票
2 回答
1459 浏览

c++ - .mp3 .wav 等音频文件每一帧的音频频率

我能否找到一种方法来获取音频文件(如 .mp3 或 .wav)或使用“fmod”或“cwave”库甚至其他库的任何其他声音格式的每个帧的频率?如何在 C/C++ 中找出这个频率?

0 投票
1 回答
2062 浏览

c# - FMOD CreateSound 与用户创建的流

给定一个应该在 C# 中播放 SNES SPC 文件和 FMOD 的 DLL,为什么这个调用会system.createSound失败?

将其usercreatedsound与 FMOD 附带的示例进行比较:

长度,频率......无关紧要。

编辑:我已经确认 SPC 播放器可以正常工作,至少就初始化而言,并且 FMOD 附带的示例可以正常构建和运行。除了调整设置以使其运行之外,唯一特别有意义的更改是以 4.0 风格编写。

0 投票
2 回答
1224 浏览

audio - FMOD 环绕声开放框架

好的,我希望我不要搞砸了,我已经寻找了一些答案,但找不到任何东西。我正在尝试在 3D 模式下使用 FMOD 声音播放器在 openframeworks 中制作一个简单的采样器。我可以使单个实例正常工作(使用 libsndfilerecorder 录制一个新文件,然后播放它并在环绕中移动它。

但是,我想要 8 层循环音频,我可以在现场表演中一次录制和替换一层。一旦我有超过 1 层,我就会遇到很多问题。

我的问题的第一部分与 FMOD 3D 模式有关,它是相对于听者的,所以我必须为每个声音定义听者的位置(我更喜欢头部相对模式,但我根本无法做到这一点。再说一次当我使用单个播放器但使用多个播放器时,这工作正常,只有我更新的最后一个侦听器实际工作。

我遇到的主要问题是,当我使用多个播放器时,我会失真,并且在我的新录音中经常混合其他当前正在播放的声音(即使麦克风听不到它们)。是否与 libsndfilerecorder 和 FMOD 不兼容?

在这里我初始化播放器

当我录制时,我会卸载文件并确保未加载的播放器的位置没有更新。

无效 fmodApp::recordingStart(int recordingId){

}

我就这样停止录音。

}

我小心不要中断更新过程,但我看不出哪里出错了。

非常感谢