diff options
author | David Robillard <d@drobilla.net> | 2013-02-11 00:18:55 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2013-02-11 00:18:55 +0000 |
commit | b91e1a81db7b45d0460da1c8a134d855e0ff265c (patch) | |
tree | 3da714cd19b9171bc48614f1442c82383550ffca | |
parent | 5367f7265e123aa8a26f8e3d3fb964f18c3250b2 (diff) | |
download | lv2-b91e1a81db7b45d0460da1c8a134d855e0ff265c.tar.xz |
Order examples in a sensible progression for the book.
-rw-r--r-- | plugins/eg-synth.lv2/manifest.ttl.in | 9 | ||||
-rw-r--r-- | plugins/eg-synth.lv2/synth.c | 171 | ||||
-rw-r--r-- | plugins/eg-synth.lv2/synth.ttl | 44 | ||||
l--------- | plugins/eg-synth.lv2/waf | 1 | ||||
-rw-r--r-- | plugins/eg-synth.lv2/wscript | 64 | ||||
-rw-r--r-- | plugins/eg01-amp.lv2/README.txt (renamed from plugins/eg-amp.lv2/README.txt) | 8 | ||||
-rw-r--r-- | plugins/eg01-amp.lv2/amp.c (renamed from plugins/eg-amp.lv2/amp.c) | 0 | ||||
-rw-r--r-- | plugins/eg01-amp.lv2/amp.ttl (renamed from plugins/eg-amp.lv2/amp.ttl) | 13 | ||||
-rw-r--r-- | plugins/eg01-amp.lv2/manifest.ttl.in (renamed from plugins/eg-amp.lv2/manifest.ttl.in) | 8 | ||||
l--------- | plugins/eg01-amp.lv2/waf (renamed from plugins/eg-amp.lv2/waf) | 0 | ||||
-rw-r--r-- | plugins/eg01-amp.lv2/wscript (renamed from plugins/eg-amp.lv2/wscript) | 0 | ||||
-rw-r--r-- | plugins/eg02-midigate.lv2/README.txt (renamed from plugins/eg-midigate.lv2/README.txt) | 0 | ||||
-rw-r--r-- | plugins/eg02-midigate.lv2/manifest.ttl.in (renamed from plugins/eg-midigate.lv2/manifest.ttl.in) | 0 | ||||
-rw-r--r-- | plugins/eg02-midigate.lv2/midigate.c (renamed from plugins/eg-midigate.lv2/midigate.c) | 0 | ||||
-rw-r--r-- | plugins/eg02-midigate.lv2/midigate.ttl (renamed from plugins/eg-midigate.lv2/midigate.ttl) | 0 | ||||
l--------- | plugins/eg02-midigate.lv2/waf (renamed from plugins/eg-metro.lv2/waf) | 0 | ||||
-rw-r--r-- | plugins/eg02-midigate.lv2/wscript (renamed from plugins/eg-midigate.lv2/wscript) | 0 | ||||
-rw-r--r-- | plugins/eg03-metro.lv2/README.txt (renamed from plugins/eg-metro.lv2/README.txt) | 0 | ||||
-rw-r--r-- | plugins/eg03-metro.lv2/manifest.ttl.in (renamed from plugins/eg-metro.lv2/manifest.ttl.in) | 0 | ||||
-rw-r--r-- | plugins/eg03-metro.lv2/metro.c (renamed from plugins/eg-metro.lv2/metro.c) | 16 | ||||
-rw-r--r-- | plugins/eg03-metro.lv2/metro.ttl (renamed from plugins/eg-metro.lv2/metro.ttl) | 0 | ||||
l--------- | plugins/eg03-metro.lv2/waf (renamed from plugins/eg-midigate.lv2/waf) | 0 | ||||
-rw-r--r-- | plugins/eg03-metro.lv2/wscript (renamed from plugins/eg-metro.lv2/wscript) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/README.txt (renamed from plugins/eg-sampler.lv2/README.txt) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/click.wav (renamed from plugins/eg-sampler.lv2/click.wav) | bin | 644 -> 644 bytes | |||
-rw-r--r-- | plugins/eg04-sampler.lv2/manifest.ttl.in (renamed from plugins/eg-sampler.lv2/manifest.ttl.in) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/sampler.c (renamed from plugins/eg-sampler.lv2/sampler.c) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/sampler.ttl (renamed from plugins/eg-sampler.lv2/sampler.ttl) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/sampler_ui.c (renamed from plugins/eg-sampler.lv2/sampler_ui.c) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/uris.h (renamed from plugins/eg-sampler.lv2/uris.h) | 0 | ||||
l--------- | plugins/eg04-sampler.lv2/waf (renamed from plugins/eg-sampler.lv2/waf) | 0 | ||||
-rw-r--r-- | plugins/eg04-sampler.lv2/wscript (renamed from plugins/eg-sampler.lv2/wscript) | 0 |
32 files changed, 26 insertions, 308 deletions
diff --git a/plugins/eg-synth.lv2/manifest.ttl.in b/plugins/eg-synth.lv2/manifest.ttl.in deleted file mode 100644 index 24acd71..0000000 --- a/plugins/eg-synth.lv2/manifest.ttl.in +++ /dev/null @@ -1,9 +0,0 @@ -# See manifest.ttl.in in the eg-amp.lv2 example for an explanation of this file - -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/plugins/eg-synth> - a lv2:Plugin ; - lv2:binary <synth@LIB_EXT@> ; - rdfs:seeAlso <synth.ttl> . diff --git a/plugins/eg-synth.lv2/synth.c b/plugins/eg-synth.lv2/synth.c deleted file mode 100644 index 758989b..0000000 --- a/plugins/eg-synth.lv2/synth.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - Copyright 2012 Harry van Haaren <harryhaaren@gmail.com> - Copyright 2012 David Robillard <d@drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -/** - @file synth.c Implementation of the LV2 Sin Synth example plugin. - - This is a simple LV2 synthesis plugin that demonstrates how to receive MIDI - events and render audio in response to them. -*/ - -#include <math.h> -#include <stdlib.h> -#include <string.h> - -#include "lv2/lv2plug.in/ns/lv2core/lv2.h" - -#define SYNTH_URI "http://lv2plug.in/plugins/eg-synth" - -/** Port indices. */ -typedef enum { - SYNTH_FREQ = 0, - SYNTH_OUTPUT, -} PortIndex; - -/** Plugin instance. */ -typedef struct { - // Sample rate, necessary to generate sin wave in run() - double sample_rate; - - // Current wave phase - float phase; - - // Port buffers - const float* freq; - float* output; -} Synth; - -/** Create a new plugin instance. */ -static LV2_Handle -instantiate(const LV2_Descriptor* descriptor, - double rate, - const char* bundle_path, - const LV2_Feature* const* features) -{ - Synth* self = (Synth*)malloc(sizeof(Synth)); - if (self) { - // Store the sample rate so it is available in run() - self->sample_rate = rate; - } - return (LV2_Handle)self; -} - -/** Connect a port to a buffer (audio thread, must be RT safe). */ -static void -connect_port(LV2_Handle instance, - uint32_t port, - void* data) -{ - Synth* self = (Synth*)instance; - - switch ((PortIndex)port) { - case SYNTH_FREQ: - self->freq = (const float*)data; - break; - case SYNTH_OUTPUT: - self->output = (float*)data; - break; - } -} - -/** Initialise and prepare the plugin instance for running. */ -static void -activate(LV2_Handle instance) -{ - Synth* self = (Synth*)instance; - - // Initialize phase so we start at the beginning of the wave - self->phase = 0.0f; -} - -/** Process a block of audio (audio thread, must be RT safe). */ -static void -run(LV2_Handle instance, uint32_t n_samples) -{ - Synth* self = (Synth*)instance; - - const float PI = 3.1415; - const float volume = 0.3; - const float freq = *(self->freq); - float* const output = self->output; - - float samples_per_cycle = self->sample_rate / freq; - - /* Calculate the phase offset per sample. Phase ranges from 0..1, so - phase_increment is a floating point number such that we get "freq" - number of cycles in "sample_rate" amount of samples. */ - float phase_increment = (1.f / samples_per_cycle); - - for (uint32_t pos = 0; pos < n_samples; pos++) { - /* Calculate the next sample. Phase ranges from 0..1, but sin() - expects its input in radians, so we multiply by 2 PI to convert it. - We also multiply by volume so it's not extremely loud. */ - output[pos] = sin(self->phase * 2 * PI) * volume; - - /* Increment the phase so we generate the next sample */ - self->phase += phase_increment; - if (self->phase > 1.0f) { - self->phase = 0.0f; - } - } -} - -/** Finish running (counterpart to activate()). */ -static void -deactivate(LV2_Handle instance) -{ - /* Nothing to do here in this trivial mostly stateless plugin. */ -} - -/** Destroy a plugin instance (counterpart to instantiate()). */ -static void -cleanup(LV2_Handle instance) -{ - free(instance); -} - -/** Return extension data provided by the plugin. */ -static const void* -extension_data(const char* uri) -{ - return NULL; /* This plugin has no extension data. */ -} - -/** The LV2_Descriptor for this plugin. */ -static const LV2_Descriptor descriptor = { - SYNTH_URI, - instantiate, - connect_port, - activate, - run, - deactivate, - cleanup, - extension_data -}; - -/** Entry point, the host will call this function to access descriptors. */ -LV2_SYMBOL_EXPORT -const LV2_Descriptor* -lv2_descriptor(uint32_t index) -{ - switch (index) { - case 0: - return &descriptor; - default: - return NULL; - } -} diff --git a/plugins/eg-synth.lv2/synth.ttl b/plugins/eg-synth.lv2/synth.ttl deleted file mode 100644 index fb97d56..0000000 --- a/plugins/eg-synth.lv2/synth.ttl +++ /dev/null @@ -1,44 +0,0 @@ -# LV2 Sinewave synth plugin -# Copyright 2012 Harry van Haaren <harryhaaren@gmail.com> -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -@prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/plugins/eg-synth> - a lv2:Plugin , - lv2:InstrumentPlugin ; - doap:name "Example Synthesizer" ; - doap:license <http://opensource.org/licenses/isc> ; - lv2:project <http://lv2plug.in/ns/lv2> ; - lv2:optionalFeature lv2:hardRTCapable ; - lv2:port [ - a lv2:InputPort , - lv2:ControlPort ; - lv2:index 0 ; - lv2:symbol "frequency" ; - lv2:name "Frequency" ; - lv2:default 440.0 ; - lv2:minimum 40.0 ; - lv2:maximum 880.0 - ] , [ - a lv2:AudioPort , - lv2:OutputPort ; - lv2:index 1 ; - lv2:symbol "out" ; - lv2:name "Out" - ] . diff --git a/plugins/eg-synth.lv2/waf b/plugins/eg-synth.lv2/waf deleted file mode 120000 index 59a1ac9..0000000 --- a/plugins/eg-synth.lv2/waf +++ /dev/null @@ -1 +0,0 @@ -../../waf
\ No newline at end of file diff --git a/plugins/eg-synth.lv2/wscript b/plugins/eg-synth.lv2/wscript deleted file mode 100644 index 2069d03..0000000 --- a/plugins/eg-synth.lv2/wscript +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python -from waflib.extras import autowaf as autowaf -import re - -# Variables for 'waf dist' -APPNAME = 'eg-synth.lv2' -VERSION = '1.0.0' - -# Mandatory variables -top = '.' -out = 'build' - -def options(opt): - opt.load('compiler_c') - autowaf.set_options(opt) - -def configure(conf): - conf.load('compiler_c') - autowaf.configure(conf) - autowaf.set_c99_mode(conf) - autowaf.display_header('Synth Configuration') - - if not autowaf.is_child(): - autowaf.check_pkg(conf, 'lv2', uselib_store='LV2') - - autowaf.display_msg(conf, 'LV2 bundle directory', conf.env.LV2DIR) - print('') - -def build(bld): - bundle = APPNAME - - # Make a pattern for shared objects without the 'lib' prefix - module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN) - module_ext = module_pat[module_pat.rfind('.'):] - - # Build manifest.ttl by substitution (for portable lib extension) - bld(features = 'subst', - source = 'manifest.ttl.in', - target = '%s/%s' % (bundle, 'manifest.ttl'), - install_path = '${LV2DIR}/%s' % bundle, - LIB_EXT = module_ext) - - # Copy other data files to build bundle (build/eg-amp.lv2) - for i in ['synth.ttl']: - bld(features = 'subst', - is_copy = True, - source = i, - target = '%s/%s' % (bundle, i), - install_path = '${LV2DIR}/%s' % bundle) - - # Use LV2 headers from parent directory if building as a sub-project - includes = None - if autowaf.is_child: - includes = '../..' - - # Build plugin library - obj = bld(features = 'c cshlib', - source = 'synth.c', - name = 'synth', - target = '%s/synth' % bundle, - install_path = '${LV2DIR}/%s' % bundle, - uselib = 'LV2', - includes = includes) - obj.env.cshlib_PATTERN = module_pat diff --git a/plugins/eg-amp.lv2/README.txt b/plugins/eg01-amp.lv2/README.txt index c2ab37d..f024a4d 100644 --- a/plugins/eg-amp.lv2/README.txt +++ b/plugins/eg01-amp.lv2/README.txt @@ -2,11 +2,11 @@ This plugin is a simple example of a basic LV2 plugin with no additional features. It has audio ports which contain an array of `float`, -and control ports which contain a single `float`. +and a control port which contain a single `float`. LV2 plugins are defined in two parts: code and data. -The code is written in C (or any C compatible language, such as C++) and defines the executable portions of the plugin. -Static data is described separately in human and machine readable files in the http://www.w3.org/TeamSubmission/turtle/[Turtle] syntax. +The code is written in C, or any C compatible language such as C++. +Static data is described separately in the human and machine friendly http://www.w3.org/TeamSubmission/turtle/[Turtle] syntax. Turtle is a syntax for the RDF data model, but familiarity with RDF is not required to understand this documentation. @@ -16,6 +16,6 @@ There are several advantages to this approach: * Hosts can discover and inspect plugins without loading or executing any plugin code * It is simple to work with plugin data using scripting languages, command line tools, etc. - * A standard format allows the re-use of existing vocabularies to describe plugins + * The standard format allow the use of existing vocabularies to describe plugins and related information * The data inherently integrates with the web, databases, etc. * Labels and documentation are translatable, and available to hosts for display in user interfaces diff --git a/plugins/eg-amp.lv2/amp.c b/plugins/eg01-amp.lv2/amp.c index 8dd7b4f..8dd7b4f 100644 --- a/plugins/eg-amp.lv2/amp.c +++ b/plugins/eg01-amp.lv2/amp.c diff --git a/plugins/eg-amp.lv2/amp.ttl b/plugins/eg01-amp.lv2/amp.ttl index 25e4320..f4a87f2 100644 --- a/plugins/eg-amp.lv2/amp.ttl +++ b/plugins/eg01-amp.lv2/amp.ttl @@ -1,8 +1,17 @@ +# The full description of the plugin is in this file, which is linked to from +# `manifest.ttl`. This is done so the host only needs to scan the relatively +# small `manifest.ttl` files to quickly discover all plugins. + @prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +# First the type of the plugin is described. All plugins must explicitly list +# `lv2:Plugin` as a type. A more specific type should also be given, where +# applicable, so hosts can present a nicer UI for loading plugins. Note that +# this URI is the identifier of the plugin, so if it does not match the one in +# `manifest.ttl`, the host will not discover the plugin data at all. <http://lv2plug.in/plugins/eg-amp> a lv2:Plugin , lv2:AmplifierPlugin ; diff --git a/plugins/eg-amp.lv2/manifest.ttl.in b/plugins/eg01-amp.lv2/manifest.ttl.in index 51f4a79..0da78b0 100644 --- a/plugins/eg-amp.lv2/manifest.ttl.in +++ b/plugins/eg01-amp.lv2/manifest.ttl.in @@ -12,7 +12,7 @@ # # ==== Namespace Prefixes ==== # -# Turtle files often contain many URIs. To make this more readable, prefixes +# Turtle files contain many URIs. To make this more readable, prefixes # can be defined. For example, with the `lv2:` prefix below, instead of # <http://lv2plug.in/ns/lv2core#Plugin> the shorter form `lv2:Plugin` can be # used. This is just a shorthand for URIs within a file, the prefixes are not @@ -33,7 +33,7 @@ # This file is called called `manifest.ttl.in` rather than `manifest.ttl` # to indicate that it is not the final file to be installed. # This is not necessary, but is a good idea for portable plugins. -# For reability, the text will assume `.so` is the extension used. +# For reability, the following text will assume `.so` is the extension used. # # In short, this declares that the resource with URI # "http://lv2plug.in/plugins/eg-amp" is an LV2 plugin, with executable code in @@ -74,14 +74,14 @@ # E.G. WHERE THE PORTION FOLLOWING "http://" IS NOT AN ACTUAL DOMAIN NAME. If # you need an example URI, the domain http://example.org/ is reserved for this # purpose. It is best to use web URIs, e.g. at the domain where plugins are -# hosted for download, even if there is currently no documents hosted there. +# hosted for download, even if no actual documents are currently hosted there. # If this is truly impossible, use a URN, e.g. urn:myplugs:superamp. # # A detailed explanation of each statement follows. <http://lv2plug.in/plugins/eg-amp> a lv2:Plugin . -# The `a` is a Turtle shortcut for rdf:type and more or less means ``is a''. +# The `a`, as in ``is a'', is a Turtle shortcut for `rdf:type`. # `lv2:Plugin` expands to <http://lv2plug.in/ns/lv2core#Plugin> (using the # `lv2:` prefix above) which is the type of all LV2 plugins. # This statement means ``<http://lv2plug.in/plugins/eg-amp> is an LV2 plugin''. diff --git a/plugins/eg-amp.lv2/waf b/plugins/eg01-amp.lv2/waf index 59a1ac9..59a1ac9 120000 --- a/plugins/eg-amp.lv2/waf +++ b/plugins/eg01-amp.lv2/waf diff --git a/plugins/eg-amp.lv2/wscript b/plugins/eg01-amp.lv2/wscript index d4295ff..d4295ff 100644 --- a/plugins/eg-amp.lv2/wscript +++ b/plugins/eg01-amp.lv2/wscript diff --git a/plugins/eg-midigate.lv2/README.txt b/plugins/eg02-midigate.lv2/README.txt index 8f4a0f0..8f4a0f0 100644 --- a/plugins/eg-midigate.lv2/README.txt +++ b/plugins/eg02-midigate.lv2/README.txt diff --git a/plugins/eg-midigate.lv2/manifest.ttl.in b/plugins/eg02-midigate.lv2/manifest.ttl.in index d32f1dc..d32f1dc 100644 --- a/plugins/eg-midigate.lv2/manifest.ttl.in +++ b/plugins/eg02-midigate.lv2/manifest.ttl.in diff --git a/plugins/eg-midigate.lv2/midigate.c b/plugins/eg02-midigate.lv2/midigate.c index 3b74bfc..3b74bfc 100644 --- a/plugins/eg-midigate.lv2/midigate.c +++ b/plugins/eg02-midigate.lv2/midigate.c diff --git a/plugins/eg-midigate.lv2/midigate.ttl b/plugins/eg02-midigate.lv2/midigate.ttl index 59ac815..59ac815 100644 --- a/plugins/eg-midigate.lv2/midigate.ttl +++ b/plugins/eg02-midigate.lv2/midigate.ttl diff --git a/plugins/eg-metro.lv2/waf b/plugins/eg02-midigate.lv2/waf index 59a1ac9..59a1ac9 120000 --- a/plugins/eg-metro.lv2/waf +++ b/plugins/eg02-midigate.lv2/waf diff --git a/plugins/eg-midigate.lv2/wscript b/plugins/eg02-midigate.lv2/wscript index 44336af..44336af 100644 --- a/plugins/eg-midigate.lv2/wscript +++ b/plugins/eg02-midigate.lv2/wscript diff --git a/plugins/eg-metro.lv2/README.txt b/plugins/eg03-metro.lv2/README.txt index 5e9a84a..5e9a84a 100644 --- a/plugins/eg-metro.lv2/README.txt +++ b/plugins/eg03-metro.lv2/README.txt diff --git a/plugins/eg-metro.lv2/manifest.ttl.in b/plugins/eg03-metro.lv2/manifest.ttl.in index bd93f66..bd93f66 100644 --- a/plugins/eg-metro.lv2/manifest.ttl.in +++ b/plugins/eg03-metro.lv2/manifest.ttl.in diff --git a/plugins/eg-metro.lv2/metro.c b/plugins/eg03-metro.lv2/metro.c index 97821a1..d2ac982 100644 --- a/plugins/eg-metro.lv2/metro.c +++ b/plugins/eg03-metro.lv2/metro.c @@ -56,20 +56,18 @@ enum { METRO_OUT = 2 }; +/** During execution this plugin can be in one of 3 states: */ typedef enum { - STATE_ATTACK, - STATE_DECAY, - STATE_OFF + STATE_ATTACK, // Envelope rising + STATE_DECAY, // Envelope lowering + STATE_OFF // Silent } State; +/** The plugin instance structure: */ typedef struct { - /* Features */ - LV2_URID_Map* map; + LV2_URID_Map* map; // URID map feature + MetroURIs uris; // Cache of mapped URIDs - /* URIs */ - MetroURIs uris; - - /* Ports */ struct { LV2_Atom_Sequence* control; LV2_Atom_Sequence* notify; diff --git a/plugins/eg-metro.lv2/metro.ttl b/plugins/eg03-metro.lv2/metro.ttl index a6f297f..a6f297f 100644 --- a/plugins/eg-metro.lv2/metro.ttl +++ b/plugins/eg03-metro.lv2/metro.ttl diff --git a/plugins/eg-midigate.lv2/waf b/plugins/eg03-metro.lv2/waf index 59a1ac9..59a1ac9 120000 --- a/plugins/eg-midigate.lv2/waf +++ b/plugins/eg03-metro.lv2/waf diff --git a/plugins/eg-metro.lv2/wscript b/plugins/eg03-metro.lv2/wscript index 40642b6..40642b6 100644 --- a/plugins/eg-metro.lv2/wscript +++ b/plugins/eg03-metro.lv2/wscript diff --git a/plugins/eg-sampler.lv2/README.txt b/plugins/eg04-sampler.lv2/README.txt index c1cac46..c1cac46 100644 --- a/plugins/eg-sampler.lv2/README.txt +++ b/plugins/eg04-sampler.lv2/README.txt diff --git a/plugins/eg-sampler.lv2/click.wav b/plugins/eg04-sampler.lv2/click.wav Binary files differindex 520a18c..520a18c 100644 --- a/plugins/eg-sampler.lv2/click.wav +++ b/plugins/eg04-sampler.lv2/click.wav diff --git a/plugins/eg-sampler.lv2/manifest.ttl.in b/plugins/eg04-sampler.lv2/manifest.ttl.in index b4fa23e..b4fa23e 100644 --- a/plugins/eg-sampler.lv2/manifest.ttl.in +++ b/plugins/eg04-sampler.lv2/manifest.ttl.in diff --git a/plugins/eg-sampler.lv2/sampler.c b/plugins/eg04-sampler.lv2/sampler.c index 5bb4e54..5bb4e54 100644 --- a/plugins/eg-sampler.lv2/sampler.c +++ b/plugins/eg04-sampler.lv2/sampler.c diff --git a/plugins/eg-sampler.lv2/sampler.ttl b/plugins/eg04-sampler.lv2/sampler.ttl index e008de0..e008de0 100644 --- a/plugins/eg-sampler.lv2/sampler.ttl +++ b/plugins/eg04-sampler.lv2/sampler.ttl diff --git a/plugins/eg-sampler.lv2/sampler_ui.c b/plugins/eg04-sampler.lv2/sampler_ui.c index 40922ae..40922ae 100644 --- a/plugins/eg-sampler.lv2/sampler_ui.c +++ b/plugins/eg04-sampler.lv2/sampler_ui.c diff --git a/plugins/eg-sampler.lv2/uris.h b/plugins/eg04-sampler.lv2/uris.h index e2ec6d0..e2ec6d0 100644 --- a/plugins/eg-sampler.lv2/uris.h +++ b/plugins/eg04-sampler.lv2/uris.h diff --git a/plugins/eg-sampler.lv2/waf b/plugins/eg04-sampler.lv2/waf index 59a1ac9..59a1ac9 120000 --- a/plugins/eg-sampler.lv2/waf +++ b/plugins/eg04-sampler.lv2/waf diff --git a/plugins/eg-sampler.lv2/wscript b/plugins/eg04-sampler.lv2/wscript index 732c904..732c904 100644 --- a/plugins/eg-sampler.lv2/wscript +++ b/plugins/eg04-sampler.lv2/wscript |