XAudio2学习之调节音调
频率比有两个地方能够设置。一个是在创建IXAudio2SourceVoice对象的时候。一个是调用IXAudio2SourceVoice::SetFrequencyRatio来调节。
在创建IXAudio2SourceVoice对象的时候,第三个參数影响音高(音调)和第四个參数会影响频率比的设置。
HRESULT CreateSourceVoice(
IXAudio2SourceVoice **ppSourceVoice,
const WAVEFORMATEX *pSourceFormat,
UINT32 Flags = 0,
float MaxFrequencyRatio = XAUDIO2_DEFAULT_FREQ_RATIO,
IXAudio2VoiceCallback *pCallback = NULL,
const XAUDIO2_VOICE_SENDS *pSendList = NULL,
const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL
)
第三个參数指定source voice的行为方式 .
标志位能够是 0 或者 以下一个或者多个的组合:
| Value | Description | ||
|---|---|---|---|
| XAUDIO2_VOICE_NOPITCH | 此voice音高控制不可用.。 | ||
| XAUDIO2_VOICE_NOSRC | 此voice採样率转换不可用, 此voice的全部输出必须具有同样的採样率。
|
||
| XAUDIO2_VOICE_USEFILTER | 音效过滤器在此voice上应有效. | ||
| XAUDIO2_VOICE_MUSIC | 此voice用来播放背景音乐. 系统会自己主动地用用户选择的音乐来替换此 voice。 |
假设第三个參数中包括XAUDIO2_VOICE_NOPITCH。那么此voice调节就不可用。
第四个參数表示的是能够在此voice设置的最大频率比。
取值在XAUDIO2_MIN_FREQ_RATIO 和 XAUDIO2_MAX_FREQ_RATIO之间:
#define XAUDIO2_MIN_FREQ_RATIO (1/1024.0f) // Minimum SetFrequencyRatio argument
#define XAUDIO2_MAX_FREQ_RATIO 1024.0f // Maximum MaxFrequencyRatio argument
#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f // Default MaxFrequencyRatio argument
此參数的最大值被定义为XAUDIO2_MAX_FREQ_RATIO, 其同意音高提升到10 八度音节.假设MaxFrequencyRatio小于1.0,此voice会在创建后立刻使用此比值(而不是默认的1.0)。
并且对于兴许的调用IXAudio2SourceVoice::SetFrequencyRatio,也就是另外一种能够设置频率比的方法,会被限制XAUDIO2_MIN_FREQ_RATIO
和MaxFrequencyRatio之间。
注意:XAudio2的内存使用能够通过使用尽可能低的MaxFrequencyRatio来降低。
HRESULT SetFrequencyRatio(
float Ratio,
UINT32 OperationSet = XAUDIO2_COMMIT_NOW
)
频率调节能够表示为 源频率/目的频率。改变频率比能够改变voice中音频的速率。比值大于1.0会导致音频播放加快。比值小于1.0会导致音频播放减慢。另外,频率比voice中音频的音调。比如,频率比为1.0对音频没有影响,然而频率比为2.0会提升一个八度音节的音高。而且0.5减少一个八度音节的音高。
假设调用SetFrequencyRatio设置了一个比值不在有效范围内。此方法会设置一个最接近有效值的比值。
同一时候在debug模式下回生成一个警告。
所以调用IXAudio2SourceVoice::SetFrequencyRatio能够调节音调(或者音高)。
交流QQ:1245178753
本文地址:http://blog.csdn.net/u011417605/article/details/51044015
XAudio2学习之调节音调的更多相关文章
- XAudio2学习之混音
XAudio2不仅能够进行採样率转换.还能够进行混音.所谓混音就是将多路音频混合成一路进行输出.混音主要是IXAudio2SubmixVoice进行此项功能. 数据由IXAudio2SourceVoi ...
- DeepCTR专题:DeepFM论文学习和实现及感悟
论文地址:https://arxiv.org/pdf/1703.04247.pdf CTR预估我们知道在比较多的应用场景下都有使用.如:搜索排序.推荐系统等都有广泛的应用.并且CTR具有极其重要的 地 ...
- 目前所有的ANN神经网络算法大全
http://blog.sina.com.cn/s/blog_98238f850102w7ik.html 目前所有的ANN神经网络算法大全 (2016-01-20 10:34:17) 转载▼ 标签: ...
- 【Matlab编程】生日快乐歌(显示歌词)—matlab版
clear all A4=440;%标准音A4 不同的曲调音调不同scale的取值范围不同 pt=44100;p0=pt/2;%频率 scale=A4/2^(9/12)*2.^((-12:11)/12 ...
- python from entry to abandon2
学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...
- python from entry to abandon
学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...
- 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章
不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整 理 | Leo 出 ...
- 在FL Studio中如何制作和优化你的人声和弦(Vocal Chords)
人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...
- 在FL Studio中制作和优化人声和弦(Vocal Chords)
人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...
随机推荐
- cocos2dx+lua注册事件函数详解 事件
coocs2dx 版本 3.1.1 registerScriptTouchHandler 注册触屏事件 registerScriptTapHandler ...
- SpringBoot热部署配置(基于Maven)
热部署的意思是只要类中的代码被修改了,就能实时生效,而不用重启项目.spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原 ...
- SQL 迭代查询语句
SQL迭代查询 PL/SQL with ORG_Tree(ObjectId,parentID) as ( select a.ObjectId,a.parentID from Ot_Organizati ...
- sscanf函数——强大的C语言库函数
这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串---"+CBC: 0,90,4090" 我想获取其中的数字0 ...
- spring集成RabbitMQ配置文件详解(生产者和消费者)
1,首先引入配置文件org.springframework.amqp,如下: <dependency> <groupId>org.springframework.amqp< ...
- 基于jQuery经典扫雷游戏源码
分享一款基于jQuery经典扫雷游戏源码.这是一款网页版扫雷小游戏特效代码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <center> <h1>j ...
- phalcon无法更新分区字段解决办法
表里面有个分区字段,更新后,保存成功,结果实际上数据库没有更新. 后来使用原生sql,解决了这个问题. 获取di中的数据库连接,直接执行sql语句即可,下面的db为注册的数据库服务名 $db = $t ...
- docker探索-CentOS7中配置Docker的yum源并升级安装docker1.13(十)
此处使用的是CentOS7,内核版本为 [root@localhost ~]# uname -r -.el7.x86_64 该版本下,配置了yum的源为阿里的镜像源,具体的配置方法可以参见阿里镜像源配 ...
- Android——Service装取数据
在Service里面装数据,从Activity里面用serviceConnection取数据 xml <?xml version="1.0" encoding="u ...
- mac OS X:[11]如何添加打印机
苹果菜单中,单击下拉列表中的『系统偏好设置』: 或在Dock上,单击『系统偏好设置』图标. 2 在『系统偏好设置』窗口中,单击『打印机与扫描仪』图标. 3 在『打印机与扫描仪』窗口中,单击打印机框架下 ...