Chris@12
|
1
|
Chris@12
|
2 The Vamp Plugin SDK -- Platform Notes for OS/X
|
Chris@12
|
3 ==============================================
|
Chris@12
|
4
|
Chris@12
|
5 Prerequisites
|
Chris@12
|
6 -------------
|
Chris@12
|
7
|
Chris@12
|
8 You must have Xcode installed, with the command-line build tools.
|
Chris@12
|
9
|
Chris@12
|
10 (If you are using Xcode 4, you may have to go to Preferences ->
|
Chris@12
|
11 Downloads -> Components and install the Command Line Tools component.)
|
Chris@12
|
12
|
Chris@12
|
13 You must have libsndfile (http://www.mega-nerd.com/libsndfile/)
|
Chris@12
|
14 installed in order to build the command-line host successfully. But
|
Chris@12
|
15 you do not need libsndfile if you only want to build plugins.
|
Chris@12
|
16
|
Chris@12
|
17
|
Chris@12
|
18 Building at the command line
|
Chris@12
|
19 ----------------------------
|
Chris@12
|
20
|
Chris@12
|
21 To build the SDK, example plugins, and command-line host:
|
Chris@12
|
22
|
Chris@12
|
23 $ make -f build/Makefile.osx
|
Chris@12
|
24
|
Chris@12
|
25 To build only the SDK and example plugins (for example if you do not
|
Chris@12
|
26 have libsndfile installed):
|
Chris@12
|
27
|
Chris@12
|
28 $ make -f build/Makefile.osx sdk examples
|
Chris@12
|
29
|
Chris@12
|
30 See the comments at the top of Makefile.osx for more information about
|
Chris@12
|
31 the libraries and other targets that are built in this way.
|
Chris@12
|
32
|
Chris@12
|
33 If you are using an IDE such as Xcode, you may prefer to simply add
|
Chris@12
|
34 the vamp-sdk and src/vamp-sdk (for plugins) or vamp-hostsdk and
|
Chris@12
|
35 src/vamp-hostsdk (for hosts) directories to your existing project.
|
Chris@12
|
36
|
Chris@12
|
37 If you are using OS/X 10.6 or older, use Makefile.osx.106 instead of
|
Chris@12
|
38 Makefile.osx.
|
Chris@12
|
39
|
Chris@12
|
40
|
Chris@12
|
41 Installing the Example Plugins
|
Chris@12
|
42 ------------------------------
|
Chris@12
|
43
|
Chris@12
|
44 To install the example plugins so you can load them in Vamp hosts,
|
Chris@12
|
45 copy the files
|
Chris@12
|
46
|
Chris@12
|
47 examples/vamp-example-plugins.dylib
|
Chris@12
|
48 and
|
Chris@12
|
49 examples/vamp-example-plugins.cat
|
Chris@12
|
50
|
Chris@12
|
51 to
|
Chris@12
|
52 /Library/Audio/Plug-Ins/Vamp/
|
Chris@12
|
53 or
|
Chris@12
|
54 $HOME/Library/Audio/Plug-Ins/Vamp/
|
Chris@12
|
55
|
Chris@12
|
56
|
Chris@12
|
57 Plugin Linkage
|
Chris@12
|
58 --------------
|
Chris@12
|
59
|
Chris@12
|
60 Vamp plugins are distributed as dynamic libraries (.dylib). An OS/X
|
Chris@12
|
61 dynamic library has a formal installed name, which is recorded in the
|
Chris@12
|
62 library's header: you will need to ensure that this matches the
|
Chris@12
|
63 plugin's filename (e.g. vamp-example-plugins.dylib) by using the
|
Chris@12
|
64 -install_name <name> option at link time. The Makefile.osx provided
|
Chris@12
|
65 with the SDK contains an example of this.
|
Chris@12
|
66
|
Chris@12
|
67 A well-packaged Vamp plugin library should export exactly one public
|
Chris@12
|
68 symbol, namely the Vamp API entry point vampGetPluginDescriptor.
|
Chris@12
|
69
|
Chris@12
|
70 The default for the OS/X linker is to export all of the symbols in the
|
Chris@12
|
71 library. This will work (the host will be able to load the plugin),
|
Chris@12
|
72 but it unnecessarily pollutes the host's symbol namespace, it may
|
Chris@12
|
73 cause symbol collisions in some esoteric circumstances, and it
|
Chris@12
|
74 increases the amount of time the plugin takes to load.
|
Chris@12
|
75
|
Chris@12
|
76 To improve this behaviour, you can instruct the linker to export only
|
Chris@12
|
77 the one required symbol using a symbols list file. To do this, place
|
Chris@12
|
78 the single line
|
Chris@12
|
79
|
Chris@12
|
80 _vampGetPluginDescriptor
|
Chris@12
|
81
|
Chris@12
|
82 (with leading underscore) into a text file, and then use the
|
Chris@12
|
83 -exported_symbols_list option to the linker to tell it to refer to
|
Chris@12
|
84 this file. All other symbols will then be properly hidden.
|
Chris@12
|
85
|
Chris@12
|
86 The Makefile.osx included in this SDK uses this method to manage
|
Chris@12
|
87 symbol visibility for the included example plugins, using the file
|
Chris@12
|
88 build/vamp-plugin.list. There are other methods that will work too,
|
Chris@12
|
89 but this one is simple and has the advantage of requiring no changes
|
Chris@12
|
90 to the code.
|
Chris@12
|
91
|
Chris@12
|
92
|
Chris@12
|
93 Test Your Plugins
|
Chris@12
|
94 -----------------
|
Chris@12
|
95
|
Chris@12
|
96 The Vamp Plugin Tester is a vital utility which you can use to test
|
Chris@12
|
97 your plugins for common problems. It can help you if you're having
|
Chris@12
|
98 problems getting your plugin to work at all, and you're strongly
|
Chris@12
|
99 advised to use it before you release anything. Download it from the
|
Chris@12
|
100 Vamp plugins site now!
|
Chris@12
|
101
|