本文整理汇总了C++中Kiss::getData方法的典型用法代码示例。如果您正苦于以下问题:C++ Kiss::getData方法的具体用法?C++ Kiss::getData怎么用?C++ Kiss::getData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Kiss
的用法示例。
在下文中一共展示了Kiss::getData方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update
//*************************************************************************
void BeatDetectorApp::update()
{
if(write_frames)
{
if(curr_sample < p_sample->m_SampleCount)
{
// Initialize analyzer, if needed
if (!mFftInit)
{
Init(samples_per_frame);
}
mFft.setData(p_sample->mp_Buffer + (curr_sample));
curr_sample += samples_per_frame;
CSoundAnalyzer::Get().ProcessData(mFft.getAmplitude(), mFft.getData());
}
else
{
shutdown();
}
}
else
{
// Check if track is playing and has a PCM buffer available
if (mTrack->isPlaying() && mTrack->isPcmBuffering())
{
// Get buffer
mBuffer = mTrack->getPcmBuffer();
if (mBuffer && mBuffer->getInterleavedData())
{
// Get sample count
uint32_t mSampleCount = mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mSampleCount;
if (mSampleCount > 0)
{
// Initialize analyzer, if needed
if (!mFftInit)
{
Init(samples_per_frame);
}
// Analyze data
if (mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mData != 0)
mFft.setData(mBuffer->getChannelData(CHANNEL_FRONT_LEFT)->mData);
CSoundAnalyzer::Get().ProcessData(mFft.getAmplitude(), mFft.getData());
}
}
}
}
}
示例2: draw
// Draw
void KissFileSampleApp::draw()
{
// Clear screen
gl::clear(Color(0.0f, 0.0f, 0.0f));
// Check init flag
if (mFftInit)
{
// Get data
float * mFreqData = mFft.getAmplitude();
float * mTimeData = mFft.getData();
int32_t mDataSize = mFft.getBinSize();
// Get dimensions
float mScale = ((float)getWindowWidth() - 20.0f) / (float)mDataSize;
float mWindowHeight = (float)getWindowHeight();
// Use polylines to depict time and frequency domains
PolyLine<Vec2f> mFreqLine;
PolyLine<Vec2f> mTimeLine;
// Iterate through data
for (int32_t i = 0; i < mDataSize; i++)
{
// Do logarithmic plotting for frequency domain
double mLogSize = log((double)mDataSize);
float x = (float)(log((double)i) / mLogSize) * (double)mDataSize;
float y = math<float>::clamp(mFreqData[i] * (x / mDataSize) * log((double)(mDataSize - i)), 0.0f, 2.0f);
// Plot points on lines
mFreqLine.push_back(Vec2f(x * mScale + 10.0f, -y * (mWindowHeight - 20.0f) * 1.25f + (mWindowHeight - 10.0f)));
mTimeLine.push_back(Vec2f(i * mScale + 10.0f, mTimeData[i] * (mWindowHeight - 20.0f) * 0.3f + (mWindowHeight * 0.15f + 10.0f)));
}
// Draw signals
gl::draw(mFreqLine);
gl::draw(mTimeLine);
}
}