summaryrefslogtreecommitdiff
path: root/lv2
diff options
context:
space:
mode:
Diffstat (limited to 'lv2')
-rw-r--r--lv2/Makefile.am36
-rw-r--r--lv2/drumgizmo.ttl156
-rw-r--r--lv2/input_lv2.cc117
-rw-r--r--lv2/input_lv2.h56
-rw-r--r--lv2/lv2.cc250
-rw-r--r--lv2/lv2_event.h281
-rw-r--r--lv2/lv2_gui.cc237
-rw-r--r--lv2/lv2_gui.h40
-rw-r--r--lv2/lv2_instance.h50
-rw-r--r--lv2/manifest.ttl7
-rw-r--r--lv2/output_lv2.cc82
-rw-r--r--lv2/output_lv2.h61
12 files changed, 0 insertions, 1373 deletions
diff --git a/lv2/Makefile.am b/lv2/Makefile.am
deleted file mode 100644
index 09ef24c..0000000
--- a/lv2/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-include $(top_srcdir)/plugingui/Makefile.am.plugingui
-include $(top_srcdir)/src/Makefile.am.drumgizmo
-
-plugindir = $(libdir)/lv2/drumgizmo.lv2
-
-if ENABLE_LV2
-plugin_LTLIBRARIES = drumgizmo.la
-endif
-
-plugin_DATA = manifest.ttl drumgizmo.ttl
-
-EXTRA_DIST = \
- $(plugin_DATA) \
- input_lv2.h \
- output_lv2.h \
- lv2_event.h \
- lv2_gui.h \
- lv2_instance.h
-
-drumgizmo_la_CXXFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/plugingui \
- -I$(top_srcdir)/include $(SNDFILE_CXXFLAGS) \
- $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(LV2_CFLAGS) \
- $(PLUGIN_GUI_CFLAGS) $(SSEFLAGS) $(ZITA_CPPFLAGS) \
- -DUSE_THREAD $(SAMPLERATE_CFLAGS)
-
-drumgizmo_la_SOURCES = \
- $(DRUMGIZMO_SOURCES) \
- $(PLUGIN_GUI_SOURCES) \
- lv2.cc \
- lv2_gui.cc \
- input_lv2.cc \
- output_lv2.cc
-
-drumgizmo_la_LDFLAGS = -module -avoid-version
-drumgizmo_la_LIBADD = $(LV2_LIBS) $(PLUGIN_GUI_LIBS) $(DRUMGIZMO_LIBS)
-
diff --git a/lv2/drumgizmo.ttl b/lv2/drumgizmo.ttl
deleted file mode 100644
index 1854d74..0000000
--- a/lv2/drumgizmo.ttl
+++ /dev/null
@@ -1,156 +0,0 @@
-# LV2 DrumGizmo Plugin
-# Copyright 2011 Bent Bisballe Nyeng <deva@aasimon.org>
-#
-# 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 atom: <http://lv2plug.in/ns/ext/atom#> .
-@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> .
-@prefix state: <http://lv2plug.in/ns/ext/state#> .
-@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> .
-
-<http://drumgizmo.org/lv2-gui>
- a uiext:external ;
- uiext:binary <drumgizmo.so> .
-
-<http://drumgizmo.org/lv2>
- a lv2:InstrumentPlugin ;
- doap:name "DrumGizmo" ;
- doap:maintainer [
- foaf:name "DrumGizmo.org";
- foaf:homepage <http://www.drumgizmo.org> ;
- ] ;
- doap:license <http://usefulinc.com/doap/licenses/gpl> ;
- uiext:ui <http://drumgizmo.org/lv2-gui> ;
- doap:license <http://opensource.org/licenses/gpl-3.0> ;
- lv2:optionalFeature <http://lv2plug.in/ns/ext/uri-map> ;
- lv2:optionalFeature <http://lv2plug.in/ns/ext/event> ;
- lv2:extensionData state:interface ;
- lv2:port [
- a lv2:InputPort, lv2:ControlPort ;
- lv2:index 0 ;
- lv2:symbol "lv2_freewheel" ;
- lv2:name "Freewheel" ;
- lv2:default 0.0 ;
- lv2:minimum 0.0 ;
- lv2:maximum 1.0 ;
- lv2:designation <http://lv2plug.in/ns/lv2core#freeWheeling> ;
- lv2:portProperty lv2:toggled ;
- lv2:portProperty pprops:hasStrictBounds;
- ] , [
- a atom:AtomPort ,
- lv2:InputPort;
- atom:bufferType atom:Sequence ;
- atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ;
- lv2:index 1 ;
- lv2:symbol "control" ;
- lv2:name "Control"
- ] , [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 2 ;
- lv2:symbol "out1" ;
- lv2:name "Out1"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 3 ;
- lv2:symbol "out2" ;
- lv2:name "Out2"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 4 ;
- lv2:symbol "out3" ;
- lv2:name "Out3"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 5 ;
- lv2:symbol "out4" ;
- lv2:name "Out4"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 6 ;
- lv2:symbol "out5" ;
- lv2:name "Out5"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 7 ;
- lv2:symbol "out6" ;
- lv2:name "Out6"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 8 ;
- lv2:symbol "out7" ;
- lv2:name "Out7"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 9 ;
- lv2:symbol "out8" ;
- lv2:name "Out8"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 10 ;
- lv2:symbol "out9" ;
- lv2:name "Out9"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 11 ;
- lv2:symbol "out10" ;
- lv2:name "Out10"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 12 ;
- lv2:symbol "out11" ;
- lv2:name "Out11"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 13 ;
- lv2:symbol "out12" ;
- lv2:name "Out12"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 14 ;
- lv2:symbol "out13" ;
- lv2:name "Out13"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 15 ;
- lv2:symbol "out14" ;
- lv2:name "Out14"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 16 ;
- lv2:symbol "out15" ;
- lv2:name "Out15"
- ], [
- a lv2:AudioPort ,
- lv2:OutputPort ;
- lv2:index 17 ;
- lv2:symbol "out16" ;
- lv2:name "Out16"
- ] .
diff --git a/lv2/input_lv2.cc b/lv2/input_lv2.cc
deleted file mode 100644
index aa3ff9d..0000000
--- a/lv2/input_lv2.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * input_lv2.cc
- *
- * Wed Jul 13 14:27:02 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "input_lv2.h"
-
-#include "lv2/lv2plug.in/ns/ext/atom/util.h"
-
-#include <midimapparser.h>
-
-#include <hugin.hpp>
-
-InputLV2::InputLV2()
-{
- eventPort = NULL;
-}
-
-InputLV2::~InputLV2()
-{
-}
-
-bool InputLV2::init(Instruments &i)
-{
- instruments = &i;
- return true;
-}
-
-void InputLV2::setParm(std::string parm, std::string value)
-{
-}
-
-bool InputLV2::start()
-{
- return true;
-}
-
-void InputLV2::stop()
-{
-}
-
-void InputLV2::pre()
-{
-}
-
-event_t *InputLV2::run(size_t pos, size_t len, size_t *nevents)
-{
- if(eventPort == NULL) {
- *nevents = 0;
- return NULL;
- }
-
- event_t *list;
- size_t listsize;
-
- list = (event_t *)malloc(sizeof(event_t) * 1000);
- listsize = 0;
-
- LV2_Atom_Event* ev = lv2_atom_sequence_begin(&eventPort->body);
-
- while(!lv2_atom_sequence_is_end(&eventPort->body,
- eventPort->atom.size,
- ev)) {
- uint8_t* const data = (uint8_t*)(ev+1);
-
- if ((data[0] & 0xF0) == 0x80) { // note off
- int key = data[1];
- (void)key;
- DEBUG(lv2input, "Event (off) key:%d\n", key);
- }
-
- if ((data[0] & 0xF0) == 0x90) { // note on
- int key = data[1];
- int velocity = data[2];
-
- DEBUG(lv2input, "Event key:%d vel:%d\n", key, velocity);
-
- int i = mmap.lookup(key);
- if(velocity && i != -1) {
- list[listsize].type = TYPE_ONSET;
- list[listsize].instrument = i;
- list[listsize].velocity = velocity / 127.0;
- list[listsize].offset = ev->time.frames;
- listsize++;
- }
- }
- ev = lv2_atom_sequence_next(ev);
- }
-
- *nevents = listsize;
- return list;
-}
-
-void InputLV2::post()
-{
-}
diff --git a/lv2/input_lv2.h b/lv2/input_lv2.h
deleted file mode 100644
index 44ad7da..0000000
--- a/lv2/input_lv2.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * input_lv2.h
- *
- * Wed Jul 13 14:27:02 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#ifndef __DRUMGIZMO_INPUT_LV2_H__
-#define __DRUMGIZMO_INPUT_LV2_H__
-
-#include <audioinputenginemidi.h>
-
-#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
-
-class InputLV2 : public AudioInputEngineMidi {
-public:
- InputLV2();
- ~InputLV2();
-
- bool init(Instruments &instruments);
-
- void setParm(std::string parm, std::string value);
-
- bool start();
- void stop();
-
- void pre();
- event_t *run(size_t pos, size_t len, size_t *nevents);
- void post();
-
- LV2_Atom_Sequence *eventPort{nullptr};
-
-private:
- Instruments *instruments{nullptr};
-};
-
-#endif/*__DRUMGIZMO_INPUT_LV2_H__*/
diff --git a/lv2/lv2.cc b/lv2/lv2.cc
deleted file mode 100644
index 224fca9..0000000
--- a/lv2/lv2.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * lv2.cc
- *
- * Wed Jul 13 13:50:33 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/atom/atom.h>
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "lv2_gui.h"
-#include "lv2_instance.h"
-
-#include <hugin.hpp>
-
-enum {
- FREE_WHEEL_PORT = 0,
- MIDI_PORT,
- AUDIO_PORT_BASE
-};
-
-#define DRUMGIZMO_URI "http://drumgizmo.org/lv2"
-#define NS_DG DRUMGIZMO_URI "/atom#"
-
-// Stuff to handle DrumGizmo* transmission from instance to GUI.
-static LV2_DrumGizmo_Descriptor dg_descriptor;
-
-static DrumGizmo *dg_get_pci(LV2_Handle instance)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
- return dglv2->dg;
-}
-
-LV2_State_Status dg_save(LV2_Handle instance,
- LV2_State_Store_Function store,
- LV2_State_Handle handle,
- uint32_t flags,
- const LV2_Feature *const * features)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
-
- if(!dglv2 || !dglv2->map || !dglv2->map->map) {
- // Missing urid feature?
- return LV2_STATE_ERR_NO_FEATURE;
- }
-
- std::string config = dglv2->dg->configString();
-
- // Backwards compatible fix for errornously stored '\0' byte in < v0.9.8.
- // Remove when we reach v1.0
- config += "\n";
-
- store(handle,
- dglv2->map->map(dglv2->map->handle, NS_DG "config"),
- config.data(),
- config.length(),
- dglv2->map->map(dglv2->map->handle, LV2_ATOM__Chunk),
- LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE);
-
- return LV2_STATE_SUCCESS;
-}
-
-LV2_State_Status dg_restore(LV2_Handle instance,
- LV2_State_Retrieve_Function retrieve,
- LV2_State_Handle handle,
- uint32_t flags,
- const LV2_Feature *const * features)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
-
- if(!dglv2 || !dglv2->map || !dglv2->map->map) {
- // Missing urid feature?
- return LV2_STATE_ERR_NO_FEATURE;
- }
-
- size_t size;
- uint32_t type;
-
- const char* data =
- (const char*)retrieve(handle,
- dglv2->map->map(dglv2->map->handle, NS_DG "config"),
- &size, &type, &flags);
-
- DEBUG(lv2, "Config string size: %d, data*: %p\n", (int)size, data);
-
- if(data && size) {
- std::string config;
-
- // Fix for errornously stored '\0' byte in < v0.9.8.
- // Remove when we reach v1.0
- if(data[size - 1] == '\0') size--;
-
- config.append(data, size);
- dglv2->dg->setConfigString(config);
- }
-
- return LV2_STATE_SUCCESS;
-}
-
-static LV2_State_Interface dg_persist = {
- dg_save,
- dg_restore
-};
-
-LV2_Handle instantiate(const struct _LV2_Descriptor *descriptor,
- double sample_rate,
- const char *bundle_path,
- const LV2_Feature *const *features)
-{
- DGLV2 *dglv2 = new DGLV2;
-
- dglv2->free_wheel_port = NULL; // Not assigned
- dglv2->pos = 0; // Start from the beginning
-
- dglv2->map = NULL;
- for (int i = 0 ; features[i] ; i++) {
- if (!strcmp(features[i]->URI, LV2_URID_URI "#map")) {
- dglv2->map = (LV2_URID_Map*)features[i]->data;
- }
- }
-
- dg_descriptor.get_pci = dg_get_pci;
-
- dglv2->in = new InputLV2();
- dglv2->out = new OutputLV2();
-
- dglv2->buffer = NULL;
- dglv2->buffer_size = 0;
-
- dglv2->dg = new DrumGizmo(dglv2->out, dglv2->in);
- dglv2->dg->setSamplerate(sample_rate);
-
- return (LV2_Handle)dglv2;
-}
-
-void connect_port(LV2_Handle instance, uint32_t port, void *data_location)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
-
- if(port == FREE_WHEEL_PORT) {
- dglv2->free_wheel_port = (float*)data_location;
- }
-
- if(port == MIDI_PORT) { // MIDI in
- dglv2->in->eventPort = (LV2_Atom_Sequence*)data_location;
- }
-
- if(port >= AUDIO_PORT_BASE) { // Audio Port
- uint32_t audio_port = port - AUDIO_PORT_BASE;
- dglv2->out->outputPorts[audio_port].samples = (sample_t*)data_location;
- dglv2->out->outputPorts[audio_port].size = 0;
- }
-}
-
-void activate(LV2_Handle instance)
-{
- // We don't really need to do anything here.
- DGLV2 *dglv2 = (DGLV2 *)instance;
- (void)dglv2;
-}
-
-void run(LV2_Handle instance, uint32_t sample_count)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
-
- if(dglv2->free_wheel_port) {
- dglv2->dg->setFreeWheel(*dglv2->free_wheel_port);
- }
-
- if(dglv2->buffer_size != sample_count) {
- dglv2->buffer_size = sample_count;
- dglv2->dg->setFrameSize(sample_count);
- }
- dglv2->dg->run(dglv2->pos, dglv2->buffer, sample_count);
-
- dglv2->pos += sample_count;
-}
-
-void deactivate(LV2_Handle instance)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
- dglv2->dg->stop();
-}
-
-void cleanup(LV2_Handle instance)
-{
- DGLV2 *dglv2 = (DGLV2 *)instance;
- delete dglv2->dg;
- delete dglv2->in;
- delete dglv2->out;
-}
-
-const void* extension_data(const char *uri)
-{
- if(!strcmp(uri, PLUGIN_INSTANCE_URI)) return &dg_descriptor;
- if(!strcmp(uri, LV2_STATE__interface)) return &dg_persist;
- return NULL;
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static const LV2_Descriptor descriptor = {
- DRUMGIZMO_URI,
- instantiate,
- connect_port,
- activate,
- run,
- deactivate,
- cleanup,
- extension_data
-};
-
-LV2_SYMBOL_EXPORT
-const LV2_Descriptor* lv2_descriptor(uint32_t index)
-{
- switch (index) {
- case 0:
- return &descriptor;
- default:
- return NULL;
- }
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/lv2/lv2_event.h b/lv2/lv2_event.h
deleted file mode 100644
index 2c340ba..0000000
--- a/lv2/lv2_event.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- LV2 Event Extension
- Copyright 2008-2011 David Robillard <http://drobilla.net>
- Copyright 2006-2007 Lars Luthman <lars.luthman@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.
-*/
-
-#ifndef LV2_EVENT_H
-#define LV2_EVENT_H
-
-#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event"
-#define LV2_EVENT_AUDIO_STAMP 0
-
-#include <stdint.h>
-
-/**
- @file event.h
- C API for the LV2 Event extension <http://lv2plug.in/ns/ext/event>.
-
- This extension is a generic transport mechanism for time stamped events
- of any type (e.g. MIDI, OSC, ramps, etc). Each port can transport mixed
- events of any type; the type of events and timestamps are defined by a URI
- which is mapped to an integer by the host for performance reasons.
-
- This extension requires the host to support the LV2 URI Map extension.
- Any host which supports this extension MUST guarantee that any call to
- the LV2 URI Map uri_to_id function with the URI of this extension as the
- 'map' argument returns a value within the range of uint16_t.
-*/
-
-/**
- The best Pulses Per Quarter Note for tempo-based uint32_t timestamps.
- Equal to 2^12 * 5 * 7 * 9 * 11 * 13 * 17, which is evenly divisble
- by all integers from 1 through 18 inclusive, and powers of 2 up to 2^12.
-*/
-static const uint32_t LV2_EVENT_PPQN = 3136573440U;
-
-/**
- An LV2 event (header only).
-
- LV2 events are generic time-stamped containers for any type of event.
- The type field defines the format of a given event's contents.
-
- This struct defines the header of an LV2 event. An LV2 event is a single
- chunk of POD (plain old data), usually contained in a flat buffer (see
- LV2_EventBuffer below). Unless a required feature says otherwise, hosts may
- assume a deep copy of an LV2 event can be created safely using a simple:
-
- memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size); (or equivalent)
-*/
-typedef struct {
-
- /**
- The frames portion of timestamp. The units used here can optionally be
- set for a port (with the lv2ev:timeUnits property), otherwise this is
- audio frames, corresponding to the sample_count parameter of the LV2 run
- method (e.g. frame 0 is the first frame for that call to run).
- */
- uint32_t frames;
-
- /**
- The sub-frames portion of timestamp. The units used here can optionally
- be set for a port (with the lv2ev:timeUnits property), otherwise this is
- 1/(2^32) of an audio frame.
- */
- uint32_t subframes;
-
- /**
- The type of this event, as a number which represents some URI
- defining an event type. This value MUST be some value previously
- returned from a call to the uri_to_id function defined in the LV2
- URI map extension (see lv2_uri_map.h).
- There are special rules which must be followed depending on the type
- of an event. If the plugin recognizes an event type, the definition
- of that event type will describe how to interpret the event, and
- any required behaviour. Otherwise, if the type is 0, this event is a
- non-POD event and lv2_event_unref MUST be called if the event is
- 'dropped' (see above). Even if the plugin does not understand an event,
- it may pass the event through to an output by simply copying (and NOT
- calling lv2_event_unref). These rules are designed to allow for generic
- event handling plugins and large non-POD events, but with minimal hassle
- on simple plugins that "don't care" about these more advanced features.
- */
- uint16_t type;
-
- /**
- The size of the data portion of this event in bytes, which immediately
- follows. The header size (12 bytes) is not included in this value.
- */
- uint16_t size;
-
- /* size bytes of data follow here */
-
-} LV2_Event;
-
-
-/**
- A buffer of LV2 events (header only).
-
- Like events (which this contains) an event buffer is a single chunk of POD:
- the entire buffer (including contents) can be copied with a single memcpy.
- The first contained event begins sizeof(LV2_EventBuffer) bytes after the
- start of this struct.
-
- After this header, the buffer contains an event header (defined by struct
- LV2_Event), followed by that event's contents (padded to 64 bits), followed
- by another header, etc:
-
- | | | | | | |
- | | | | | | | | | | | | | | | | | | | | | | | | |
- |FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ...
-*/
-typedef struct {
-
- /**
- The contents of the event buffer. This may or may not reside in the
- same block of memory as this header, plugins must not assume either.
- The host guarantees this points to at least capacity bytes of allocated
- memory (though only size bytes of that are valid events).
- */
- uint8_t* data;
-
- /**
- The size of this event header in bytes (including everything).
-
- This is to allow for extending this header in the future without
- breaking binary compatibility. Whenever this header is copied,
- it MUST be done using this field (and NOT the sizeof this struct).
- */
- uint16_t header_size;
-
- /**
- The type of the time stamps for events in this buffer.
- As a special exception, '0' always means audio frames and subframes
- (1/UINT32_MAX'th of a frame) in the sample rate passed to instantiate.
-
- INPUTS: The host must set this field to the numeric ID of some URI
- defining the meaning of the frames/subframes fields of contained events
- (obtained by the LV2 URI Map uri_to_id function with the URI of this
- extension as the 'map' argument, see lv2_uri_map.h). The host must
- never pass a plugin a buffer which uses a stamp type the plugin does not
- 'understand'. The value of this field must never change, except when
- connect_port is called on the input port, at which time the host MUST
- have set the stamp_type field to the value that will be used for all
- subsequent run calls.
-
- OUTPUTS: The plugin may set this to any value that has been returned
- from uri_to_id with the URI of this extension for a 'map' argument.
- When connected to a buffer with connect_port, output ports MUST set this
- field to the type of time stamp they will be writing. On any call to
- connect_port on an event input port, the plugin may change this field on
- any output port, it is the responsibility of the host to check if any of
- these values have changed and act accordingly.
- */
- uint16_t stamp_type;
-
- /**
- The number of events in this buffer.
-
- INPUTS: The host must set this field to the number of events contained
- in the data buffer before calling run(). The plugin must not change
- this field.
-
- OUTPUTS: The plugin must set this field to the number of events it has
- written to the buffer before returning from run(). Any initial value
- should be ignored by the plugin.
- */
- uint32_t event_count;
-
- /**
- The size of the data buffer in bytes.
- This is set by the host and must not be changed by the plugin.
- The host is allowed to change this between run() calls.
- */
- uint32_t capacity;
-
- /**
- The size of the initial portion of the data buffer containing data.
-
- INPUTS: The host must set this field to the number of bytes used
- by all events it has written to the buffer (including headers)
- before calling the plugin's run().
- The plugin must not change this field.
-
- OUTPUTS: The plugin must set this field to the number of bytes
- used by all events it has written to the buffer (including headers)
- before returning from run().
- Any initial value should be ignored by the plugin.
- */
- uint32_t size;
-
-} LV2_Event_Buffer;
-
-
-/**
- Opaque pointer to host data.
-*/
-typedef void* LV2_Event_Callback_Data;
-
-
-/**
- Non-POD events feature.
-
- To support this feature the host must pass an LV2_Feature struct to the
- plugin's instantiate method with URI "http://lv2plug.in/ns/ext/event"
- and data pointed to an instance of this struct. Note this feature
- is not mandatory to support the event extension.
-*/
-typedef struct {
-
- /**
- Opaque pointer to host data.
-
- The plugin MUST pass this to any call to functions in this struct.
- Otherwise, it must not be interpreted in any way.
- */
- LV2_Event_Callback_Data callback_data;
-
- /**
- Take a reference to a non-POD event.
-
- If a plugin receives an event with type 0, it means the event is a
- pointer to some object in memory and not a flat sequence of bytes
- in the buffer. When receiving a non-POD event, the plugin already
- has an implicit reference to the event. If the event is stored AND
- passed to an output, lv2_event_ref MUST be called on that event.
- If the event is only stored OR passed through, this is not necessary
- (as the plugin already has 1 implicit reference).
-
- @param event An event received at an input that will not be copied to
- an output or stored in any way.
-
- @param context The calling context. Like event types, this is a mapped
- URI, see lv2_context.h. Simple plugin with just a run() method should
- pass 0 here (the ID of the 'standard' LV2 run context). The host
- guarantees that this function is realtime safe iff @a context is
- realtime safe.
-
- PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS.
- */
- uint32_t (*lv2_event_ref)(LV2_Event_Callback_Data callback_data,
- LV2_Event* event);
-
- /**
- Drop a reference to a non-POD event.
-
- If a plugin receives an event with type 0, it means the event is a
- pointer to some object in memory and not a flat sequence of bytes
- in the buffer. If the plugin does not pass the event through to
- an output or store it internally somehow, it MUST call this function
- on the event (more information on using non-POD events below).
-
- @param event An event received at an input that will not be copied to an
- output or stored in any way.
-
- @param context The calling context. Like event types, this is a mapped
- URI, see lv2_context.h. Simple plugin with just a run() method should
- pass 0 here (the ID of the 'standard' LV2 run context). The host
- guarantees that this function is realtime safe iff @a context is
- realtime safe.
-
- PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS.
- */
- uint32_t (*lv2_event_unref)(LV2_Event_Callback_Data callback_data,
- LV2_Event* event);
-
-} LV2_Event_Feature;
-
-
-#endif /* LV2_EVENT_H */
diff --git a/lv2/lv2_gui.cc b/lv2/lv2_gui.cc
deleted file mode 100644
index f683c8c..0000000
--- a/lv2/lv2_gui.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * lv2.cc
- *
- * Wed Jul 13 13:50:33 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "lv2_gui.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include <lv2/lv2plug.in/ns/ext/instance-access/instance-access.h>
-#include <lv2/lv2plug.in/ns/extensions/ui/ui.h>
-
-#include "lv2_instance.h"
-
-// From: http://codesearch.google.com/#50sg5qT6WNE/src/lv2_ui_dssi.c
-// git://repo.or.cz/nekobee.git/src/lv2_ui_dssi.c
-
-#define DRUMGIZMO_UI_URI "http://drumgizmo.org/lv2-gui"
-
-#include <plugingui.h>
-
-/**
- * When LV2_EXTERNAL_UI_URI UI is instantiated, the returned
- * LV2UI_Widget handle must be cast to pointer to struct lv2_external_ui.
- * UI is created in invisible state.
- */
-struct lv2_external_ui
-{
- /**
- * Host calls this function regulary. UI library implementing the
- * callback may do IPC or redraw the UI.
- *
- * @param _this_ the UI context
- */
- void (* run)(struct lv2_external_ui * _this_);
-
- /**
- * Host calls this function to make the plugin UI visible.
- *
- * @param _this_ the UI context
- */
- void (* show)(struct lv2_external_ui * _this_);
-
- /**
- * Host calls this function to make the plugin UI invisible again.
- *
- * @param _this_ the UI context
- */
- void (* hide)(struct lv2_external_ui * _this_);
-};
-
-/** UI extension suitable for out-of-process UIs */
-#define LV2_EXTERNAL_UI_URI "http://lv2plug.in/ns/extensions/ui#external"
-
-/**
- * On UI instantiation, host must supply LV2_EXTERNAL_UI_URI
- * feature. LV2_Feature::data must be pointer to struct lv2_external_ui_host. */
-struct lv2_external_ui_host
-{
- /**
- * Callback that plugin UI will call
- * when UI (GUI window) is closed by user.
- * This callback wil; be called during execution of lv2_external_ui::run()
- * (i.e. not from background thread).
- *
- * After this callback is called, UI is defunct. Host must call
- * LV2UI_Descriptor::cleanup(). If host wants to make the UI visible
- * again UI must be reinstantiated.
- *
- * @param controller Host context associated with plugin UI, as
- * supplied to LV2UI_Descriptor::instantiate()
- */
- void (* ui_closed)(LV2UI_Controller controller);
-
- /**
- * Optional (may be NULL) "user friendly" identifier which the UI
- * may display to allow a user to easily associate this particular
- * UI instance with the correct plugin instance as it is represented
- * by the host (e.g. "track 1" or "channel 4").
- *
- * If supplied by host, the string will be referenced only during
- * LV2UI_Descriptor::instantiate()
- */
- const char * plugin_human_id;
-};
-
-struct DG_GUI {
- struct lv2_external_ui virt;
-
- LV2_Handle instance_handle;
- LV2_Extension_Data_Feature *data_access;
- DrumGizmo *instance;
- LV2UI_Controller controller;
-
- GUI::PluginGUI *gui;
- struct lv2_external_ui_host *ui_host_ptr;
-};
-
-static void ui_run(struct lv2_external_ui * _this_)
-{
- struct DG_GUI *dggui = (struct DG_GUI *)_this_;
- dggui->gui->processEvents();
-}
-
-static void ui_show(struct lv2_external_ui * _this_)
-{
- struct DG_GUI *dggui = (struct DG_GUI *)_this_;
- dggui->gui->show();
-}
-
-static void ui_hide(struct lv2_external_ui * _this_)
-{
- struct DG_GUI *dggui = (struct DG_GUI *)_this_;
- if(dggui->gui) dggui->gui->hide();
-}
-
-static void closeHandler(void *ptr)
-{
- struct DG_GUI *gui = (struct DG_GUI *)ptr;
-
- if(gui->ui_host_ptr && gui->ui_host_ptr->ui_closed) {
- gui->ui_host_ptr->ui_closed(gui->controller);
- }
-
- delete gui->gui;
- gui->gui = NULL;
-}
-
-static LV2UI_Handle ui_instantiate(const struct _LV2UI_Descriptor * descriptor,
- const char * plugin_uri,
- const char * bundle_path,
- LV2UI_Write_Function write_function,
- LV2UI_Controller controller,
- LV2UI_Widget * widget,
- const LV2_Feature * const * features)
-{
- printf("ui_instantiate\n");
-
- struct DG_GUI* pt = new struct DG_GUI;
-
- pt->ui_host_ptr = NULL;
- pt->controller = controller;
-
- while (*features != NULL) {
- std::string uri = (*features)->URI;
- void *data = (*features)->data;
-
- printf("DGUI: feature: %s\n", uri.c_str());
-
- if(uri == LV2_INSTANCE_ACCESS_URI) {
- pt->instance_handle = data;
- }
-
- if(uri == LV2_DATA_ACCESS_URI) {
- pt->data_access = (LV2_Extension_Data_Feature *)data;
- }
-
- if(uri == LV2_EXTERNAL_UI_URI) {
- pt->ui_host_ptr = (struct lv2_external_ui_host *)data;
- }
- features++;
- }
-
- LV2_DrumGizmo_Descriptor *dgd =
- (LV2_DrumGizmo_Descriptor *)(*pt->data_access->data_access)(PLUGIN_INSTANCE_URI);
-
- pt->instance = dgd->get_pci(pt->instance_handle);
- pt->virt.run = ui_run;
- pt->virt.show = ui_show;
- pt->virt.hide = ui_hide;
- pt->gui = new GUI::PluginGUI();
- pt->gui->setWindowClosedCallback(closeHandler, pt);
-
- *widget = (LV2UI_Widget)pt;
-
- return pt;
-}
-
-static void ui_cleanup(LV2UI_Handle ui)
-{
- struct DG_GUI* pt = (struct DG_GUI*)ui;
- delete pt->gui;
- pt->gui = NULL;
- delete pt;
-}
-
-static void ui_port_event(LV2UI_Handle ui,
- uint32_t port_index,
- uint32_t buffer_size,
- uint32_t format,
- const void * buffer)
-{
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static LV2UI_Descriptor descriptor = {
- DRUMGIZMO_UI_URI,
- ui_instantiate,
- ui_cleanup,
- ui_port_event,
- NULL
-};
-
-const LV2UI_Descriptor *lv2ui_descriptor(uint32_t index)
-{
- if(index == 0) return &descriptor;
- return NULL;
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/lv2/lv2_gui.h b/lv2/lv2_gui.h
deleted file mode 100644
index a929da3..0000000
--- a/lv2/lv2_gui.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * lv2_gui.h
- *
- * Fri Oct 21 10:48:53 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#ifndef __DRUMGIZMO_LV2_GUI_H__
-#define __DRUMGIZMO_LV2_GUI_H__
-
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/data-access/data-access.h>
-
-#define PLUGIN_INSTANCE_URI "http://drumgizmo.org/ns/drumgizmo-plugin-instance"
-
-class DrumGizmo;
-struct LV2_DrumGizmo_Descriptor {
- DrumGizmo *(*get_pci)(LV2_Handle instance);
-};
-
-#endif/*__DRUMGIZMO_LV2_GUI_H__*/
diff --git a/lv2/lv2_instance.h b/lv2/lv2_instance.h
deleted file mode 100644
index d1abb9a..0000000
--- a/lv2/lv2_instance.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * lv2_instance.h
- *
- * Sun Nov 20 15:27:41 CET 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#ifndef __DRUMGIZMO_LV2_INSTANCE_H__
-#define __DRUMGIZMO_LV2_INSTANCE_H__
-
-#include <lv2/lv2plug.in/ns/lv2core/lv2.h>
-#include <lv2/lv2plug.in/ns/ext/state/state.h>
-#include <lv2/lv2plug.in/ns/ext/urid/urid.h>
-
-#include "input_lv2.h"
-#include "output_lv2.h"
-
-#include <drumgizmo.h>
-
-typedef struct {
- InputLV2 *in;
- OutputLV2 *out;
- DrumGizmo *dg;
- sample_t *buffer;
- size_t buffer_size;
- LV2_URID_Map* map;
- float* free_wheel_port;
- size_t pos;
-} DGLV2;
-
-#endif/*__DRUMGIZMO_LV2_INSTANCE_H__*/
diff --git a/lv2/manifest.ttl b/lv2/manifest.ttl
deleted file mode 100644
index 65a8953..0000000
--- a/lv2/manifest.ttl
+++ /dev/null
@@ -1,7 +0,0 @@
-@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
-
-<http://drumgizmo.org/lv2>
- a lv2:Plugin ;
- lv2:binary <drumgizmo.so> ;
- rdfs:seeAlso <drumgizmo.ttl> .
diff --git a/lv2/output_lv2.cc b/lv2/output_lv2.cc
deleted file mode 100644
index fdd795b..0000000
--- a/lv2/output_lv2.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * output_lv2.cc
- *
- * Wed Jul 13 14:27:06 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "output_lv2.h"
-
-#include <string.h>
-
-OutputLV2::OutputLV2()
-{
- for(size_t i = 0; i < NUM_OUTPUTS; i++) {
- outputPorts[i].size = 0;
- outputPorts[i].samples = NULL;
- }
-}
-
-OutputLV2::~OutputLV2()
-{
-}
-
-bool OutputLV2::init(Channels channels)
-{
- return true;
-}
-
-void OutputLV2::setParm(std::string parm, std::string value)
-{
-}
-
-bool OutputLV2::start()
-{
- return true;
-}
-
-void OutputLV2::stop()
-{
-}
-
-void OutputLV2::pre(size_t nsamples)
-{
-}
-
-void OutputLV2::run(int ch, sample_t *samples, size_t nsamples)
-{
- if(ch < NUM_OUTPUTS) {
- if(outputPorts[ch].samples) {
- memcpy(outputPorts[ch].samples, samples, nsamples * sizeof(sample_t));
- }
- }
-}
-
-void OutputLV2::post(size_t nsamples)
-{
-}
-
-sample_t *OutputLV2::getBuffer(int ch)
-{
- if(ch < NUM_OUTPUTS) return outputPorts[ch].samples;
- return NULL;
-}
diff --git a/lv2/output_lv2.h b/lv2/output_lv2.h
deleted file mode 100644
index 88b8a4b..0000000
--- a/lv2/output_lv2.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * output_lv2.h
- *
- * Wed Jul 13 14:27:06 CEST 2011
- * Copyright 2011 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of DrumGizmo.
- *
- * DrumGizmo is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DrumGizmo is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with DrumGizmo; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#ifndef __DRUMGIZMO_OUTPUT_LV2_H__
-#define __DRUMGIZMO_OUTPUT_LV2_H__
-
-#include <audiooutputengine.h>
-
-#define NUM_OUTPUTS 64
-
-class OutputPort {
-public:
- size_t size;
- sample_t *samples;
-};
-
-class OutputLV2 : public AudioOutputEngine {
-public:
- OutputLV2();
- ~OutputLV2();
-
- bool init(Channels channels);
-
- void setParm(std::string parm, std::string value);
-
- bool start();
- void stop();
-
- void pre(size_t nsamples);
- void run(int ch, sample_t *samples, size_t nsamples);
- void post(size_t nsamples);
-
- sample_t *getBuffer(int c);
-
- OutputPort outputPorts[NUM_OUTPUTS];
-};
-
-#endif/*__DRUMGIZMO_OUTPUT_LV2_H__*/