diff options
| -rw-r--r-- | plugins/eg-amp.lv2/amp.c | 28 | 
1 files changed, 24 insertions, 4 deletions
diff --git a/plugins/eg-amp.lv2/amp.c b/plugins/eg-amp.lv2/amp.c index c52eedd..344f7b4 100644 --- a/plugins/eg-amp.lv2/amp.c +++ b/plugins/eg-amp.lv2/amp.c @@ -1,7 +1,6 @@  /* -  LV2 Amp Example Plugin -  Copyright 2006-2011 Steve Harris <steve@plugin.org.uk>, -                      David Robillard <d@drobilla.net> +  Copyright 2006-2011 David Robillard <d@drobilla.net> +  Copyright 2006 Steve Harris <steve@plugin.org.uk>    Permission to use, copy, modify, and/or distribute this software for any    purpose with or without fee is hereby granted, provided that the above @@ -16,6 +15,14 @@    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  */ +/** +   @file amp.c Implementation of the LV2 Amp example plugin. + +   This is a basic working LV2 plugin, about as small as one can get.  It is +   useful as a skeleton to copy to build more advanced plugins.  See lv2.h for +   more detailed descriptions of the rules for the various functions. +*/ +  #include <math.h>  #include <stdlib.h>  #include <string.h> @@ -24,18 +31,21 @@  #define AMP_URI "http://lv2plug.in/plugins/eg-amp" +/** Port indices. */  typedef enum {  	AMP_GAIN   = 0,  	AMP_INPUT  = 1,  	AMP_OUTPUT = 2  } PortIndex; +/** Plugin instance. */  typedef struct {  	float* gain;  	float* input;  	float* output;  } Amp; +/** Called to create a new plugin instance. */  static LV2_Handle  instantiate(const LV2_Descriptor*     descriptor,              double                    rate, @@ -47,6 +57,7 @@ instantiate(const LV2_Descriptor*     descriptor,  	return (LV2_Handle)amp;  } +/** Called to connect a port to a buffer (audio thread, must be RT safe). */  static void  connect_port(LV2_Handle instance,               uint32_t   port, @@ -67,13 +78,16 @@ connect_port(LV2_Handle instance,  	}  } +/** Called to initialise and prepare the instance for running. */  static void  activate(LV2_Handle instance)  { +	/* Nothing to do here in this trivial mostly stateless plugin. */  }  #define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f) +/** Called to process a block of audio (audio thread, must be RT safe). */  static void  run(LV2_Handle instance, uint32_t n_samples)  { @@ -90,23 +104,28 @@ run(LV2_Handle instance, uint32_t n_samples)  	}  } +/** Called when running is finished (counterpart to activate()). */  static void  deactivate(LV2_Handle instance)  { +	/* Nothing to do here in this trivial mostly stateless plugin. */  } +/** Called to destroy a plugin instance (counterpart to instantiate()). */  static void  cleanup(LV2_Handle instance)  {  	free(instance);  } +/** Called to access extension data provided by the plugin. */  const void*  extension_data(const char* uri)  { -	return NULL; +	return NULL;  /* This plugin has no extension data. */  } +/** The LV2_Descriptor for this plugin. */  static const LV2_Descriptor descriptor = {  	AMP_URI,  	instantiate, @@ -118,6 +137,7 @@ static const LV2_Descriptor descriptor = {  	extension_data  }; +/** Entry point, the host will call this function to access descriptors. */  LV2_SYMBOL_EXPORT  const LV2_Descriptor*  lv2_descriptor(uint32_t index)  |