OSStatus SinSynth::GetParameterInfo( AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo & outParameterInfo) { if (inParameterID != kGlobalVolumeParam) return kAudioUnitErr_InvalidParameter; if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags = SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplaySquareRoot); outParameterInfo.flags += kAudioUnitParameterFlag_IsWritable; outParameterInfo.flags += kAudioUnitParameterFlag_IsReadable; AUBase::FillInParameterName (outParameterInfo, kGlobalVolumeName, false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 1.0; return noErr; }
OSStatus AKSampler_Plugin::GetParameterInfo( AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo& outParameterInfo) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable | kAudioUnitParameterFlag_IsReadable; switch (inParameterID) { case kMasterVolumeFraction: outParameterInfo.flags += SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplaySquareRoot); AUBase::FillInParameterName (outParameterInfo, paramName[kMasterVolumeFraction], false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 1.0; break; case kPitchOffsetSemitones: AUBase::FillInParameterName (outParameterInfo, paramName[kPitchOffsetSemitones], false); outParameterInfo.unit = kAudioUnitParameterUnit_RelativeSemiTones; outParameterInfo.minValue = -24.0; outParameterInfo.maxValue = 24.0; outParameterInfo.defaultValue = 0.0; break; case kVibratoDepthSemitones: AUBase::FillInParameterName (outParameterInfo, paramName[kVibratoDepthSemitones], false); outParameterInfo.unit = kAudioUnitParameterUnit_RelativeSemiTones; outParameterInfo.minValue = 0.0; outParameterInfo.maxValue = 24.0; outParameterInfo.defaultValue = 0.0; break; case kLoopThruRelease: AUBase::FillInParameterName (outParameterInfo, paramName[kLoopThruRelease], false); outParameterInfo.unit = kAudioUnitParameterUnit_Boolean; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 0.0; break; case kMonophonic: AUBase::FillInParameterName (outParameterInfo, paramName[kMonophonic], false); outParameterInfo.unit = kAudioUnitParameterUnit_Boolean; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 0.0; break; case kLegato: AUBase::FillInParameterName (outParameterInfo, paramName[kLegato], false); outParameterInfo.unit = kAudioUnitParameterUnit_Boolean; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 0.0; break; case kGlideRate: AUBase::FillInParameterName (outParameterInfo, paramName[kGlideRate], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0.0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kFilterEnable: AUBase::FillInParameterName (outParameterInfo, paramName[kFilterEnable], false); outParameterInfo.unit = kAudioUnitParameterUnit_Boolean; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 0.0; break; case kFilterCutoffHarmonic: outParameterInfo.flags += SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplayLogarithmic); AUBase::FillInParameterName (outParameterInfo, paramName[kFilterCutoffHarmonic], false); outParameterInfo.unit = kAudioUnitParameterUnit_Generic; outParameterInfo.minValue = 1.0; outParameterInfo.maxValue = 1000.0; outParameterInfo.defaultValue = 1000.0; break; case kFilterCutoffEgStrength: outParameterInfo.flags += SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplayLogarithmic); AUBase::FillInParameterName (outParameterInfo, paramName[kFilterCutoffEgStrength], false); outParameterInfo.unit = kAudioUnitParameterUnit_Generic; outParameterInfo.minValue = 0.0; outParameterInfo.maxValue = 100.0; outParameterInfo.defaultValue = 20.0; break; case kFilterResonanceDb: AUBase::FillInParameterName (outParameterInfo, paramName[kFilterResonanceDb], false); outParameterInfo.unit = kAudioUnitParameterUnit_Decibels; outParameterInfo.minValue = -20.0; outParameterInfo.maxValue = 20.0; outParameterInfo.defaultValue = 0.0; break; case kAmpEgAttackTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kAmpEgAttackTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kAmpEgDecayTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kAmpEgDecayTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kAmpEgSustainFraction: AUBase::FillInParameterName (outParameterInfo, paramName[kAmpEgSustainFraction], false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 1.0; break; case kAmpEgReleaseTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kAmpEgReleaseTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kFilterEgAttackTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kFilterEgAttackTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kFilterEgDecayTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kFilterEgDecayTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; case kFilterEgSustainFraction: outParameterInfo.flags += SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplayExponential); AUBase::FillInParameterName (outParameterInfo, paramName[kFilterEgSustainFraction], false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 1.0; break; case kFilterEgReleaseTimeSeconds: AUBase::FillInParameterName (outParameterInfo, paramName[kFilterEgReleaseTimeSeconds], false); outParameterInfo.unit = kAudioUnitParameterUnit_Seconds; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 10.0; outParameterInfo.defaultValue = 0.0; break; default: return kAudioUnitErr_InvalidParameter; } return noErr; }
OSStatus MT32Synth::GetParameterInfo(AudioUnitScope inScope, AudioUnitParameterID inParameterID, AudioUnitParameterInfo & outParameterInfo) { if (inParameterID == kGlobalVolumeParam) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags = SetAudioUnitParameterDisplayType (0, kAudioUnitParameterFlag_DisplaySquareRoot); outParameterInfo.flags += kAudioUnitParameterFlag_IsWritable; outParameterInfo.flags += kAudioUnitParameterFlag_IsReadable; AUBase::FillInParameterName (outParameterInfo, kGlobalVolumeName, false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 5.0; outParameterInfo.defaultValue = 1.0; return noErr; } else if (inParameterID == kInstrumentParam) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags = kAudioUnitParameterFlag_ValuesHaveStrings; outParameterInfo.flags += kAudioUnitParameterFlag_IsWritable; outParameterInfo.flags += kAudioUnitParameterFlag_IsReadable; AUBase::FillInParameterName (outParameterInfo, kInstrumentName, false); outParameterInfo.unit = kAudioUnitParameterUnit_Indexed; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 127.0; outParameterInfo.defaultValue = 0.0; return noErr; } else if (inParameterID == kReverbEnabledParam) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags += kAudioUnitParameterFlag_IsWritable; outParameterInfo.flags += kAudioUnitParameterFlag_IsReadable; AUBase::FillInParameterName (outParameterInfo, kReverbEnabledParamName, false); outParameterInfo.unit = kAudioUnitParameterUnit_Boolean; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 1.0; outParameterInfo.defaultValue = 1.0; return noErr; } else if (inParameterID == kReverbGainParam) { if (inScope != kAudioUnitScope_Global) return kAudioUnitErr_InvalidScope; outParameterInfo.flags += kAudioUnitParameterFlag_IsWritable; outParameterInfo.flags += kAudioUnitParameterFlag_IsReadable; AUBase::FillInParameterName (outParameterInfo, kReverbGainParamName, false); outParameterInfo.unit = kAudioUnitParameterUnit_LinearGain; outParameterInfo.minValue = 0; outParameterInfo.maxValue = 5.0; outParameterInfo.defaultValue = 1.0; return noErr; } else { return noErr; } }