diff options
| -rw-r--r-- | README | 93 | ||||
| -rw-r--r-- | configure.ac | 5 | ||||
| -rw-r--r-- | drumgizmo/audioinputenginedl.cc | 4 | ||||
| -rw-r--r-- | drumgizmo/audioinputenginedl.h | 24 | ||||
| -rw-r--r-- | drumgizmo/audiooutputenginedl.cc | 4 | ||||
| -rw-r--r-- | drumgizmo/audiooutputenginedl.h | 28 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi/Makefile.am | 3 | ||||
| -rw-r--r-- | drumgizmo/input/jackmidi/jackmidi.cc | 4 | ||||
| -rw-r--r-- | drumgizmo/input/midifile/Makefile.am | 5 | ||||
| -rw-r--r-- | drumgizmo/output/alsa/alsa.cc | 12 | ||||
| -rw-r--r-- | drumgizmo/output/jackaudio/jackaudio.cc | 8 | ||||
| -rw-r--r-- | drumgizmo/output/wavfile/wavfile.cc | 6 | ||||
| -rw-r--r-- | lv2/input_lv2.h | 4 | ||||
| -rw-r--r-- | plugingui/Makefile.am.plugingui | 4 | ||||
| -rw-r--r-- | src/drumkit.h | 4 | ||||
| -rw-r--r-- | src/drumkitloader.h | 8 | ||||
| -rw-r--r-- | src/instrumentparser.h | 8 | ||||
| -rw-r--r-- | src/semaphore.cc | 6 | ||||
| -rw-r--r-- | src/semaphore.h | 4 | ||||
| -rw-r--r-- | src/thread.h | 4 | ||||
| -rw-r--r-- | test/Makefile.am | 3 | 
21 files changed, 141 insertions, 100 deletions
| @@ -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 | 
