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`
* Change the plugin URI. into it. Also copy `examples/amp.lv2/amp.ttl` to `mydsp.lv2/mydsp.ttl`.
* Change the plugin's shared library name defined via `lv2:binary` to
`libmyplugin.so`.
* Change file name referenced via `rdfs:seeAlso` to `myplugin.ttl`.
* Edit `myplugin.lv2/myplugin.ttl`: 1. Copy `examples/amp_plugin.nim` into your project as `mydsp_plugin.nim`.
* Change the plugin URI.
* Define audio, control and atom ports as needed.
* Edit `myplugin.nim`: 1. Edit `mydsp.lv2/manifest.ttl`:
* Change the `PluginUri` constant at the top. * Change the plugin URI.
* Change the `PluginPort` enum and list the ports in the order defined in * Change the plugin's shared library name defined via `lv2:binary` to
`myplugin.ttl`. `libmydsp.so`.
* Rename and update the definition of the `AmpPlugin` object type and * Change file name referenced via `rdfs:seeAlso` to `mydsp.ttl`.
define its members with the appropriate data type for the plugin port
they will be connected to. Update the type name in the `instantiate`,
`deactivate`, `connectPorts` and `run` procs.
* Update and extend the `case` statement in `connectPort` to connect ports
to your plugin object instance members.
* Implement your DSP code in the `run` proc.
* Compile the plugin shared library object with: 1. Edit `mydsp.lv2/mydsp.ttl`:
* Change the plugin URI.
* Define audio, control and atom ports as needed.
1. Edit `mydsp_plugin.nim`:
* Change the `PluginUri` constant at the top.
* Change the `PluginPort` enum and list the ports in the order defined in
`mydsp.ttl`.
* Rename and update the definition of the `AmpPlugin` object type and
define its members with the appropriate data types for the plugin ports
they will be connected to. Update the type name in the `instantiate`,
`deactivate`, `connectPorts` and `run` procs.
* Update and extend the `case` statement in `connectPort` to connect ports
to your plugin object instance members.
* Implement your DSP code in the `run` proc.
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