频率比有两个地方能够设置。一个是在创建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_NOSRC标志位会导致声音表现得好像 XAUDIO2_VOICE_NOPITCH 标志位也被设置了.

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学习之调节音调的更多相关文章

  1. XAudio2学习之混音

    XAudio2不仅能够进行採样率转换.还能够进行混音.所谓混音就是将多路音频混合成一路进行输出.混音主要是IXAudio2SubmixVoice进行此项功能. 数据由IXAudio2SourceVoi ...

  2. DeepCTR专题:DeepFM论文学习和实现及感悟

    论文地址:https://arxiv.org/pdf/1703.04247.pdf CTR预估我们知道在比较多的应用场景下都有使用.如:搜索排序.推荐系统等都有广泛的应用.并且CTR具有极其重要的 地 ...

  3. 目前所有的ANN神经网络算法大全

    http://blog.sina.com.cn/s/blog_98238f850102w7ik.html 目前所有的ANN神经网络算法大全 (2016-01-20 10:34:17) 转载▼ 标签: ...

  4. 【Matlab编程】生日快乐歌(显示歌词)—matlab版

    clear all A4=440;%标准音A4 不同的曲调音调不同scale的取值范围不同 pt=44100;p0=pt/2;%频率 scale=A4/2^(9/12)*2.^((-12:11)/12 ...

  5. python from entry to abandon2

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...

  6. python from entry to abandon

    学习Linux已经有大致两周了,依然感觉到自己仍然在运维的大门外徘徊.于是我想要找到一个在Linux之外的业余方向,可以以作为枯燥基础学习的调节.没过多久我就发现了Python可以说是钦定的选择,它作 ...

  7. 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章

    不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整    理 | Leo 出   ...

  8. 在FL Studio中如何制作和优化你的人声和弦(Vocal Chords)

    人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...

  9. 在FL Studio中制作和优化人声和弦(Vocal Chords)

    人声和弦在Future Bass.Melodic Dubstep等类型的电子音乐中被常用.与一般的和弦相同,其主要起到为主旋律做铺垫的效果,但是人声和弦加入了人声的因素,可以使得和弦更有趣,更有电子音 ...

随机推荐

  1. 李洪强和你一起学习前端之(9)规避脱标,CSS可见性,滑动门案例

    1  复习昨天知识 1.1 浮动  特点: >浮动的元素不占位置(脱标) >可以将行内元素转化为行内块元素 >块级元素在一行上显示 >设置了浮动的元素,影响其后面的元素   作 ...

  2. 找个些有用的网站(CSS生成)

    http://www.shejidaren.com/css-button-generator-and-beautifucl-style-sheet.html

  3. 推荐20款JavaScript框架给前端开发者

    下面,我们给大家提供了一个用于 HTML5 开发的各种用途的 JavaScript 库列表.这些框架能够给前端开发人员提供更好的功能实现的解决方案.如果你有收藏优秀的框架,也可以在后面的评论中分享给我 ...

  4. js把预定义的html字符串转换为 HTML 实体 htmlspecialchars 输出html实体内容包括标签,而不自动转义标签,只显示内容,类似php的htmlspecialchars

    一.html字符串转换为 HTML 实体 htmlspecialchars function htmlspecialchars(str){                      str = str ...

  5. Pythonic版冒泡排序和快速排序(附:直接插入排序)

    [本文出自天外归云的博客园] 冒泡排序:就是每次排序选最大元素到数组a的最后,排 len(a)-1 次.也就是两个for循环: 1. 外层是待排数组长度的循环,从待排数组长度(初始待排数组长度等于数组 ...

  6. 2. KNN和KdTree算法实现

    1. K近邻算法(KNN) 2. KNN和KdTree算法实现 1. 前言 KNN一直是一个机器学习入门需要接触的第一个算法,它有着简单,易懂,可操作性强的一些特点.今天我久带领大家先看看sklear ...

  7. Struts标签判断当前用户是否存在

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. python -修改文件中某一行

    写代码写错了顺序,所以想办法把x,y坐标调换回来 def change_ptsxy(fileName): fp = open(fileName) i = file_data = "" ...

  9. 【进阶修炼】——改善C#程序质量(1)

    这是一个大纲形式的概要,以便自己可以花较少的时间反复阅读.在开发中,多加注意这些有用的建议,让自己成为一个更优秀的程序员.内容主要来自<编写高质量代码-改善C#程序的157个建议>(陆敏技 ...

  10. .Net程序帮助文档制作

    一,准备工作 1,首先介绍一款VS的代码注释插件GhostDoc 你也许认为我们在代码中敲入///就能自动生成xml注释,但这种注释是没有说明文字的.而GhostDoc可以生成一些简单的说明文字,如果 ...