void CAAUMIDIMap::SaveAsMapPList (AudioUnit inUnit, const AUParameterMIDIMapping* inMappings, UInt32 inNumMappings, CFPropertyListRef &outData, CFStringRef inName) { CACFDictionary mappingDict (false); CACFArray maps (true); for (UInt32 i = 0; i< inNumMappings; ++i) { CFPropertyListRef data; CAAUMIDIMap paramMap(inMappings[i]); paramMap.Save (data); if (data) { maps.AppendCFType (data); CFRelease(data); } } if (maps.GetNumberItems()) { mappingDict.AddCFType (kParamMIDIStr, maps.GetCFArray()); // Add the AU info here - where this map came from CAAudioUnit au (inUnit); CFPropertyListRef data; au.Comp().Save (&data); mappingDict.AddCFType (kAUStr, data); CFRelease(data); if (!inName) inName = CFSTR("Untitled"); mappingDict.AddString (CFSTR("name"), inName); mappingDict.AddUInt32 (CFSTR("version"), 1); outData = mappingDict.AsPropertyList(); } else { mappingDict.ShouldRelease(true); outData = NULL; } }