如何解决如何用频率播放脉冲蜂鸣声
我在弄清楚如何播放哔哔声时遇到问题:
由于百分比较低,我希望声音以更快的频率和更高的频率脉动,反之亦然。
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 举报,一经查实,本站将立刻删除。