Skip to content

Instantly share code, notes, and snippets.

@olilarkin
Last active November 14, 2024 06:28
Show Gist options
  • Select an option

  • Save olilarkin/8f378d212b0a59944d84f9f47061d70f to your computer and use it in GitHub Desktop.

Select an option

Save olilarkin/8f378d212b0a59944d84f9f47061d70f to your computer and use it in GitHub Desktop.

Revisions

  1. olilarkin revised this gist Sep 1, 2022. 1 changed file with 1 addition and 4 deletions.
    5 changes: 1 addition & 4 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -6,10 +6,7 @@ VST3 SDK docs are online here: https://steinbergmedia.github.io/vst3_doc/vstinte

    # Xcode

    Since recent xcode/macOS versions you can get a lot of security prompts when debugging. This can reduce that

    ```sudo /usr/sbin/DevToolsSecurity --enable```

    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

  2. olilarkin revised this gist Nov 5, 2020. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -13,6 +13,7 @@ Since recent xcode/macOS versions you can get a lot of security prompts when deb

    ## 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 run
    ```killall -9 AudioComponentRegistrar``` to force rescan.
    * ```/usr/bin/auval``` is a script which calls the command line app ```/usr/bin/auvaltool```
  3. olilarkin revised this gist Jun 20, 2020. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,13 @@ VST3 SDK docs are online here: https://steinbergmedia.github.io/vst3_doc/vstinte

    # macOS

    # Xcode

    Since recent xcode/macOS versions you can get a lot of security prompts when debugging. This can reduce that

    ```sudo /usr/sbin/DevToolsSecurity --enable```


    ## v2 audiounits

    * 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 run
  4. olilarkin revised this gist Feb 15, 2020. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -26,8 +26,7 @@ VST3 SDK docs are online here: https://steinbergmedia.github.io/vst3_doc/vstinte

    * 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/
  5. olilarkin revised this gist Aug 5, 2019. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,7 @@
    # VST3

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

    # macOS

    ## v2 audiounits
  6. olilarkin revised this gist Jul 23, 2019. 1 changed file with 5 additions and 4 deletions.
    9 changes: 5 additions & 4 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -14,11 +14,12 @@

    ## 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:
    * 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-55E8E74BBABA 2019-07-23 10:19:00 +0000 /Users/oli/Library/Developer/Xcode/DerivedData/xx/Build/Products/Debug/AUv3Filter.app/Contents/PlugIns/AUv3FilterExtension.appex```

    ```oli-mbp:~ oli$ pluginkit -mv | grep com.example.apple-samplecode
    com.example.apple-samplecode.AUv3Filter686EDA2T8T.AUv3FilterExtension(1.0) 7A404127-C24B-47F1-A309-55E8E74BBABA 2019-07-23 10:19:00 +0000 /Users/oli/Library/Developer/Xcode/DerivedData/AUv3Filter-eroousectpgnexdodkfrtomleieq/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


  7. olilarkin revised this gist Jul 23, 2019. 1 changed file with 11 additions and 0 deletions.
    11 changes: 11 additions & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -14,6 +14,17 @@

    ## 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:

    ```oli-mbp:~ oli$ pluginkit -mv | grep com.example.apple-samplecode
    com.example.apple-samplecode.AUv3Filter686EDA2T8T.AUv3FilterExtension(1.0) 7A404127-C24B-47F1-A309-55E8E74BBABA 2019-07-23 10:19:00 +0000 /Users/oli/Library/Developer/Xcode/DerivedData/AUv3Filter-eroousectpgnexdodkfrtomleieq/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
    https://developer.apple.com/videos/play/wwdc2015/508/
    https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_audio_unit_extensions.pdf?dl=1
    https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/AudioUnit.html
  8. olilarkin revised this gist Jul 19, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion notes.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@

    * 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 run
    ```killall -9 AudioComponentRegistrar``` to force rescan.
    * auval is a script which calls the actually cli app auvaltool
    * ```/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 ID ```codesign -fs "Mac Developer" ~/auvaltool```
  9. olilarkin revised this gist Jul 19, 2019. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -10,6 +10,7 @@
    * In order to debug it properly and hit breakpoints, codesign the copied auvaltool with your own Mac Developer ID ```codesign -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"

  10. olilarkin revised this gist Jul 18, 2019. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -9,6 +9,7 @@
    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 ID ```codesign -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

    ## v3 audiounits "Audio Unit Extensions"

  11. olilarkin revised this gist Jul 18, 2019. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,7 @@
    * 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 ID ```codesign -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.

    ## v3 audiounits "Audio Unit Extensions"

  12. olilarkin revised this gist Jul 18, 2019. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,10 @@

    * 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 run
    ```killall -9 AudioComponentRegistrar``` to force rescan.
    * auval is a script which calls the actually cli app 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 ID ```codesign -fs "Mac Developer" ~/auvaltool```

    ## v3 audiounits "Audio Unit Extensions"

  13. olilarkin revised this gist Jun 11, 2019. 1 changed file with 13 additions and 2 deletions.
    15 changes: 13 additions & 2 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,15 @@
    # auval macOS
    # macOS

    ## v2 audiounits

    * 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 run
    ```killall -9 AudioComponentRegistrar```
    ```killall -9 AudioComponentRegistrar``` to force rescan.

    ## v3 audiounits "Audio Unit Extensions"

    https://developer.apple.com/videos/play/wwdc2015/508/
    https://devstreaming-cdn.apple.com/videos/wwdc/2015/508691kyzp/508/508_audio_unit_extensions.pdf?dl=1
    https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/AudioUnit.html
    https://medium.com/better-programming/create-audio-unit-extension-from-scratch-77abee79d12
    https://developer.apple.com/documentation/audiotoolbox/creating_custom_audio_effects
    https://developer.apple.com/documentation/audiotoolbox/incorporating_audio_effects_and_instruments
  14. olilarkin revised this gist Jun 11, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion notes.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # auval macOS

    * since macOS High Sierra and the APFS filesystem change auval will not detect newly installed audiounits without a restart. To fix this you can run
    * 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 run
    ```killall -9 AudioComponentRegistrar```
  15. olilarkin created this gist Jun 11, 2019.
    4 changes: 4 additions & 0 deletions notes.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,4 @@
    # auval macOS

    * since macOS High Sierra and the APFS filesystem change auval will not detect newly installed audiounits without a restart. To fix this you can run
    ```killall -9 AudioComponentRegistrar```