不同频率的蜂鸣音

  • 本文关键字:频率 qt
  • 更新时间 :
  • 英文 :


如何在Qt中以不同的频率生成可听的音调。 例如,在下面的代码中,我在三个条件中使用相同的频率beep

但是,我需要三种不同的声音来指示三种情况

if(a_vertical> LevelOne )
{  
QApplication::beep(); 
}
else if(a_vertical> LevelTwo )
{  
QApplication::beep();
}
else
{  
QApplication::beep();
}

你不能直接在Qt中做到这一点。如果你在Windows上,你可以使用window.h包来做这个Beep(frequency, milliseconds)

但是,在Qt中,还有其他几种方法可以操纵声音。在这里回答

#define FREQ_CONST ((2.0 * M_PI) / SAMPLE_RATE)
QByteArray* bytebuf = new QByteArray();
buf->resize(seconds * SAMPLE_RATE);
for (int i=0; i<(seconds * SAMPLE_RATE); i++) {
qreal t = (qreal)(freq * i);
t = t * FREQ_CONST;
t = qSin(t);
// now we normalize t
t *= TG_MAX_VAL;
(*bytebuf)[i] = (quint8)t;
}

然后我们可以利用该缓冲区并执行类似操作来播放它:

// Make a QBuffer from our QByteArray
QBuffer* input = new QBuffer(bytebuf);
input->open(QIODevice::ReadOnly);
// Create an output with our premade QAudioFormat (See example in QAudioOutput)
QAudioOutput* audio = new QAudioOutput(format, this);
audio->start(input);

最新更新