Movatterモバイル変換


[0]ホーム

URL:


Skip to content
Search Gists
Sign in Sign up

Instantly share code, notes, and snippets.

@olilarkin
Last activeNovember 14, 2024 06:28
    • Star(21)You must be signed in to star a gist
    • Fork(1)You must be signed in to fork a gist
    Save olilarkin/8f378d212b0a59944d84f9f47061d70f to your computer and use it in GitHub Desktop.
    Plugin Dev Notes

    VST3 SDK docs are online here:https://steinbergmedia.github.io/vst3_doc/vstinterfaces/index.html

    macOS

    Xcode

    In order to debug hosts that have been code-signed with the hardened-runtime entitlement, you need to re-sign them. talaviram has made a nice shell script here:https://gist.github.com/talaviram/1f21e141a137744c89e81b58f73e23c3

    v2 audiounits

    • Logic X will cache the I/O configuration of a plug-in with its version number, so if you change your AU's channel I/O, you also need to bump the version number for Logic to show it in the correct places (e.g. mono only au on a mono track fx slot)
    • since macOS High Sierra and the APFS filesystem change auval will not detect newly installed (v2) audiounits without a restart. To fix this you can runkillall -9 AudioComponentRegistrar to force rescan.
    • /usr/bin/auval is a script which calls the command line app/usr/bin/auvaltool
    • on recent macOS auval cannot be launched from xcode in order to debug a plugin due to System Integrity Protection.Copying/usr/bin/auvaltool elsewhere e.g.~/auvaltool will allow auval to be launched, as long as "Debug Executable" is unchecked.
    • In order to debug it properly and hit breakpoints, codesign the copied auvaltool with your own Mac Developer IDcodesign -fs "Mac Developer" ~/auvaltool
    • auval in recent versions of iterm2 will only show apple's aus, not third party. Disable Prefs > Advanced > Allow sessions to survive logging out and back in, to fix that.
    • running auval with the -comp argument will test using the deprecated component manager entry point, rather than the more recent AUPluginFactory
    • Manufacturer 4Char codes must contain at least one uppercase character

    v3 audiounits "Audio Unit Extensions"

    • AUv3s are "app extensions" which behave in a very different way to v2 "components" on macOS. Instead of the binaries living in/Library/Audio/Plug-Ins/Components and~/Library/Audio/Plug-Ins/Components, they are inside a .app bundle, in the subfolder "Plugins", so when you want to build a plugin, you need also to build a .app, even if that app doesn't do much (it delivers the plugin). This is the same on iOS. The plug-in (.appex) is registered by pluginkit when the parent application launches by double clicking, or running from the Xcode debugger. Once that plug-in has been registered it should show up in auval. You can also check with the pluginkit command line app to see if its registered, and the location of the .app and .appex e.g, to look for the apple example auv3, you can grep the bundle id (pluginkit will show all sorts of app extensions):

    oli-mbp:~ oli$ pluginkit -mv | grep com.example.apple-samplecode

    com.example.apple-samplecode.AUv3Filter686EDA2T8T.AUv3FilterExtension(1.0)7A404127-C24B-47F1-A309-55E8E74BBABA2019-07-23 10:19:00 +0000/Users/oli/Library/Developer/Xcode/DerivedData/xx/Build/Products/Debug/AUv3Filter.app/Contents/PlugIns/AUv3FilterExtension.appex

    • when you trash the .app, the appex will be unregistered, and after a short while it will no longer appear when running auval

    AUM developer Jonatan Liljedahl has some good AUv3 iOS notes here:http://devnotes.kymatica.com

    https://developer.apple.com/videos/play/wwdc2015/508/https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_audio_unit_extensions.pdf?dl=1https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/AudioUnit.htmlhttps://medium.com/better-programming/create-audio-unit-extension-from-scratch-77abee79d12https://developer.apple.com/documentation/audiotoolbox/creating_custom_audio_effectshttps://developer.apple.com/documentation/audiotoolbox/incorporating_audio_effects_and_instruments

    @talaviram
    Copy link

    talaviram commentedJul 25, 2022
    edited
    Loading

    In order to debug it properly and hit breakpoints, codesign the copied auvaltool with your own Mac Developer ID codesign -fs "Mac Developer" ~/auvaltool

    I suspect this isn't the case anymore witharm64e since re-signing it breaks it. only way is disabling SIP?
    edit: it will still be usable as Intel x86_64 under Rosetta2.

    @Youlean
    Copy link

    Just to add, channel configurations and tags are stored in this file for Logic: ~/Library/Preferences/com.apple.logic10.plist

    @Youlean
    Copy link

    If you set audio components version number to 0, plugin will always be scanned before launch

    Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

    [8]ページ先頭

    ©2009-2025 Movatter.jp