2.6 KiB
nymph
A Nim library for writing audio and MIDI plugins conforming to the LV2 standard
Examples
Build the amp.lv2
example plugin:
nimble build_ex amp
Check the amp.lv2
plugin bundle with lv2lint
:
nimble lv2lint amp
Run the lv2bm
benchmark with the amp.lv2
plugin:
nimble lv2bm amp
Install the amp.lv2
example plugin:
cp -a examples/amp.lv2 ~/.lv2
Other example plugins can be found in the examples directory and can be built and tested with similar commands, just changing the example name to the basename of the plugin's LV2 bundle dir.
Currently, there are only two other example plugins, multimode_filter
and
miditranspose
, but more will be added in due time.
How To
-
Install this library:
nimble install https://git.0x20.eu/chris/nymph
-
Copy
examples/amp.lv2
andexamples/amp.nim
into your project and rename them as you like (also renameamp.lv2/amp.ttl
). I'll usemyplugin
as the base name in the examples below. -
Edit
myplugin.lv2/manifest.ttl
:- Change the plugin URI.
- Change the plugin's shared library name defined via
lv2:binary
tolibmyplugin.so
. - Change file name referenced via
rdfs:seeAlso
tomyplugin.ttl
.
-
Edit
myplugin.lv2/myplugin.ttl
:- Change the plugin URI.
- Define audio, control and atom ports as needed.
-
Edit
myplugin.nim
:- Change the
PluginUri
constant at the top. - Change the
PluginPort
enum and list the ports in the order defined inmyplugin.ttl
. - Rename and update the definition of the
AmpPlugin
object type and define its members with the appropriate data type for the plugin port they will be connected to. Update the type name in theinstantiate
,deactivate
,connectPorts
andrun
procs. - Update and extend the
case
statement inconnectPort
to connect ports to your plugin object instance members. - Implement your DSP code in the
run
proc.
- Change the
-
Compile the plugin shared library object with:
nim c --app:lib --noMain:on --mm:arc \ --out:myplugin.lv2/libmyplugin.so myplugin.nim
See the definition of the
build_ex
task in the nymph.nimble file on how to create a nimble task to simplify compilation.
Dependencies
Required:
- Nim >= 2.0
Optional: