summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README93
-rw-r--r--configure.ac5
-rw-r--r--drumgizmo/audioinputenginedl.cc4
-rw-r--r--drumgizmo/audioinputenginedl.h24
-rw-r--r--drumgizmo/audiooutputenginedl.cc4
-rw-r--r--drumgizmo/audiooutputenginedl.h28
-rw-r--r--drumgizmo/input/jackmidi/Makefile.am3
-rw-r--r--drumgizmo/input/jackmidi/jackmidi.cc4
-rw-r--r--drumgizmo/input/midifile/Makefile.am5
-rw-r--r--drumgizmo/output/alsa/alsa.cc12
-rw-r--r--drumgizmo/output/jackaudio/jackaudio.cc8
-rw-r--r--drumgizmo/output/wavfile/wavfile.cc6
-rw-r--r--lv2/input_lv2.h4
-rw-r--r--plugingui/Makefile.am.plugingui4
-rw-r--r--src/drumkit.h4
-rw-r--r--src/drumkitloader.h8
-rw-r--r--src/instrumentparser.h8
-rw-r--r--src/semaphore.cc6
-rw-r--r--src/semaphore.h4
-rw-r--r--src/thread.h4
-rw-r--r--test/Makefile.am3
21 files changed, 141 insertions, 100 deletions
diff --git a/README b/README
index e8e3e24..f75599a 100644
--- a/README
+++ b/README
@@ -1,42 +1,71 @@
Installation Instructions
*************************
+NOTE1: Certain audio-centric Linux distros such as KxStudio has DrumGizmo
+included in the repository. To install it on such systems, use the distros
+package manager, search for it and install it. Please refer to each distro's
+documentation for detailed instructions on how to do this.
-Compiling and installing the LV2 plugin
+NOTE2: Be aware that if you are planning on running the LV2 plugin from within
+one of the binary releases of Ardour, you must make sure that drumgizmo is using
+the same version of libpng, pthread and expat as Ardour was compiled with (or
+at least versions matching the ABI), otherwise the plugin will show strange
+behaviour or even crash upon load.
+
+Compiling and Installing on linux (LV2)
=======================================
-If you extracted the code from a tar-ball skip to the "Configuring" section.
-
-Preparing code from git
------------------------
-If you cloned the repository from git, make sure to run the following commands
-in order to obtain the hugin debug code:
- git submodule init
- git submodule update
-
-After that you need to run ./autogen.sh
-
-Configuring
------------
-Run ./configure --enable-lv2 --prefix=/usr
-Then run 'make && make install' and the plugin should be installed in
-/usr/lib/lv2/drumgizmo.lv2
+This guide will show you how to unpack, compile and install the lv2 version
+of the drumgizmo plugin. It will also show how to make it usable for the LV2
+host Ardour3.
+
+Prerequisites
+-------------
+* lv2-devel package >= 1.0
+* libsndfile-devel >= 1.0.21
+* zita-resampler-devel (no minimal version specified)
+* libexpat-devel (no minimal version specified)
+* pkg-config >= 0.23
+* Xlib >= 1.0
+* libpng >= 1.2
+* libsmf (no minimal version specified)
+* pthread (no minimal version specified)
+* libcppunit-dev (only necessary when compiling from git sources)
+
+Compiling source tarball
+------------------------
+$ tar xvzf drumgizmo-[version].tar.gz (you probably already did this)
+$ cd drumgizmo-[version]
+$ ./configure --prefix=$PWD/install --enable-lv2
+$ make
+$ make install
+
+Compiling from git sources
+--------------------------
+$ git clone http://git.drumgizmo.org/drumgizmo.git
+$ git submodule init
+$ git submodule update
+$ ./autogen.sh
+$ ./configure --prefix=$PWD/install --enable-lv2
+
If you want to compile only the LV2 parts of the plugin use
'--disable-editor --disable-cli' as additional parameters to the configure
script.
-The LV2 plugin requires the following dependencies:
-pkg-config >= 0.23
-lv2 >= 1.0
-Xlib >= 1.0
-sndfile >= 1.0.21
-libpng >= 1.2
-libsmf
-pthread (no minimal version specified)
-expat (no minimal version specified)
-
-Be aware that if you are planning on running the LV2 plugin from within one
-of the binary releases of Ardour, you must make sure that drumgizmo is using
-the same version of libpng, pthread and expat as Ardour was compiled with (or
-at least versions matching the ABI), otherwise the plugin will show strange
-behaviour or even crash upon load.
+Now compile and install
+$ make
+$ make install
+
+Installing for use with Ardour3
+-------------------------------
+When the make install step has been successfully performed the source directory
+will contain a folder named install. In this folder the:
+
+ install/lib/lv2/drumgizmo.lv2
+
+... is located. This folder contain all the files needed for the plugin to run.
+In order to make it work with Ardour3, either copy this directory to the lv2
+plugin dir (usually /usr/lib/lv2) or create a symbolic link to the directory
+$ ln -s [dg path]/install/lib/lv2/drumgizmo.lv2 /usr/lib/lv2/drumgizmo.lv2
+You need to be root to do this. Keep in mind that the lv2 directory differs from
+distro to distro, so do a search for it in order to verify the correct location. \ No newline at end of file
diff --git a/configure.ac b/configure.ac
index 5c8c155..823f93d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -446,11 +446,6 @@ AS_IF([test x$enable_resampler == xsrc],
)]
)
-#dnl ======================
-#dnl Check for zlib
-#dnl ======================
-PKG_CHECK_MODULES(ZLIB, zlib >= 1.2.3)
-
dnl ======================
dnl Check for the pthread library
dnl ======================
diff --git a/drumgizmo/audioinputenginedl.cc b/drumgizmo/audioinputenginedl.cc
index 93c7079..cba59fa 100644
--- a/drumgizmo/audioinputenginedl.cc
+++ b/drumgizmo/audioinputenginedl.cc
@@ -41,7 +41,7 @@ AudioInputEngineDL::AudioInputEngineDL(std::string name)
is_jack_plugin = strstr(name.c_str(), "jack");
std::string plugin = INPUT_PLUGIN_DIR"/" + name + ".so";
- void *lib = dlopen(plugin.c_str(), RTLD_LAZY);
+ lib = dlopen(plugin.c_str(), RTLD_LAZY);
if(!lib) {
printf("Cannot load device: %s\n", dlerror());
return;
@@ -124,6 +124,8 @@ AudioInputEngineDL::~AudioInputEngineDL()
{
i_destroy(ptr);
if(is_jack_plugin) close_jack_client();
+ dlclose(lib);
+ lib = nullptr;
}
bool AudioInputEngineDL::init(Instruments &instruments)
diff --git a/drumgizmo/audioinputenginedl.h b/drumgizmo/audioinputenginedl.h
index ed1fb27..94bd89d 100644
--- a/drumgizmo/audioinputenginedl.h
+++ b/drumgizmo/audioinputenginedl.h
@@ -57,19 +57,21 @@ public:
void post();
private:
- void *ptr;
- input_create_func_t i_create;
- input_destroy_func_t i_destroy;
- input_init_func_t i_init;
- input_setparm_func_t i_setparm;
- input_start_func_t i_start;
- input_stop_func_t i_stop;
- input_pre_func_t i_pre;
- input_run_func_t i_run;
- input_post_func_t i_post;
+ void *ptr{nullptr};
+ input_create_func_t i_create{nullptr};
+ input_destroy_func_t i_destroy{nullptr};
+ input_init_func_t i_init{nullptr};
+ input_setparm_func_t i_setparm{nullptr};
+ input_start_func_t i_start{nullptr};
+ input_stop_func_t i_stop{nullptr};
+ input_pre_func_t i_pre{nullptr};
+ input_run_func_t i_run{nullptr};
+ input_post_func_t i_post{nullptr};
bool is_jack_plugin;
- JackClient *jackclient;
+ JackClient *jackclient{nullptr};
+
+ void *lib{nullptr};
};
#endif/*__DRUMGIZMO_AUDIOINPUTENGINEDL_H__*/
diff --git a/drumgizmo/audiooutputenginedl.cc b/drumgizmo/audiooutputenginedl.cc
index dad2c5c..042db4a 100644
--- a/drumgizmo/audiooutputenginedl.cc
+++ b/drumgizmo/audiooutputenginedl.cc
@@ -36,7 +36,7 @@ AudioOutputEngineDL::AudioOutputEngineDL(std::string name)
is_jack_plugin = strstr(name.c_str(), "jack");
std::string plugin = OUTPUT_PLUGIN_DIR"/" + name + ".so";
- void *lib = dlopen(plugin.c_str(), RTLD_LAZY);
+ lib = dlopen(plugin.c_str(), RTLD_LAZY);
if(!lib) {
printf("Cannot load device: %s\n", dlerror());
return;
@@ -132,6 +132,8 @@ AudioOutputEngineDL::~AudioOutputEngineDL()
{
o_destroy(ptr);
if(is_jack_plugin) close_jack_client();
+ dlclose(lib);
+ lib = nullptr;
}
bool AudioOutputEngineDL::init(Channels channels)
diff --git a/drumgizmo/audiooutputenginedl.h b/drumgizmo/audiooutputenginedl.h
index 75460f3..4b31015 100644
--- a/drumgizmo/audiooutputenginedl.h
+++ b/drumgizmo/audiooutputenginedl.h
@@ -68,21 +68,23 @@ public:
size_t samplerate();
private:
- void *ptr;
- output_create_func_t o_create;
- output_destroy_func_t o_destroy;
- output_init_func_t o_init;
- output_setparm_func_t o_setparm;
- output_start_func_t o_start;
- output_stop_func_t o_stop;
- output_pre_func_t o_pre;
- output_run_func_t o_run;
- output_post_func_t o_post;
- output_bufsize_func_t o_bufsize;
- output_samplerate_func_t o_samplerate;
+ void *ptr{nullptr};
+ output_create_func_t o_create{nullptr};
+ output_destroy_func_t o_destroy{nullptr};
+ output_init_func_t o_init{nullptr};
+ output_setparm_func_t o_setparm{nullptr};
+ output_start_func_t o_start{nullptr};
+ output_stop_func_t o_stop{nullptr};
+ output_pre_func_t o_pre{nullptr};
+ output_run_func_t o_run{nullptr};
+ output_post_func_t o_post{nullptr};
+ output_bufsize_func_t o_bufsize{nullptr};
+ output_samplerate_func_t o_samplerate{nullptr};
bool is_jack_plugin;
- JackClient *jackclient;
+ JackClient *jackclient{nullptr};
+
+ void* lib{nullptr};
};
#endif/*__DRUMGIZMO_AUDIOOUTPUTENGINEDL_H__*/
diff --git a/drumgizmo/input/jackmidi/Makefile.am b/drumgizmo/input/jackmidi/Makefile.am
index fd63944..d392f19 100644
--- a/drumgizmo/input/jackmidi/Makefile.am
+++ b/drumgizmo/input/jackmidi/Makefile.am
@@ -26,7 +26,8 @@ libdir = $(INPUT_PLUGIN_DIR)
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(top_srcdir)/hugin
jackmidi_la_LDFLAGS = -module -avoid-version -shared
-jackmidi_la_LIBADD =
+jackmidi_la_LIBADD = $(EXPAT_LIBS)
+jackmidi_la_CXXFLAGS = $(EXPAT_CFLAGS)
jackmidi_la_SOURCES = $(jackmidibuildsources)
install-exec-hook:
diff --git a/drumgizmo/input/jackmidi/jackmidi.cc b/drumgizmo/input/jackmidi/jackmidi.cc
index 5496195..a6b49b7 100644
--- a/drumgizmo/input/jackmidi/jackmidi.cc
+++ b/drumgizmo/input/jackmidi/jackmidi.cc
@@ -60,8 +60,8 @@ public:
private:
void loadMap(std::string map) {}
- JackClient *jackclient;
- jack_port_t *midi_port;
+ JackClient *jackclient{nullptr};
+ jack_port_t *midi_port{nullptr};
size_t pos;
diff --git a/drumgizmo/input/midifile/Makefile.am b/drumgizmo/input/midifile/Makefile.am
index f95a289..9ade475 100644
--- a/drumgizmo/input/midifile/Makefile.am
+++ b/drumgizmo/input/midifile/Makefile.am
@@ -27,8 +27,9 @@ libdir = $(INPUT_PLUGIN_DIR)
AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SMF_CFLAGS) \
$(EXPAT_CFLAGS) -I$(top_srcdir)/hugin -DWITH_HUG_MUTEX
-midifile_la_LDFLAGS = $(SMF_LIBS) $(EXPAT_LIBS) -module -avoid-version -shared
-midifile_la_LIBADD =
+midifile_la_LDFLAGS = -module -avoid-version -shared
+midifile_la_LIBADD = $(EXPAT_LIBS) $(SMF_LIBS)
+midifile_la_CXXFLAGS =$(EXPAT_CFLAGS)
midifile_la_SOURCES = $(midifilebuildsources)
install-exec-hook:
diff --git a/drumgizmo/output/alsa/alsa.cc b/drumgizmo/output/alsa/alsa.cc
index dc2ac73..71e0c3d 100644
--- a/drumgizmo/output/alsa/alsa.cc
+++ b/drumgizmo/output/alsa/alsa.cc
@@ -52,15 +52,15 @@ public:
size_t samplerate();
private:
- snd_pcm_t *handle;
- snd_pcm_hw_params_t *params;
- sample_t *data;
- size_t channels;
+ snd_pcm_t *handle{nullptr};
+ snd_pcm_hw_params_t *params{nullptr};
+ sample_t *data{nullptr};
+ size_t channels{0};
// Parameters
std::string device;
- unsigned int srate;
- snd_pcm_uframes_t frames;
+ unsigned int srate{0};
+ snd_pcm_uframes_t frames{0};
};
Alsa::Alsa()
diff --git a/drumgizmo/output/jackaudio/jackaudio.cc b/drumgizmo/output/jackaudio/jackaudio.cc
index 5c04146..511c145 100644
--- a/drumgizmo/output/jackaudio/jackaudio.cc
+++ b/drumgizmo/output/jackaudio/jackaudio.cc
@@ -57,10 +57,10 @@ public:
size_t samplerate();
private:
- JackClient *jackclient;
- jack_port_t *output_port[64];
- size_t nchannels;
- sample_t **channels;
+ JackClient *jackclient{nullptr};
+ jack_port_t *output_port[64] = {};
+ size_t nchannels{0};
+ sample_t **channels{nullptr};
Semaphore sem;
};
diff --git a/drumgizmo/output/wavfile/wavfile.cc b/drumgizmo/output/wavfile/wavfile.cc
index fa4128e..8401f80 100644
--- a/drumgizmo/output/wavfile/wavfile.cc
+++ b/drumgizmo/output/wavfile/wavfile.cc
@@ -28,6 +28,7 @@
#include <audiotypes.h>
#include <string>
+#include <memory.h>
#include <sndfile.h>
@@ -48,8 +49,8 @@ public:
private:
SF_INFO sf_info;
- SNDFILE **fh;
- size_t channels;
+ SNDFILE **fh{nullptr};
+ size_t channels{0};
// Parameters
std::string filename;
@@ -60,6 +61,7 @@ WavFile::WavFile()
fh = NULL;
filename = "output";
+ memset(&sf_info, 0, sizeof(sf_info));
sf_info.channels = 1;//channels;
sf_info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT;
sf_info.samplerate = 44100;
diff --git a/lv2/input_lv2.h b/lv2/input_lv2.h
index 32e2fd8..3e3ef31 100644
--- a/lv2/input_lv2.h
+++ b/lv2/input_lv2.h
@@ -47,10 +47,10 @@ public:
event_t *run(size_t pos, size_t len, size_t *nevents);
void post();
- LV2_Atom_Sequence *eventPort;
+ LV2_Atom_Sequence *eventPort{nullptr};
private:
- Instruments *instruments;
+ Instruments *instruments{nullptr};
};
#endif/*__DRUMGIZMO_INPUT_LV2_H__*/
diff --git a/plugingui/Makefile.am.plugingui b/plugingui/Makefile.am.plugingui
index 62ddd19..b4baccd 100644
--- a/plugingui/Makefile.am.plugingui
+++ b/plugingui/Makefile.am.plugingui
@@ -32,9 +32,9 @@ PLUGIN_GUI_SOURCES = \
$(top_srcdir)/plugingui/resource_data.cc \
$(top_srcdir)/plugingui/lodepng/lodepng.cpp
-PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS) $(ZLIB_LIBS)
+PLUGIN_GUI_LIBS = $(GUI_LIBS) $(PTHREAD_LIBS)
-PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) $(ZLIB_CFLAGS) -I$(top_srcdir)/hugin \
+PLUGIN_GUI_CFLAGS = $(GUI_CFLAGS) -I$(top_srcdir)/hugin \
-DWITH_HUG_SYSLOG -DWITH_HUG_MUTEX $(PTHREAD_CFLAGS) \
-DLODEPNG_NO_COMPILE_ENCODER \
-DLODEPNG_NO_COMPILE_DISK \
diff --git a/src/drumkit.h b/src/drumkit.h
index 04b2c56..a9ceb80 100644
--- a/src/drumkit.h
+++ b/src/drumkit.h
@@ -56,13 +56,13 @@ public:
size_t samplerate();
private:
- void *magic;
+ void *magic{nullptr};
std::string _file;
std::string _name;
std::string _description;
- size_t _samplerate;
+ size_t _samplerate{0};
VersionStr _version;
};
diff --git a/src/drumkitloader.h b/src/drumkitloader.h
index 2c0ea8e..b4a0a69 100644
--- a/src/drumkitloader.h
+++ b/src/drumkitloader.h
@@ -89,11 +89,11 @@ private:
Semaphore run_semaphore;
Semaphore semaphore;
Mutex mutex;
- volatile bool running;
+ volatile bool running{false};
std::list<AudioFile*> load_queue;
- size_t total_num_audiofiles;
- size_t fraction;
- size_t loaded;
+ size_t total_num_audiofiles{0};
+ size_t fraction{1};
+ size_t loaded{0};
};
#endif/*__DRUMGIZMO_DRUMKITLOADER_H__*/
diff --git a/src/instrumentparser.h b/src/instrumentparser.h
index 2a7a9c9..60a6261 100644
--- a/src/instrumentparser.h
+++ b/src/instrumentparser.h
@@ -47,14 +47,14 @@ protected:
int readData(char *data, size_t size);
private:
- FILE *fd;
+ FILE *fd{nullptr};
Instrument &instrument;
- Sample *s;
+ Sample *s{nullptr};
std::string path;
- level_t lower;
- level_t upper;
+ level_t lower{0};
+ level_t upper{0};
};
#endif/*__DRUMGIZMO_INSTRUMENTPARSER_H__*/
diff --git a/src/semaphore.cc b/src/semaphore.cc
index 47ce8e0..3f5781f 100644
--- a/src/semaphore.cc
+++ b/src/semaphore.cc
@@ -28,6 +28,8 @@
#include <hugin.hpp>
+#include <limits>
+
#ifdef WIN32
#include <windows.h>
#else
@@ -53,7 +55,7 @@ Semaphore::Semaphore(const char *name)
#ifdef WIN32
prv->semaphore = CreateSemaphore(NULL, // default security attributes
0, // initial count
- 2147483647, // maximum count (Max LONG)
+ std::numeric_limits<LONG>::max(),
NULL); // unnamed semaphore
#else
sem_init(&prv->semaphore, 0, 0);
@@ -70,7 +72,7 @@ Semaphore::~Semaphore()
sem_destroy(&prv->semaphore);
#endif
- if(prv) delete prv;
+ delete prv;
}
void Semaphore::post()
diff --git a/src/semaphore.h b/src/semaphore.h
index 7e39f5a..ed284de 100644
--- a/src/semaphore.h
+++ b/src/semaphore.h
@@ -38,8 +38,8 @@ public:
void wait();
private:
- struct semaphore_private_t *prv;
- const char *name;
+ struct semaphore_private_t *prv{nullptr};
+ const char *name{nullptr};
};
#endif/*__PRACRO_SEMAPHORE_H__*/
diff --git a/src/thread.h b/src/thread.h
index f2c1dd0..33435e6 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -46,10 +46,10 @@ protected:
private:
#ifdef WIN32
- HANDLE tid;
+ HANDLE tid{nullptr};
static DWORD WINAPI
#else
- pthread_t tid;
+ pthread_t tid{0};
static void*
#endif/*WIN32*/
thread_run(void *data);
diff --git a/test/Makefile.am b/test/Makefile.am
index 08dba3b..29ab4b1 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -59,3 +59,6 @@ configfile_SOURCES = \
$(top_srcdir)/hugin/hugin.c \
test.cc \
configtest.cc
+
+EXTRA_DIST = \
+ lv2_test_host.h