微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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 举报,一经查实,本站将立刻删除。