Float32 CAAUParameter::GetValueFromString(CFStringRef str) const { if (ValuesHaveStrings()) { AudioUnitParameterValueFromString valueString; valueString.inParamID = mParameterID; valueString.inString = str; UInt32 propertySize = sizeof(valueString); OSStatus err = AudioUnitGetProperty (mAudioUnit, kAudioUnitProperty_ParameterValueFromString, mScope, mParameterID, &valueString, &propertySize); if (err == noErr) { return valueString.outValue; } } Float32 paramValue = mParamInfo.defaultValue; char valstr[32]; CFStringGetCString(str, valstr, sizeof(valstr), kCFStringEncodingUTF8); sscanf(valstr, "%f", ¶mValue); return paramValue; }
CFStringRef CAAUParameter::GetStringFromValueCopy(const Float32 *value) const { if (HasNamedParams()) { Float32 val = (value == NULL ? GetValue() : *value); int index = int(mParamInfo.minValue) + int(val); CFStringRef str = GetParamName (index); if (str) { CFRetain (str); return str; } } else if (ValuesHaveStrings()) { AudioUnitParameterStringFromValue stringValue; stringValue.inParamID = mParameterID; stringValue.inValue = value; stringValue.outString = NULL; UInt32 propertySize = sizeof(stringValue); OSStatus err = AudioUnitGetProperty (mAudioUnit, kAudioUnitProperty_ParameterStringFromValue, mScope, 0, &stringValue, &propertySize); if (!err && stringValue.outString != NULL) return stringValue.outString; } Float32 val = (value == NULL ? GetValue() : *value); AudioUnitParameterUnit unit = this->ParamInfo().unit; if (unit == kAudioUnitParameterUnit_Cents || unit == kAudioUnitParameterUnit_AbsoluteCents) return CreateLocalizedStringForParameterValue(val, this, 4, 0); else return CreateLocalizedStringForParameterValue(val, this, 4); }
Float32 CAAUParameter::GetValueFromString(CFStringRef str) const { if (ValuesHaveStrings()) { AudioUnitParameterValueFromString valueString; valueString.inParamID = mParameterID; valueString.inString = str; UInt32 propertySize = sizeof(valueString); OSStatus err = AudioUnitGetProperty (mAudioUnit, kAudioUnitProperty_ParameterValueFromString, mScope, 0, &valueString, &propertySize); if (!err) { return valueString.outValue; } } return (Float32) ValueForLocalizedParameterString(str, this); }
CFStringRef CAAUParameter::GetStringFromValueCopy(const Float32 *value) const { if (HasNamedParams()) { Float32 val = (value == NULL ? GetValue() : *value); int index = int(mParamInfo.minValue) + int(val); CFStringRef str = GetParamName (index); if (str) { CFRetain (str); return str; } } else if (ValuesHaveStrings()) { AudioUnitParameterStringFromValue stringValue; stringValue.inParamID = mParameterID; stringValue.inValue = value; stringValue.outString = NULL; UInt32 propertySize = sizeof(stringValue); OSStatus err = AudioUnitGetProperty (mAudioUnit, kAudioUnitProperty_ParameterStringFromValue, mScope, mParameterID, &stringValue, &propertySize); if (err == noErr && stringValue.outString != NULL) return stringValue.outString; } Float32 val = (value == NULL ? GetValue() : *value); char valstr[32]; AUParameterFormatValue (val, this, valstr, 4); return CFStringCreateWithCString(NULL, valstr, kCFStringEncodingUTF8); }