/* notification interval defaults to 100ms */
AUCarbonViewBase::AUCarbonViewBase(AudioUnitCarbonView inInstance) :
    ComponentBase(inInstance),
    mEditAudioUnit(0),
    mParameterListener(NULL),
    mEventListener(NULL),
    mTimerRef (NULL),
    mTimerUPP (NULL),
    mCarbonWindow(NULL),
    mCarbonPane(NULL),
    mXOffset(0),
    mYOffset (0)
{
    AUListenerCreate(	ParameterListener, this,
                        CFRunLoopGetCurrent(), kCFRunLoopDefaultMode, 0.100 /* 100ms */,
                        &mParameterListener);
}
AUCarbonViewBase::AUCarbonViewBase(AudioUnitCarbonView inInstance, Float32 inNotificationInterval /* in seconds */) :
    ComponentBase(inInstance),
    mEditAudioUnit(0),
    mParameterListener(NULL),
    mEventListener(NULL),
    mTimerRef (NULL),
    mTimerUPP (NULL),
    mCarbonWindow(NULL),
    mCarbonPane(NULL),
    mXOffset(0),
    mYOffset (0)
{
    AUListenerCreate(	ParameterListener, this,
                        CFRunLoopGetCurrent(), kCFRunLoopDefaultMode, inNotificationInterval,
                        &mParameterListener);
}
Example #3
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	HSPad::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus HSPad::Initialize()
{
    OSStatus ret = noErr;

    ret = AUMonotimbralInstrumentBase::Initialize();
    if (ret != noErr) return ret;

    SetNotes(kNumNotes, kMaxActiveNotes, mHSNotes, sizeof(HSNote));

    wavetable = new HSWavetable(kNumWavetables,
                                GetOutput(0)->GetStreamFormat().mSampleRate,
                                kNumSamplesPerWavetable,
                                Globals()->GetParameter(kParameter_HarmonicBandwidth),
                                Globals()->GetParameter(kParameter_HarmonicProfile), // Harmonic bandwidth scale
                                Globals()->GetParameter(kParameter_HarmonicsAmount),
                                Globals()->GetParameter(kParameter_HarmonicsCurveSteepness),
                                Globals()->GetParameter(kParameter_HarmonicsBalance),
                                kHarmonicsCompensation);

    if (0 == parameterListener) {
        ret = AUListenerCreate(MyEventListenerProc,
                               this,
                               CFRunLoopGetCurrent(),
                               kCFRunLoopDefaultMode,
                               0.5,
                               &parameterListener);

        if (ret != noErr) {
            return ret;
        }
    }

    for (int i=0; i<kNumParametersThatAreRelevantToWavetable; i++) {
        AudioUnitParameter  parameter;
        parameter.mAudioUnit = GetComponentInstance();
        parameter.mParameterID = kParametersThatAreRelevantToWavetable[i];
        parameter.mScope = kAudioUnitScope_Global;
        parameter.mElement = 0;

        ret = AUListenerAddParameter(parameterListener, this, &parameter);
        if (ret != noErr) {
            return ret;
        }
    }

    return ret;
}