AuburnSounds / Dplug

Audio plugin framework. VST2/VST3/AU/AAX/LV2 for Linux/macOS/Windows.
https://dplug.org/
Other
480 stars 32 forks source link

AU support v2 with Component Manager #83

Closed p0nce closed 8 years ago

p0nce commented 8 years ago

Remaining:

p0nce commented 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

p0nce commented 8 years ago

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.

p0nce commented 8 years ago

Actually, .rsrc can be generated without those classes.

p0nce commented 8 years ago

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.

p0nce commented 8 years ago

[x] .rsrcgeneration without needing AU classes

p0nce commented 8 years ago

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.

p0nce commented 8 years ago

The message queue need to be @nogc, that means @nogc semaphores. This will also avoid @nogc bypass abuse. (EDIT: done)

p0nce commented 8 years ago

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.

p0nce commented 8 years ago

(moved to top post)

p0nce commented 8 years ago

Cocoa UI is blocked by @protocol emulation. (solved)

p0nce commented 8 years ago

Plugin not found in GarageBand But found in Ableton, Reaper, AULab.

p0nce commented 8 years ago

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.

p0nce commented 8 years ago

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

p0nce commented 8 years ago

Got a Cocoa UI to display but without background and in the wrong parent view.

p0nce commented 8 years ago

AU with Cocoa UI now working in Reaper, AULab, Hosting AU. Crash Ableton Live 64b.

p0nce commented 8 years ago

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)

p0nce commented 8 years ago

I swear the semaphore Issue in Ableton Live fixed itself, must be something with Live plugin cache that created the problem?

p0nce commented 8 years ago

To clear Audio Unit cache:

#!/bin/sh
rm ~/Library/Caches/com.apple.audiounits.cache
rm ~/Library/Caches/AudioUnitCache
p0nce commented 8 years ago

release tool tweaked to accept:

p0nce commented 8 years ago

Actually GarageBand can see plugins made with dplug, but it is only 32-bit so won't see 64-bit-only AU.

p0nce commented 8 years ago

Not sure if any host opens a Carbon UI. Maybe disabling it would be safer.

p0nce commented 8 years ago

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)

p0nce commented 8 years ago

32-bit Carbon UI now working in REAPER and GarageBand, no problems. Crash in Studio One went away too.

p0nce commented 8 years ago

Works in Logic without sandboxing or Audio Component API. But crashes somewhere.

p0nce commented 8 years ago

Can't reproduce the crash now. Got a crash too in AULab. The bulk of functionality is there.