本文整理汇总了C++中AudioBuffer::read方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioBuffer::read方法的具体用法?C++ AudioBuffer::read怎么用?C++ AudioBuffer::read使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioBuffer
的用法示例。
在下文中一共展示了AudioBuffer::read方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: star_external_ffem
void StarSeemTest::star_external_ffem()
{
QFETCH(QString, data);
AudioBuffer c;
QVERIFY2(c.read(data), ("Failed reading test wave; " + data).toUtf8().data());
/*=== WORLD による分析 ===*/
int timeLength = GetSamplesForDIO(c.format().sampleRate(), c.length(), msFramePeriod);
int fftLength = GetFFTSizeForStar(c.format().sampleRate());
double *f0 = new double[timeLength];
double *t = new double[timeLength];
double **specgram = new double*[timeLength];
specgram[0] = new double[timeLength * (fftLength / 2 + 1)];
for(int i = 1; i < timeLength; i++)
{
specgram[i] = specgram[0] + i * (fftLength / 2 + 1);
}
Dio(c.data()[0], c.length(), c.format().sampleRate(), msFramePeriod, t, f0);
Star(c.data()[0], c.length(), c.format().sampleRate(), msFramePeriod, f0, timeLength, specgram);
/*=== WORLD による分析ここまで ===*/
/*=== StarSeem による分析 === */
Envelope *e = new Envelope;
QVERIFY2(DioFfem().estimate(e, c.data()[0], c.length(), c.format().sampleRate(), msFramePeriod), "Failed dio FFEM");
// Envelope が正しいか確認する
for(int i = 0; i < e->size(); i++)
{
QVERIFY2(e->value(i) == f0[i], "Error; invalid f0 envelope");
}
Specgram *testset = new Specgram;
QVERIFY2(StarSeem(e).estimate(testset, c.data()[0], c.length(), fftLength, c.format().sampleRate(), msFramePeriod), "Failed STAR SEEM");
/*=== StarSeem による分析ここまで === */
// 比較開始
for(int t = 0; t < timeLength; t++)
{
for(int f = 0; f <= fftLength / 2; f++)
{
if(testset->value(t, f) != specgram[t][f])
{
QString s;
s = "t = " + QString::number(t) + ", f = " + QString::number(f);
s += " actual :" + QString::number(testset->value(t, f)) + " , expceted :" + QString::number(specgram[t][f]);
// WORLD 自体は同じだから値が全く同じでないとおかしい。
QFAIL(("Error ;" + s).toUtf8().data());
}
}
}
delete[] specgram[0];
delete[] specgram;
delete[] t;
delete[] f0;
}