Post

Replies

Boosts

Views

Activity

Reply to Mac Catalyst + Audio Unit v3 plug-in not working as expected.
To benefit others and my future self, I thought I'd list some of the others issues I had to deal with when trying to bring AUv3 to Mac using Catalyst. Most of the issues I had to address was due to auval not liking something and hence Logic Pro using that as a reason not to list my plug-ins. Here we go: It's better to explicitly report supported channel configurations. If you support things like side chain etc. Just override - (NSArray<NSNumber *> *)channelCapabilities in your AU subclass. fullState requires you to report to provide values for "type", "subtype" and "manufacturer" in the dictionary. I have a custom implementation of fullState and wasn't setting these values. Last thing that drove me nuts was that, during auval runs, my AU extension would crash but the auval would report as this: Checking parameter setting Using AudioUnitSetParameter Using AudioUnitScheduleParameter ERROR: -66745 IN CALL AudioUnitRender Turns out auval seems to be sending parameter address that's garbage value Not sure if it's intentional or not. But it does it 8 times. Initially, I thought there was a bug in my code. But the same thing happens in the Apple's sample code I mentioned in the original post. You can reproduce this yourself, just paste this code inside the internalRenderBlock method and watch the debugs in Mac's Console app: #import <os/log.h> ///... auto event = realtimeEventListHead; while (event != NULL) {     if (event->head.eventType == AURenderEventParameter || event->head.eventType == AURenderEventParameterRamp) {     os_log_error(OS_LOG_DEFAULT, "AUv3DEMO ParameterAddress: %llu", event->parameter.parameterAddress);     } event = event->head.next; } I used this command: auval -v aufx fltr Demo In addition to printing out 3 valid parameter addresses, it prints out 2798869411, 10 times. I've now added a check to my code to ensure param address is a valid value. I've also mentioned this issue on Apple's mailing list: https://lists.apple.com/archives/coreaudio-api/2021/Jun/msg00017.html
Topic: App & System Services SubTopic: General Tags:
Jun ’21
Reply to AUParameterNode defaultValue ??
If I remember correctly, if you have default/initial value set in your DSP state implementorValueProvider will pick it up and you won't need to set it initial value via AUParameter. Another thing to keep in mind is that hosts can set AUParameter to a value that's outside the min/max range. So, be sure to handle that.
Topic: Media Technologies SubTopic: Audio Tags:
May ’22
Reply to How is AUv3 MIDI plug-in supposed to figure out the sample rate of the host?
I got a reply from Apple via DTS confirming it's a bug in Logic. To get the host sample rate from for a MIDI plug-in you are supposed to provide an output bus and then read the sample rate through the format property after allocateRenderResourcesAndReturnError called. And Logic doesn't seem to update the format property. If anyone wants to submit a duplicate the bug ID is FB12042397. I've also started a Github project to demonstrate bugs or challenges I come across with AUv3s. https://github.com/Nikolozi/AudioUnitV3Experiments/tree/auv3_midi_sample_rate
Topic: Media Technologies SubTopic: Audio Tags:
Mar ’23
Reply to Mac Catalyst + Audio Unit v3 plug-in not working as expected.
Looks like the app extension needs to have this entry in its entitlements file: <key>com.apple.security.app-sandbox</key> <true/> The AUv3 now loads and works in Reaper, but it looks like I have other auval issues to deal with before it will load in Logic Pro.
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jun ’21
Reply to Mac Catalyst + Audio Unit v3 plug-in not working as expected.
To benefit others and my future self, I thought I'd list some of the others issues I had to deal with when trying to bring AUv3 to Mac using Catalyst. Most of the issues I had to address was due to auval not liking something and hence Logic Pro using that as a reason not to list my plug-ins. Here we go: It's better to explicitly report supported channel configurations. If you support things like side chain etc. Just override - (NSArray<NSNumber *> *)channelCapabilities in your AU subclass. fullState requires you to report to provide values for "type", "subtype" and "manufacturer" in the dictionary. I have a custom implementation of fullState and wasn't setting these values. Last thing that drove me nuts was that, during auval runs, my AU extension would crash but the auval would report as this: Checking parameter setting Using AudioUnitSetParameter Using AudioUnitScheduleParameter ERROR: -66745 IN CALL AudioUnitRender Turns out auval seems to be sending parameter address that's garbage value Not sure if it's intentional or not. But it does it 8 times. Initially, I thought there was a bug in my code. But the same thing happens in the Apple's sample code I mentioned in the original post. You can reproduce this yourself, just paste this code inside the internalRenderBlock method and watch the debugs in Mac's Console app: #import <os/log.h> ///... auto event = realtimeEventListHead; while (event != NULL) {     if (event->head.eventType == AURenderEventParameter || event->head.eventType == AURenderEventParameterRamp) {     os_log_error(OS_LOG_DEFAULT, "AUv3DEMO ParameterAddress: %llu", event->parameter.parameterAddress);     } event = event->head.next; } I used this command: auval -v aufx fltr Demo In addition to printing out 3 valid parameter addresses, it prints out 2798869411, 10 times. I've now added a check to my code to ensure param address is a valid value. I've also mentioned this issue on Apple's mailing list: https://lists.apple.com/archives/coreaudio-api/2021/Jun/msg00017.html
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jun ’21
Reply to Mac Catalyst + Audio Unit v3 plug-in not working as expected.
If you are trying to do any file access from the audio unit extension, e.g preset import/export, be sure to add the following entry to the extension's entitlements file: <key>com.apple.security.files.user-selected.read-write</key> <true/> Otherwise, you will get exotic crashes when trying to display file access panels (e.g. SwiftUI's .fileImporter()).
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Nov ’21
Reply to AUParameterNode defaultValue ??
If I remember correctly, if you have default/initial value set in your DSP state implementorValueProvider will pick it up and you won't need to set it initial value via AUParameter. Another thing to keep in mind is that hosts can set AUParameter to a value that's outside the min/max range. So, be sure to handle that.
Topic: Media Technologies SubTopic: Audio Tags:
Replies
Boosts
Views
Activity
May ’22
Reply to AUv2 development on Xcode 14
Apple started publishing the AU SDK on GitHub as of last year, you can find it here: https://github.com/apple/AudioUnitSDK There's also an examples code repo: https://github.com/apple/AudioUnit-Examples
Topic: Media Technologies SubTopic: Audio Tags:
Replies
Boosts
Views
Activity
Nov ’22
Reply to How is AUv3 MIDI plug-in supposed to figure out the sample rate of the host?
I got a reply from Apple via DTS confirming it's a bug in Logic. To get the host sample rate from for a MIDI plug-in you are supposed to provide an output bus and then read the sample rate through the format property after allocateRenderResourcesAndReturnError called. And Logic doesn't seem to update the format property. If anyone wants to submit a duplicate the bug ID is FB12042397. I've also started a Github project to demonstrate bugs or challenges I come across with AUv3s. https://github.com/Nikolozi/AudioUnitV3Experiments/tree/auv3_midi_sample_rate
Topic: Media Technologies SubTopic: Audio Tags:
Replies
Boosts
Views
Activity
Mar ’23
Reply to AU Instrument Example doesn't handle note off event when DAW playhead skipped ahead
I think Logic sometimes calls the AU's reset() method instead of note-off, depending on how you are moving the playhead. Just override AUAudioUnit.reset() and reset the state of your AU (including releasing any held notes).
Topic: Media Technologies SubTopic: Audio Tags:
Replies
Boosts
Views
Activity
Mar ’23