Expand readme
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
This commit is contained in:
		
							parent
							
								
									c27c9988b7
								
							
						
					
					
						commit
						de6512b420
					
				
							
								
								
									
										72
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										72
									
								
								README.md
									
									
									
									
									
								
							@ -3,6 +3,78 @@
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## How To
 | 
			
		||||
 | 
			
		||||
* Install this library:
 | 
			
		||||
 | 
			
		||||
        nimble install https://git.0x20.eu/chris/nymph
 | 
			
		||||
 | 
			
		||||
* Copy `examples/amp.lv2` and `examples/amp.nim` into your project and rename
 | 
			
		||||
  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` and change the plugin URI and change the
 | 
			
		||||
  plugin's shared library name defined with `lv2:binary` to `libmyplugin.so`.
 | 
			
		||||
 | 
			
		||||
* 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 in
 | 
			
		||||
      `myplugin.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 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:
 | 
			
		||||
 | 
			
		||||
        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](./nymph.nimble#L43) file on how to create a nimble task
 | 
			
		||||
    to simplify compilation.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Dependencies
 | 
			
		||||
 | 
			
		||||
Required:
 | 
			
		||||
 | 
			
		||||
* [Nim] >= 2.0
 | 
			
		||||
 | 
			
		||||
Optional:
 | 
			
		||||
 | 
			
		||||
* [lv2bm] - For benchmarking and stress-testing plugins
 | 
			
		||||
* [lv2lint] - For checking conformity of plugin bundles
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[LV2]: https://lv2plug.in/
 | 
			
		||||
[lv2bm]: https://github.com/moddevices/lv2bm
 | 
			
		||||
[lv2lint]: https://git.open-music-kontrollers.ch/~hp/lv2lint
 | 
			
		||||
[Nim]: https://nim-lang.org/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user