(转) IDirectSoundBuffer::SetVolume的参数与音量分贝的函数关系

假如将播放器的控制音量切割成0-100的话,由于IDirectSoundBuffer::SetVolume(LONG lVolume)中参数的输入值是[-10000,0]

[cpp] view plaincopy

  1. MySetVolume( DWORD inputVolume)
  2. {
  3. double decibels;
  4. DWORD dsVol;
  5. if (inputVolume==0)
  6. dsVol = DSBVOLUME_MIN;
  7. else if (inputVolume>10000)
  8. dsVol = DSBVOLUME_MAX;
  9. else
  10. {
  11. decibels = 20.0 * log10((double)inputVolume / 100.0);
  12. dsVol = (DWORD)(decibels * 100.0);
  13. }
  14. pDSBuffer->SetVolume( dsVol );
  15. }

当然,也可以将音量控制分割成0--10000了,基本的公式就是这样的。

有篇文章可以参考参考:http://www.animations.physics.unsw.edu.au/jw/dB.htm#definition

转自:http://blog.csdn.net/sky04/article/details/7070418

时间: 2024-11-03 05:44:22

(转) IDirectSoundBuffer::SetVolume的参数与音量分贝的函数关系的相关文章

Android 获取麦克风的音量(分贝)

基础知识 度量声音强度.大家最熟悉的单位就是分贝(decibel,缩写为dB).这是一个无纲量的相对单位.计算公式例如以下: 分子是測量值的声压,分母是參考值的声压(20微帕.人类所能听到的最小声压). 因此日常中说道声音强度是多少多少分贝时.都是默认了一个非常小的參考值的. 而Android设备传感器能够提供的物理量是场的幅值(amplitude),经常使用下列公式计算分贝值: 从SDK中读取了某段音频数据的振幅后,取最大振幅或平均振幅(能够用平方和平均,或绝对值的和平均).代入上述公式的A1

AudioRecord类获取录音音量分贝数

转自:http://www.jb51.net/article/64806.htm public class AudioRecordDemo {   private static final String TAG = "AudioRecord";   static final int SAMPLE_RATE_IN_HZ = 8000;   static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_

PhoneGap API 之多媒体

一. MediaApi 简单介绍 PhoneGap API Media 对象提供录制和回放设备上的音频文件的能力 参数: var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]); src: 一个包含音频内容的 URI (媒体音乐的播放器) mediaSuccess: (可选项)当一个 Media 对象完成当前的播放.录制或停止操作时触 发的回调函数 mediaError:(可选项)当出现错误时调用的回调函数 me

[原创]obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用

原文链接:obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用 我们在第16和第17篇中分别介绍了obj-c的KVC与KVO特性,当时举的例子比较fun,太抽象,貌似和实际不沾边哦.那么下面我们就用一个实际中的例子来看看KVC与KVO是如何运用的吧. 该例中用到了3种新的控件类型:NSTableView.NSSlider以及简单的NSTextField类型.按说不能再在Random类里添加不沾边的新增功能了,但是为了简单,我还是把所有东西都放在Random类里喽.程序运行时界面如下

【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)

前言 学新东西API很重要,这里抛砖引玉整理了一下,欢迎反馈! 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 vlc-android的LibVLC相当于MediaPlayer对象,这里列一下对应关系. 1.public void playMRL(String mrl) 对应MediaPlayer的setDataSource,注意不要转成Uri再toString,否则无法播放.

obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用

我们在第16和第17篇中分别介绍了obj-c的KVC与KVO特性,当时举的例子比较fun,太抽象,貌似和实际不沾边哦.那么下面我们就用一个实际中的例子来看看KVC与KVO是如何运用的吧. 该例中用到了3种新的控件类型:NSTableView.NSSlider以及简单的NSTextField类型.按说不能再在Random类里添加不沾边的新增功能了,但是为了简单,我还是把所有东西都放在Random类里喽.程序运行时界面如下: 大家可以看到左上角的文本域控件用来显示当前音量,因为它和Random类里的

android soundpool 参数说明

SoundPool 类的构造函数如下: SoundPool(int maxStreams, int streamType, int srcQuality) 作用:实例化一个SoundPool 实例 第一个参数:允许同时播放的声音最大值 第二个参数:声音类型 第三个参数:声音的品质 SoundPool 类中常用的函数如下: int load(Context context, int resId, int priority) 作用:加载音乐文件,返回音乐ID(音乐流文件数据) 第一个参数:Conte

Viper4Android使用教程-ViPER4Android简单设置手册

[FX版设置] V4A FX版主要针对音频效果的渲染,通过调节各个参数以达到音频效果调整的目的. <耳机效果> 1.效果总开关.该选项定义了是否启用V4A的耳机音效,是总开关. 2.回放增益控制 回放增益控制主要用于动态控制音频的音量,放大或衰减. (1).启用.是否启用该效果. (2).效果强度.效果强度代表音量放大或衰减的速度,越强则速度越快,最终音量也越大,越弱则速度越慢,最终音量越接近音频原始音量.推荐中等. (3).最大增益倍数.当音频的音量过小时,回放增益为了将音量放大到设定的水准

【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)

在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 MediaPlayer, 而用于游戏音效的则是 SoundPool 类. 1. MediaPlayer MediaPlayer 实例化不是 new 出来的,而是通过调用静态方法得到的,这里有几种静态方法: create(Context context, Uri uri) 作用:通过Uri创建一个多