如何用频率播放脉冲蜂鸣声

问题描述

我在弄清楚如何播放哔哔声时遇到问题:

由于百分比较低,我希望声音以更快的频率和更高的频率脉动,反之亦然。

template<typename tVal>
tVal map_value(std::pair<tVal,tVal> a,std::pair<tVal,tVal> b,tVal inVal)
{
    tVal inValnorm = inVal - a.first;
    tVal aUppernorm = a.second - a.first;
    tVal normPosition = inValnorm / aUppernorm;

    tVal bUppernorm = b.second - b.first;
    tVal bValnorm = normPosition * bUppernorm;
    tVal outVal = b.first + bValnorm;

    return outVal;
}

void BeepSound(unsigned int percentage /* 0-100 */)
{
    /*
        Play sound with delay and frequency based on percentage
    */

    static const unsigned int maxms = 2000;
    static const unsigned int maxFreq = 2000;

    std::pair<unsigned int,unsigned int> a(1,100);

    std::pair<unsigned int,unsigned int> b0(1,maxms);
    std::pair<unsigned int,unsigned int> b1(500,maxFreq);

    unsigned int delay = map_value(a,b0,percentage);
    unsigned int frequency = map_value(a,b1,percentage);

    static DWORD delayTimer = 0;

    if ( GetTickCount64() - delayTimer > delay )
    {
        delayTimer = GetTickCount64();

        Beep(frequency,delay);
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)