问题标签 [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.
c - FFT - 在 PCM 数据上应用窗口
我目前正在尝试重现getSpectrum
FMOD 音频库的功能。此函数读取当前播放缓冲区的 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 函数的结果相比。(对于矩形窗口)
我怎样才能达到相同的结果?
header - Fmod 包含错误
我正在制作一个 C++ 程序来播放一些 mp3 文件并且遇到了麻烦。我收到未找到标识符的错误。除了包括标题之外,任何人都可以给我一些建议吗?
这是我的代码:
};
这是我的错误:
shift - DSP 的 FMODEx 音高偏移问题
我在用 fmod 调整 pitch 时遇到问题。我可以用 channel::setfrequency 做到这一点,但我需要在更大的 sfx 上使用它,因此需要 DSP 的准确性 [没有节奏变化]。但是我似乎无法应用过滤器。
那里什么也没发生。此代码在我的自定义播放功能中,并在我播放声音之前执行(我在 true 时加载暂停,然后进行更改)。这两个函数都不会向结果变量抛出任何错误。那怎么了?:S
c - 如何在函数中使用 FMOD_SOUND?
我想通过在函数中使用 FMOD 来收听声音。我之前想说的是,我可以听到所有其他声音,但它们没有与函数一起使用。
这是代码的摘录:
头文件.h
现在是代码:
我想用键 V 调用函数 leson()
这里是 leson()
当我按 V 时,文件 stderr 包含线路测试,所以开关没问题,但为什么我听不到这个声音?
c - 无法同时播放两种声音
有人能解释一下为什么我不能同时播放两种声音吗?
这是代码的一部分:
我这样称呼我的声音:
我认为有一个频道问题,因为当我播放“炸弹”时,我能听到它(这个声音大约是 3 秒),但如果“刮擦”的声音发生,“炸弹”的声音就会停止......
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 失败了。
c++ - FMOD 不播放声音 C++
我实际上尝试用 FMOD 播放声音,但没有奏效。
和
但是当我播放时(“mysound.wav”);在我的代码上没有附加任何内容,我验证返回值并没有问题。所以有什么想法吗?谢谢
c++ - .mp3 .wav 等音频文件每一帧的音频频率
我能否找到一种方法来获取音频文件(如 .mp3 或 .wav)或使用“fmod”或“cwave”库甚至其他库的任何其他声音格式的每个帧的频率?如何在 C/C++ 中找出这个频率?
c# - FMOD CreateSound 与用户创建的流
给定一个应该在 C# 中播放 SNES SPC 文件和 FMOD 的 DLL,为什么这个调用会system.createSound
失败?
将其usercreatedsound
与 FMOD 附带的示例进行比较:
长度,频率......无关紧要。
编辑:我已经确认 SPC 播放器可以正常工作,至少就初始化而言,并且 FMOD 附带的示例可以正常构建和运行。除了调整设置以使其运行之外,唯一特别有意义的更改是以 4.0 风格编写。
audio - FMOD 环绕声开放框架
好的,我希望我不要搞砸了,我已经寻找了一些答案,但找不到任何东西。我正在尝试在 3D 模式下使用 FMOD 声音播放器在 openframeworks 中制作一个简单的采样器。我可以使单个实例正常工作(使用 libsndfilerecorder 录制一个新文件,然后播放它并在环绕中移动它。
但是,我想要 8 层循环音频,我可以在现场表演中一次录制和替换一层。一旦我有超过 1 层,我就会遇到很多问题。
我的问题的第一部分与 FMOD 3D 模式有关,它是相对于听者的,所以我必须为每个声音定义听者的位置(我更喜欢头部相对模式,但我根本无法做到这一点。再说一次当我使用单个播放器但使用多个播放器时,这工作正常,只有我更新的最后一个侦听器实际工作。
我遇到的主要问题是,当我使用多个播放器时,我会失真,并且在我的新录音中经常混合其他当前正在播放的声音(即使麦克风听不到它们)。是否与 libsndfilerecorder 和 FMOD 不兼容?
在这里我初始化播放器
当我录制时,我会卸载文件并确保未加载的播放器的位置没有更新。
无效 fmodApp::recordingStart(int recordingId){
}
我就这样停止录音。
}
我小心不要中断更新过程,但我看不出哪里出错了。
非常感谢