本文整理汇总了C++中SynthGroupElement类的典型用法代码示例。如果您正苦于以下问题:C++ SynthGroupElement类的具体用法?C++ SynthGroupElement怎么用?C++ SynthGroupElement使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SynthGroupElement类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PerformEvents
ComponentResult AUInstrumentBase::Render( AudioUnitRenderActionFlags & ioActionFlags,
const AudioTimeStamp & inTimeStamp,
UInt32 inNumberFrames)
{
PerformEvents(inTimeStamp);
UInt32 numOutputs = Outputs().GetNumberOfElements();
for (UInt32 j = 0; j < numOutputs; ++j)
{
AudioBufferList& bufferList = GetOutput(j)->GetBufferList();
for (UInt32 k = 0; k < bufferList.mNumberBuffers; ++k)
{
memset(bufferList.mBuffers[k].mData, 0, bufferList.mBuffers[k].mDataByteSize);
}
}
UInt32 numGroups = Groups().GetNumberOfElements();
for (UInt32 j = 0; j < numGroups; ++j)
{
SynthGroupElement *group = (SynthGroupElement*)Groups().GetElement(j);
OSStatus err = group->Render(inNumberFrames);
if (err) return err;
}
mAbsoluteSampleFrame += inNumberFrames;
return noErr;
}
示例2: printf
ComponentResult AUInstrumentBase::Reset( AudioUnitScope inScope,
AudioUnitElement inElement)
{
#if DEBUG_PRINT
printf("AUInstrumentBase::Reset\n");
#endif
if (inScope == kAudioUnitScope_Global)
{
// kill all notes..
mFreeNotes.Empty();
for (UInt32 i=0; i<mNumNotes; ++i)
{
SynthNote *note = GetNote(i);
if (note->IsSounding())
note->Kill(0);
note->ListRemove();
mFreeNotes.AddNote(note);
}
mNumActiveNotes = 0;
mAbsoluteSampleFrame = 0;
// empty lists.
UInt32 numGroups = Groups().GetNumberOfElements();
for (UInt32 j = 0; j < numGroups; ++j)
{
SynthGroupElement *group = (SynthGroupElement*)Groups().GetElement(j);
group->Reset();
}
}
return noErr;
}
示例3: printf
OSStatus AUInstrumentBase::HandleControlChange( UInt8 inChannel,
UInt8 inController,
UInt8 inValue,
UInt32 inStartFrame)
{
#if DEBUG_PRINT
printf("AUInstrumentBase::HandleControlChange ch %u ctlr: %u val: %u frm: %u\n", inChannel, inController, inValue, inStartFrame);
#endif
SynthGroupElement *gp = GetElForGroupID(inChannel);
if (gp)
{
gp->ChannelMessage(inController, inValue);
}
else
return kAudioUnitErr_InvalidElement;
switch (inController)
{
case kMidiController_Sustain :
if (inValue >= 64)
SendPedalEvent(inChannel, SynthEvent::kEventType_SustainOn, inStartFrame);
else
SendPedalEvent(inChannel, SynthEvent::kEventType_SustainOff, inStartFrame);
break;
case kMidiController_Sostenuto :
if (inValue >= 64)
SendPedalEvent(inChannel, SynthEvent::kEventType_SostenutoOn, inStartFrame);
else
SendPedalEvent(inChannel, SynthEvent::kEventType_SostenutoOff, inStartFrame);
break;
}
return noErr;
}
示例4: PerformEvents
OSStatus AUInstrumentBase::Render( AudioUnitRenderActionFlags & ioActionFlags,
const AudioTimeStamp & inTimeStamp,
UInt32 inNumberFrames)
{
PerformEvents(inTimeStamp);
AUScope &outputs = Outputs();
UInt32 numOutputs = outputs.GetNumberOfElements();
for (UInt32 j = 0; j < numOutputs; ++j)
{
GetOutput(j)->PrepareBuffer(inNumberFrames); // AUBase::DoRenderBus() only does this for the first output element
AudioBufferList& bufferList = GetOutput(j)->GetBufferList();
for (UInt32 k = 0; k < bufferList.mNumberBuffers; ++k)
{
memset(bufferList.mBuffers[k].mData, 0, bufferList.mBuffers[k].mDataByteSize);
}
}
UInt32 numGroups = Groups().GetNumberOfElements();
for (UInt32 j = 0; j < numGroups; ++j)
{
SynthGroupElement *group = (SynthGroupElement*)Groups().GetElement(j);
OSStatus err = group->Render((SInt64)inTimeStamp.mSampleTime, inNumberFrames, outputs);
if (err) return err;
}
mAbsoluteSampleFrame += inNumberFrames;
return noErr;
}
示例5: GetElForGroupID
OSStatus AUInstrumentBase::HandleChannelPressure(UInt8 inChannel,
UInt8 inValue,
UInt32 inStartFrame)
{
SynthGroupElement *gp = GetElForGroupID(inChannel);
if (gp)
{
gp->ChannelMessage(kMidiMessage_ChannelPressure, inValue);
return noErr;
}
else
return kAudioUnitErr_InvalidElement;
}
示例6: Groups
SynthGroupElement * AUInstrumentBase::GetElForGroupID (MusicDeviceGroupID inGroupID)
{
AUScope & groups = Groups();
unsigned int numEls = groups.GetNumberOfElements();
SynthGroupElement* unassignedEl = NULL;
for (unsigned int i = 0; i < numEls; ++i) {
SynthGroupElement* el = reinterpret_cast<SynthGroupElement*>(groups.GetElement(i));
if (el->GroupID() == inGroupID)
return el;
if (el->GroupID() == SynthGroupElement::kUnassignedGroup) {
unassignedEl = el;
break; // we fill this up from the start of the group scope vector
}
}
if (unassignedEl) {
unassignedEl->SetGroupID(inGroupID);
return unassignedEl;
}
throw static_cast<OSStatus>(kAudioUnitErr_InvalidElement);
}