相关文章推荐
礼貌的针织衫  ·  python安装cv_python ...·  1 年前    · 
腼腆的沙发  ·  ChangeServiceConfig2A ...·  1 年前    · 
文雅的开水瓶  ·  ModuleNotFoundError: ...·  1 年前    · 
static const int EFFECTS_NORMAL = 0; // 原声 static const int EFFECTS_LUOLI = 1; // 萝莉 static const int EFFECTS_DASHU = 2; // 大叔 static const int EFFECTS_JINGSONG = 3; // 惊悚 static const int EFFECTS_GAOGUAI = 4; // 搞怪 static const int EFFECTS_KONGLING = 5; // 空灵 int main(int argc, char *argv[]) System * system = 0; Sound * sound = 0; Channel * channel = 0; DSP * dsp = 0; // digital signal process 数字信号处理 bool isPlaying = true; float frequency = 0; System_Create(&system); // 创建 System system->init(32, FMOD_INIT_NORMAL, 0); // 初始化,参数:通道数(每一个声音占一个通道,然后通过混音将各通道的声音混合在一起播放)、FMOD_INIT_NORMAL、额外的数据 system->createSound("/home/lili/test.mp3", FMOD_DEFAULT, 0, &sound);// 创建声音,参数:音频路径、模式、额外信息、创建的声音的对象 system->playSound(sound, 0, false, &channel); // 播放声音,声音占用 channel int type_ = atoi(argv[1]); switch (type_) { case EFFECTS_NORMAL: // 原声 break; case EFFECTS_LUOLI: // 萝莉 音调高 system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp); // 创建DSP,FMOD_DSP_TYPE_PITCHSHIFT 表示提高或降低音调,声音波由振幅(响度)与频率(音调)组成 dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH, 1.5); // 设置音调,FMOD_DSP_PITCHSHIFT_PITCH 2.0 表示音调升高一个8度 channel->addDSP(0, dsp); // 将音效添加到声音,同一个声音(channel)上可以添加多个音效,参数:音效下标,音效 break; case EFFECTS_DASHU: // 大叔 音调低 system->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp); dsp->setParameterFloat(FMOD_DSP_PITCHSHIFT_PITCH, 0.8); // 萝莉的音调较高,大叔的音调低沉 channel->addDSP(0, dsp); break; case EFFECTS_JINGSONG: // 惊悚 紧张,声音会颤抖 system->createDSPByType(FMOD_DSP_TYPE_TREMOLO, &dsp); // FMOD_DSP_TYPE_TREMOLO 表示颤抖 dsp->setParameterFloat(FMOD_DSP_TREMOLO_SKEW, 0.5); // FMOD_DSP_TREMOLO_SKEW 表示扭曲 ,更多的这些参数,或者DSP的type 可参看源码注释 channel->addDSP(0, dsp); break; case EFFECTS_GAOGUAI: // 搞怪 提高语速 channel->getFrequency(&frequency); // 获取音频播放速度 frequency *= 1.8; channel->setFrequency(frequency); // 设置音频播放速度 break; case EFFECTS_KONGLING: // 空灵 有回音 system->createDSPByType(FMOD_DSP_TYPE_ECHO, &dsp); // FMOD_DSP_TYPE_ECHO 表示回音 dsp->setParameterFloat(FMOD_DSP_ECHO_DELAY, 300); // FMOD_DSP_ECHO_DELAY 为 FMOD_DSP_TYPE_ECHO 的参数,表示延时(回音的时间?) 单位毫秒? dsp->setParameterFloat(FMOD_DSP_ECHO_FEEDBACK, 20); // FMOD_DSP_ECHO_FEEDBACK 表示回音的次数 channel->addDSP(0, dsp); break; system->update(); // 更新,不更新无法播放 while (isPlaying) channel->isPlaying(&isPlaying); usleep(1*1000*1000); // linux线程休眠函数,参数单位微秒 unistd.h 中 sound->release(); // 释放声音资源 system->close(); // 关闭system system->release(); // 释放system资源

g++ fmodtest.cpp -I /home/lili/Downloads/fmodstudio20109ue4.26linux/FMODStudio/Source/FMODStudio/Public/FMOD -L /home/lili/Downloads/fmodstudio20109ue4.26linux/FMODStudio/Binaries/Linux/x86_64/ -lfmod -Wl,-rpath=/home/lili/Downloads/fmodstudio20109ue4.26linux/FMODStudio/Binaries/Linux/x86_64/  -o main

./main 1

#include <stdlib.h>#include <unistd.h>#include <iostream>#include "fmod.h"#include "fmod.hpp"using namespace std;using namespace FMOD;static const int EFFECTS_NORMAL = 0; // 原声static const int EFFECTS_LUOLI = 1; // 萝莉static co. 我随便截了几张图,有兴趣的可以到 Fmod 官网去具体了解。 怎么样有没有兴趣搞个小游戏玩玩,音频引擎已经有了。 我这边在调音编辑器里玩了一会,但是调音水平有限,不过多介绍了,有兴趣的自己down下来玩儿。 废话不多说,准备干活 第一步 先下载Android平台的引擎 第二步 下载后需要的文件: 新建项目并部署C/C++库步骤 第一步 新建Native Project 然后一路next FMOD 是一个强大的声音引擎框架,QQ、魔兽世界及其他很多游戏都是使用的这套框架,框架内包含几十种声音类型,还可以修改声音的频率、速度等等。 1.进入 FMOD download,下载Android端引擎库。 2.将下载下来的FOMD引擎库中的Jar包,so库和jni c++文件,复制到项目中。 3.编辑配置CMakeLists.txt ------------------------------------- implementation files(‘libs/ fmod .jar’) fmod 使用前调用 org. fmod . FMOD .init(this);进行 FMOD 的初始化 extern “C” 需求很奇葩…… 参考的几个网址: https://qa. fmod .com/t/changing-speed-of-audio-without-altering-pitch/13903 https://qa. fmod .com/t/adding-a-dsp/12211 http://blackchy.com/2018/12/10/2018-12-10- Fmod -Voice-Change/ 下面是尝试了 fmod 中两个播放声音的方法, 将声音播放率更改为n个百分点(n = -95.0 .. +5000.0%) -bpm = n 检测声音的每分钟节拍(BPM)速率,并调整速度以满足“ n”个BPM。当应用此开关时,将忽略“ -tempo”开关。如果省略“ = n”,即单独使用开关“ -bpm”,则将估算并显示BPM速率,但速度不会根据BPM值进行调整。 FMOD 修改音频参数 webRtc 移植webRtc模块
#include "hjcommon.hpp" #include "./inc/ fmod .hpp" #include "examples/common.h" #include <unistd.h> using namespace FMOD ; static const int EFFECTS_NORMAL = 0; // 原声 static