Closed p0nce closed 8 years ago
Task 1: generate .rsrc from release instead of using rez. => No, best approach seems to be : generate .r file and let rez build the rsrc.
Note: auval can be used to test AU
Building the rsrc need the Core Audio Utility Classes to be available on the build machine. See: http://lists.apple.com/archives/coreaudio-api/2002/Nov/msg00308.html
The release tool will require a CORE_AUDIO_UTILITY_CLASSES
envvar to point to it.
Actually, .rsrc can be generated without those classes.
Resource data can go into resource forks or data forks. By default Rez
generates data in resource forks.
Question: should this data go in resource fork or data fork of the .rsrc
file?
Answer: no. In an AudioUnit it seems nothing is expected to go in the resource fork. Hence the .rsrc
extension.
[x] .rsrc
generation without needing AU classes
Coming along nicely, between AU Base Classes and IPlug there is plenty of prior work to study. Maybe we can avoid the lock in IPlug dispatcher, though it may not be a problem in practice with direct access by the host. I'll try to support any number of channels too. Estimating 2 weeks of work + 2 of headaches.
The message queue need to be @nogc, that means @nogc semaphores. This will also avoid @nogc bypass abuse. (EDIT: done)
Deserialization: the bank is restored, but the current state is not restored. You have to click on the preset.
Question: should we save the entire preset bank instead of just the current state?
Don't know, Iplug saves the current state only but also a preset name. Let's see how far we can get saving everything.
No, must save only the current state.
Right now the behaviour is a bit like in VST = the modified preset is saved, but not the whole bank.
(moved to top post)
Cocoa UI is blocked by @protocol emulation. (solved)
Plugin not found in GarageBand But found in Ableton, Reaper, AULab.
The Audio Component API should be supported in addition to the Component Manager API.
Fortunately, Hosting AU is an host that can open both.
auvaltool -a
also uses it.
Using the Audio Component API doesn't seem that necessary. Other people have AU that load fine and do not have it yet (PSP, MeldaProduction...) There must be another reason for not being seen by GarageBand
Got a Cocoa UI to display but without background and in the wrong parent view.
AU with Cocoa UI now working in Reaper, AULab, Hosting AU. Crash Ableton Live 64b.
Got 32-bit Carbon AU showing up in Reaper (also crashing in re-opening). Still crash Live for reasons unknown. (EDIT: or maybe it opens the Cocoa UI? did not check)
I swear the semaphore Issue in Ableton Live fixed itself, must be something with Live plugin cache that created the problem?
To clear Audio Unit cache:
#!/bin/sh
rm ~/Library/Caches/com.apple.audiounits.cache
rm ~/Library/Caches/AudioUnitCache
release
tool tweaked to accept:
"My Company PlugName"
Actually GarageBand can see plugins made with dplug, but it is only 32-bit so won't see 64-bit-only AU.
Not sure if any host opens a Carbon UI. Maybe disabling it would be safer.
32-bit AU are now up to par with 64-bit ones. Render function is crashing GarageBand and Studio One, must look at this. (EDIT: correctec, Studio One still crashing)
32-bit Carbon UI now working in REAPER and GarageBand, no problems. Crash in Studio One went away too.
Works in Logic without sandboxing or Audio Component API. But crashes somewhere.
Can't reproduce the crash now. Got a crash too in AULab. The bulk of functionality is there.
Remaining:
release
tool must take product 4-byte identifier from plugin.json