游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6611|回复: 7

LPDIRECTSOUNDBUFFER如何设置声音大小?》

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-4-17 08:59:00 | 显示全部楼层 |阅读模式
LPDIRECTSOUNDBUFFER a;a->SetVolume(0);
这个函数设置声音到底该怎么设置?
怎么我怎么设置都没有反映呢?
0.0~1.0也设置过
0~100也试过  可是根本就没有什么反映  为什么?
应该如何调节声音大小?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-17 09:07:00 | 显示全部楼层

Re: LPDIRECTSOUNDBUFFER如何设置声音大小?》

取值范围是0 ~ -10000, 0最大,-10000最小.

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-4-17 09:18:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

LPDIRECTSOUNDBUFFER    m_pBuffer;
啊 老大来了,我刚才按你说的 0~ -10000试了
我设置-10000可是声音一点也没有变小 这是为什么?
对了,我使用的是老大最近发的ogg播放代码

void ljmMusicBuffer_DSound::SetVolume(float vol)
{
        //vol 为 0.0f~1.0f , DSound的单位是分贝
        if (vol > 0)
        {
                m_lVolume = (LONG)(log10(vol) * 2000.0f);
        }
        else
        {
                m_lVolume = -10000;
        }


        if(!m_pBuffer)
                return;

        m_pBuffer->SetVolume((LONG)vol);
}

按老大说的 应该设置SetVolume(-10000.0f)应该有反应啊  请指教!

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-17 09:28:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

我再试试

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-4-17 09:34:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

谢谢,在线等老大 :)

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-17 10:14:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

找到了,我的代码有两个地方错了。
(1)
m_pBuffer->SetVolume((LONG)vol);
应该是m_pBuffer->SetVolume((LONG)m_lVolume);

(2)
        DSBUFFERDESC dsbd;
        ZeroMemory(&dsbd,sizeof(DSBUFFERDESC));
        dsbd.dwSize          = sizeof(dsbd);
        dsbd.dwFlags         = DSBCAPS_CTRLVOLUME;
        dsbd.dwBufferBytes   = m_wfx.nAvgBytesPerSec * 2;//8192;//(DWORD)BUFFERSIZE;
        dsbd.guid3DAlgorithm = GUID_NULL;
        dsbd.lpwfxFormat     = &m_wfx;

        HRESULT hr;
        if(FAILED( hr = m_pDS->CreateSoundBuffer(&dsbd,&m_pBuffer,NULL)))

这段

dsbd.dwFlags         = DSBCAPS_CTRLVOLUME;
我原来写的是
dsbd.dwFlags         = 0;//DSBCAPS_CTRLVOLUME;
调试的时候注释掉了,以后一直没试过音量,就忘了

多谢你,我一直都没注意过

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-4-17 11:04:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

成功 ! 祝贺你,也恭喜我 :))
好人自有好报!

1

主题

11

帖子

19

积分

新手上路

Rank: 1

积分
19
QQ
发表于 2007-4-10 17:34:00 | 显示全部楼层

Re:LPDIRECTSOUNDBUFFER如何设置声音大小?》

请问老大浮点转分贝的算法是怎么来的啊
我研究出得来的算法是
float F
分贝 V
if( F!=0 )
{
    V = 1000*(1 - log2(2/F))
}
F=1时 V=0, F=0.5时 V=-1000 F=0.25时 V = -2000 以此类推
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-12 22:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表