docs: update how-to instructions in readme for changed file names

Link to Nim sourec of each example

Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
This commit is contained in:
Christopher Arndt 2024-09-30 09:26:46 +02:00
parent e6c66ed72c
commit 38dc236740
1 changed files with 44 additions and 35 deletions

View File

@ -1,6 +1,7 @@
# nymph # nymph
A [Nim] library for writing audio and MIDI plugins conforming to the [LV2] standard A [Nim] library for writing audio and MIDI plugins conforming to the [LV2]
standard
## Examples ## Examples
@ -27,51 +28,59 @@ the basename of the plugin's LV2 bundle dir.
Currently, there are just a few other example plugins: Currently, there are just a few other example plugins:
* `miditranspose`: shows how to handle receiving and sending MIDI events. * [`miditranspose`](./examples/miditranspose_plugin.nim): shows how to handle
* `multimodefilter`: shows a multimode state-variable filter implementation receiving and sending MIDI events.
ported from C++ to Nim. * [`multimodefilter`](./examples/multimodefilter_plugin.nim): shows a
* `tiltfilter`: shows a multimode tilt equalizer filter implementation ported multimode state-variable filter implementation ported from C++ to Nim.
from Rust to Nim. * [`tiltfilter`](./examples/titltfilter_plugin.nim): shows a multimode tilt
* `faustlpf`: shows how to integrate DSP C code generated from a [FAUST] equalizer filter implementation ported from Rust to Nim.
source file in Nim (in this example the FAUST code implements a simple * [`faustlpf`](./examples/faustlpf_plugin.nim): shows how to integrate DSP C
non-resonant low-pass filter from the FAUST standard library). code generated from a [FAUST] source file in Nim (in this example the FAUST
code implements a simple non-resonant low-pass filter from the FAUST
standard library).
## How To ## How To
* Install this library: **Note:** I'll use `mydsp` as the base name for the new plugin in the
examples below. Substitute your own plugin basename wherever you see it used
below.
nimble install https://git.0x20.eu/chris/nymph 1. Install this library:
* Copy `examples/amp.lv2` and `examples/amp.nim` into your project and rename nimble install https://github.com/SpotlightKid/nymph.git
them as you like (also rename `amp.lv2/amp.ttl`). I'll use `myplugin` as the
base name in the examples below.
* Edit `myplugin.lv2/manifest.ttl`: 1. Make a directory named `mydsp.lv2` and copy `examples/amp.lv2/manifest.ttl`
into it. Also copy `examples/amp.lv2/amp.ttl` to `mydsp.lv2/mydsp.ttl`.
1. Copy `examples/amp_plugin.nim` into your project as `mydsp_plugin.nim`.
1. Edit `mydsp.lv2/manifest.ttl`:
* Change the plugin URI. * Change the plugin URI.
* Change the plugin's shared library name defined via `lv2:binary` to * Change the plugin's shared library name defined via `lv2:binary` to
`libmyplugin.so`. `libmydsp.so`.
* Change file name referenced via `rdfs:seeAlso` to `myplugin.ttl`. * Change file name referenced via `rdfs:seeAlso` to `mydsp.ttl`.
* Edit `myplugin.lv2/myplugin.ttl`: 1. Edit `mydsp.lv2/mydsp.ttl`:
* Change the plugin URI. * Change the plugin URI.
* Define audio, control and atom ports as needed. * Define audio, control and atom ports as needed.
* Edit `myplugin.nim`: 1. Edit `mydsp_plugin.nim`:
* Change the `PluginUri` constant at the top. * Change the `PluginUri` constant at the top.
* Change the `PluginPort` enum and list the ports in the order defined in * Change the `PluginPort` enum and list the ports in the order defined in
`myplugin.ttl`. `mydsp.ttl`.
* Rename and update the definition of the `AmpPlugin` object type and * Rename and update the definition of the `AmpPlugin` object type and
define its members with the appropriate data type for the plugin port define its members with the appropriate data types for the plugin ports
they will be connected to. Update the type name in the `instantiate`, they will be connected to. Update the type name in the `instantiate`,
`deactivate`, `connectPorts` and `run` procs. `deactivate`, `connectPorts` and `run` procs.
* Update and extend the `case` statement in `connectPort` to connect ports * Update and extend the `case` statement in `connectPort` to connect ports
to your plugin object instance members. to your plugin object instance members.
* Implement your DSP code in the `run` proc. * Implement your DSP code in the `run` proc.
* Compile the plugin shared library object with: 1. Compile the plugin shared library object with:
nim c --app:lib --noMain:on --mm:arc \ nim c --app:lib --noMain:on --mm:arc \
--out:myplugin.lv2/libmyplugin.so myplugin.nim --out:mydsp.lv2/libmydsp.so mydsp_plugin.nim
See the definition of the `build_ex` task in the See the definition of the `build_ex` task in the
[nymph.nimble](./nymph.nimble#L67) file on how to create a nimble task [nymph.nimble](./nymph.nimble#L67) file on how to create a nimble task