[Qt-interest] Get audio samples from microphone
arun kumar
arunkumaraymuo at gmail.com
Fri Sep 2 11:27:45 CEST 2011
Hi,
How I can take audio samples from microphone and need to change its tempo.
I tried this sample code for getting audio data but it doesnt worked to me
pls help ...
qint64 AudioInfo::writeData(const char *data, qint64 len)
{
m_soundTouch.setSampleRate( m_format.sampleRate());
m_soundTouch.setChannels(1);
m_soundTouch.setPitchSemiTones(10);
m_soundTouch.setSetting(2, 1);
m_soundTouch.setSetting(0, 0);
if (m_maxAmplitude) {
Q_ASSERT(m_format.sampleSize() % 8 == 0);
const int channelBytes = m_format.sampleSize() / 8;
const int sampleBytes = m_format.channels() * channelBytes;
Q_ASSERT(len % sampleBytes == 0);
const int numSamples = len / sampleBytes;
quint16 maxValue = 0;
const unsigned char *ptr = reinterpret_cast<const unsigned
char *>(data);
for (int i = 0; i < numSamples; ++i) {
for(int j = 0; j < m_format.channels(); ++j) {
quint16 value = 0;
if (m_format.sampleSize() == 8 &&
m_format.sampleType() == QAudioFormat::UnSignedInt) {
value = *reinterpret_cast<const quint8*>(ptr);
} else if (m_format.sampleSize() == 8 &&
m_format.sampleType() == QAudioFormat::SignedInt) {
value = qAbs(*reinterpret_cast<const qint8*>(ptr));
} else if (m_format.sampleSize() == 16 &&
m_format.sampleType() == QAudioFormat::UnSignedInt) {
if (m_format.byteOrder() == QAudioFormat::LittleEndian)
value = qFromLittleEndian<quint16>(ptr);
else
value = qFromBigEndian<quint16>(ptr);
} else if (m_format.sampleSize() == 16 &&
m_format.sampleType() == QAudioFormat::SignedInt) {
if (m_format.byteOrder() == QAudioFormat::LittleEndian)
value = qAbs(qFromLittleEndian<qint16>(ptr));
else
value = qAbs(qFromBigEndian<qint16>(ptr));
}
//sleep(1);
m_soundTouch.putSamples((soundtouch::SAMPLETYPE*)value, len);
maxValue= m_soundTouch.receiveSamples(len);
maxValue = qMax(value, maxValue);
ptr += channelBytes;
}
}
maxValue = qMin(maxValue, m_maxAmplitude);
m_level = qreal(maxValue) / m_maxAmplitude;
}
emit update();
return len;
}
My SoundTouch library uses float samples for audio processing
Thanks,
Arun Kumar KS
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110902/0d8a0dca/attachment-0001.html
More information about the Qt-interest-old
mailing list