本文整理汇总了C++中WaveTrack::GetNumSamples方法的典型用法代码示例。如果您正苦于以下问题:C++ WaveTrack::GetNumSamples方法的具体用法?C++ WaveTrack::GetNumSamples怎么用?C++ WaveTrack::GetNumSamples使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaveTrack
的用法示例。
在下文中一共展示了WaveTrack::GetNumSamples方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnPlotSpectrum
void AudacityProject::OnPlotSpectrum(wxCommandEvent & event)
{
int selcount = 0;
WaveTrack *selt = NULL;
TrackListIterator iter(mTracks);
VTrack *t = iter.First();
while (t) {
if (t->GetSelected())
selcount++;
if (t->GetKind() == VTrack::Wave)
selt = (WaveTrack *) t;
t = iter.Next();
}
if (selcount != 1) {
wxMessageBox(_("Please select a single track first.\n"));
return;
}
/* This shouldn't be possible, since the menu is grayed out.
* But we'll check just in case it does happen, to prevent
* the crash that would result. */
if (!selt) {
wxMessageBox(_("Please select a track first.\n"));
return;
}
sampleCount s0 = (sampleCount) ((mViewInfo.sel0 - selt->GetOffset())
* selt->GetRate());
sampleCount s1 = (sampleCount) ((mViewInfo.sel1 - selt->GetOffset())
* selt->GetRate());
sampleCount slen = s1 - s0;
if (slen > 1048576)
slen = 1048576;
float *data = new float[slen];
sampleType *data_sample = new sampleType[slen];
if (s0 >= selt->GetNumSamples() || s0 + slen > selt->GetNumSamples()) {
wxMessageBox(_("Not enough samples selected.\n"));
delete[]data;
delete[]data_sample;
return;
}
selt->Get(data_sample, s0, slen);
for (sampleCount i = 0; i < slen; i++)
data[i] = data_sample[i] / 32767.;
gFreqWindow->Plot(slen, data, selt->GetRate());
gFreqWindow->Show(true);
gFreqWindow->Raise();
delete[]data;
delete[]data_sample;
}
示例2: Debug
void UndoManager::Debug()
{
for (unsigned int i = 0; i < stack.Count(); i++) {
TrackListIterator iter(stack[i]->tracks);
WaveTrack *t = (WaveTrack *) (iter.First());
printf("*%d* %s %d\n", i, (i == (unsigned int)current) ? "-->" : " ",
t ? t->GetNumSamples() : 0);
}
}