summaryrefslogtreecommitdiff
path: root/drumgizmo/output
diff options
context:
space:
mode:
authorChristian Glöckner <cgloeckner@freenet.de>2016-01-25 13:26:14 +0100
committerAndré Nusser <andre.nusser@googlemail.com>2016-02-09 09:03:16 +0100
commit65a1f98c1bbb1837222e2eca4a457e66cf867b6e (patch)
tree891f2f4e50afef883588e2ab9c31db850dc93cbd /drumgizmo/output
parentc970d83d7394e73f4bdff9c69a186ec91ac5f9de (diff)
Removed outdated files
Diffstat (limited to 'drumgizmo/output')
-rw-r--r--drumgizmo/output/alsa/Makefile.am29
-rw-r--r--drumgizmo/output/alsa/alsa.cc225
-rw-r--r--drumgizmo/output/dummy/Makefile.am29
-rw-r--r--drumgizmo/output/dummy/dummy.cc152
-rw-r--r--drumgizmo/output/jackaudio/Makefile.am31
-rw-r--r--drumgizmo/output/jackaudio/jackaudio.cc222
-rw-r--r--drumgizmo/output/wavfile/Makefile.am29
-rw-r--r--drumgizmo/output/wavfile/wavfile.cc197
8 files changed, 0 insertions, 914 deletions
diff --git a/drumgizmo/output/alsa/Makefile.am b/drumgizmo/output/alsa/Makefile.am
deleted file mode 100644
index 9f20844..0000000
--- a/drumgizmo/output/alsa/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-alsasources = \
- alsa.cc
-
-if HAVE_OUTPUT_ALSA
-
-alsaltlibs = alsa.la
-alsabuildsources = $(alsasources)
-
-else
-
-alsaltlibs =
-alsabuildsources =
-
-endif
-
-EXTRA_DIST = $(alsasources)
-
-lib_LTLIBRARIES = $(alsaltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(ALSA_CFLAGS)
-alsa_la_LDFLAGS = $(ALSA_LIBS) -module -avoid-version -shared
-alsa_la_LIBADD =
-alsa_la_SOURCES = $(alsabuildsources)
-
-install-exec-hook:
- rm -f $(DESTDIR)$(libdir)/alsa.la
diff --git a/drumgizmo/output/alsa/alsa.cc b/drumgizmo/output/alsa/alsa.cc
deleted file mode 100644
index 71e0c3d..0000000
--- a/drumgizmo/output/alsa/alsa.cc
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * audiooutputenginedummy.cc
- *
- * Sat Apr 30 21:12: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 2 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 <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-
-// Use the newer ALSA API
-#define ALSA_PCM_NEW_HW_PARAMS_API
-
-#include <asoundlib.h>
-
-#define T(x, msg) if(x < 0) { printf("%s failed: %s\n", msg, snd_strerror(x)); fflush(stdout); return false; }
-
-#define BUFSZ 40960
-
-class Alsa {
-public:
- Alsa();
- ~Alsa();
- bool init(int channels, char *cnames[]);
- void setParm(std::string parm, std::string value);
- bool start();
- void stop();
- void pre(size_t size);
- void run(int channel, sample_t* data, size_t size);
- void post(size_t size);
- size_t samplerate();
-
-private:
- 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{0};
- snd_pcm_uframes_t frames{0};
-};
-
-Alsa::Alsa()
-{
- handle = NULL;
- data = NULL;
-
- device = "default";
- srate = 44100;
- frames = 32;
-}
-
-Alsa::~Alsa()
-{
- if(handle) snd_pcm_close(handle);
- if(data) free(data);
-}
-
-bool Alsa::init(int channels, char *cnames[])
-{
- int rc;
-
- rc = snd_pcm_open(&handle, device.c_str(), SND_PCM_STREAM_PLAYBACK, 0);
- T(rc, "snd_pcm_open");
-
- this->channels = channels;
- if(!handle) {
- printf("No handle!\n");
- return false;
- }
-
- // Allocate a hardware parameters object.
- snd_pcm_hw_params_alloca(&params);
- // if(rc < 0) return false;
-
- // Fill it in with default values.
- rc = snd_pcm_hw_params_any(handle, params);
- T(rc, "snd_pcm_hw_params_any");
-
- rc = snd_pcm_hw_params_set_access(handle, params,
- SND_PCM_ACCESS_RW_INTERLEAVED);
- T(rc, "snd_pcm_hw_params_set_access");
-
- rc = snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_FLOAT);
- T(rc, "snd_pcm_hw_params_set_format");
-
- rc = snd_pcm_hw_params_set_channels(handle, params, channels);
- T(rc, "snd_pcm_hw_params_set_channels");
-
- rc = snd_pcm_hw_params_set_rate_near(handle, params, &srate, 0);
- T(rc, "snd_pcm_hw_params_set_rate_near");
-
- rc = snd_pcm_hw_params_set_period_size_near(handle, params, &frames, 0);
- T(rc, "snd_pcm_hw_params_set_period_size_near");
-
- rc = snd_pcm_hw_params(handle, params);
- T(rc, "snd_pcm_hw_params");
-
- data = (sample_t*)malloc(sizeof(sample_t) * BUFSZ * channels);
-
- return true;
-}
-
-void Alsa::setParm(std::string parm, std::string value)
-{
- if(parm == "dev") device = value;
- if(parm == "frames") frames = atoi(value.c_str());
- if(parm == "srate") srate = atoi(value.c_str());
-}
-
-bool Alsa::start()
-{
- return true;
-}
-
-void Alsa::stop()
-{
-}
-
-void Alsa::pre(size_t size)
-{
-}
-
-void Alsa::run(int channel, sample_t* cdata, size_t csize)
-{
- // Write channel data in interleaved buffer.
- for(size_t i = 0; i < csize; i++) {
- data[i * channels + channel] = cdata[i];
- }
-}
-
-void Alsa::post(size_t size)
-{
- // Write the interleaved buffer to the soundcard
- snd_pcm_writei(handle, data, size);
-}
-
-size_t Alsa::samplerate()
-{
- return srate;
-}
-
-extern "C" {
- void *create()
- {
- return new Alsa();
- }
-
- void destroy(void *h)
- {
- Alsa *alsa = (Alsa*)h;
- delete alsa;
- }
-
- bool init(void *h, int cs, char *cnames[])
- {
- Alsa *alsa = (Alsa*)h;
- return alsa->init(cs, cnames);
- }
-
- void setparm(void *h, const char *parm, const char *value)
- {
- Alsa *alsa = (Alsa*)h;
- alsa->setParm(parm, value);
- }
-
- bool start(void *h)
- {
- Alsa *alsa = (Alsa*)h;
- return alsa->start();
- }
-
- void stop(void *h)
- {
- Alsa *alsa = (Alsa*)h;
- alsa->stop();
- }
-
- void pre(void *h, size_t s)
- {
- Alsa *alsa = (Alsa*)h;
- alsa->pre(s);
- }
-
- void run(void *h, int ch, sample_t *data, size_t size)
- {
- Alsa *alsa = (Alsa*)h;
- alsa->run(ch, data, size);
- }
-
- void post(void *h, size_t s)
- {
- Alsa *alsa = (Alsa*)h;
- alsa->post(s);
- }
-
- size_t samplerate(void *h)
- {
- Alsa *alsa = (Alsa*)h;
- return alsa->samplerate();
- }
-}
diff --git a/drumgizmo/output/dummy/Makefile.am b/drumgizmo/output/dummy/Makefile.am
deleted file mode 100644
index bff3daf..0000000
--- a/drumgizmo/output/dummy/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-dummysources = \
- dummy.cc
-
-if HAVE_OUTPUT_DUMMY
-
-dummyltlibs = dummy.la
-dummybuildsources = $(dummysources)
-
-else
-
-dummyltlibs =
-dummybuildsources =
-
-endif
-
-EXTRA_DIST = $(dummysources)
-
-lib_LTLIBRARIES = $(dummyltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include
-dummy_la_LDFLAGS = -module -avoid-version -shared
-dummy_la_LIBADD =
-dummy_la_SOURCES = $(dummybuildsources)
-
-install-exec-hook:
- rm -f $(DESTDIR)$(libdir)/dummy.la
diff --git a/drumgizmo/output/dummy/dummy.cc b/drumgizmo/output/dummy/dummy.cc
deleted file mode 100644
index e60f2b7..0000000
--- a/drumgizmo/output/dummy/dummy.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * audiooutputenginedummy.cc
- *
- * Sat Apr 30 21:12: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 2 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 <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-
-class Dummy {
-public:
- Dummy();
- ~Dummy();
- bool init(int channels, char *cnames[]);
-
- void setParm(std::string parm, std::string value);
-
- bool start();
- void stop();
-
- void pre(size_t size);
- void run(int channel, sample_t* data, size_t size);
- void post(size_t size);
-
- size_t samplerate();
-};
-
-Dummy::Dummy()
-{
-}
-
-Dummy::~Dummy()
-{
-}
-
-bool Dummy::init(int channels, char *cnames[])
-{
- return true;
-}
-
-void Dummy::setParm(std::string parm, std::string value)
-{
-}
-
-bool Dummy::start()
-{
- return true;
-}
-
-void Dummy::stop()
-{
-}
-
-void Dummy::pre(size_t size)
-{
-}
-
-void Dummy::run(int channel, sample_t* data, size_t size)
-{
-}
-
-void Dummy::post(size_t size)
-{
-}
-
-size_t Dummy::samplerate()
-{
- return 44100;
-}
-
-extern "C" {
- void *create()
- {
- return new Dummy();
- }
-
- void destroy(void *h)
- {
- Dummy *dummy = (Dummy*)h;
- delete dummy;
- }
-
- bool init(void *h, int cs, char *cnames[])
- {
- Dummy *dummy = (Dummy*)h;
- return dummy->init(cs, cnames);
- }
-
- void setparm(void *h, const char *parm, const char *value)
- {
- Dummy *dummy = (Dummy*)h;
- dummy->setParm(parm, value);
- }
-
- bool start(void *h)
- {
- Dummy *dummy = (Dummy*)h;
- return dummy->start();
- }
-
- void stop(void *h)
- {
- Dummy *dummy = (Dummy*)h;
- dummy->stop();
- }
-
- void pre(void *h, size_t size)
- {
- Dummy *dummy = (Dummy*)h;
- dummy->pre(size);
- }
-
- void run(void *h, int ch, sample_t *data, size_t size)
- {
- Dummy *dummy = (Dummy*)h;
- dummy->run(ch, data, size);
- }
-
- void post(void *h, size_t size)
- {
- Dummy *dummy = (Dummy*)h;
- dummy->post(size);
- }
-
- size_t samplerate(void *h)
- {
- Dummy *dummy = (Dummy*)h;
- return dummy->samplerate();
- }
-}
diff --git a/drumgizmo/output/jackaudio/Makefile.am b/drumgizmo/output/jackaudio/Makefile.am
deleted file mode 100644
index 46cdb23..0000000
--- a/drumgizmo/output/jackaudio/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-
-jackaudiosources = \
- jackaudio.cc \
- $(top_srcdir)/src/semaphore.cc \
- $(top_srcdir)/hugin/hugin.c
-
-if HAVE_OUTPUT_JACKAUDIO
-
-jackaudioltlibs = jackaudio.la
-jackaudiobuildsources = $(jackaudiosources)
-
-else
-
-jackaudioltlibs =
-jackaudiobuildsources =
-
-endif
-
-EXTRA_DIST = $(jackaudiosources)
-
-lib_LTLIBRARIES = $(jackaudioltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/include $(JACK_CFLAGS) -I$(top_srcdir)/hugin -I$(top_srcdir)/src
-jackaudio_la_LDFLAGS = $(JACK_LIBS) -module -avoid-version -shared
-jackaudio_la_LIBADD =
-jackaudio_la_SOURCES = $(jackaudiobuildsources)
-
-install-exec-hook:
- rm -f $(DESTDIR)$(libdir)/jackaudio.la
diff --git a/drumgizmo/output/jackaudio/jackaudio.cc b/drumgizmo/output/jackaudio/jackaudio.cc
deleted file mode 100644
index 3e489a9..0000000
--- a/drumgizmo/output/jackaudio/jackaudio.cc
+++ /dev/null
@@ -1,222 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * jackaudio.cc
- *
- * Sat Apr 30 21:11:54 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 2 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 <stdlib.h>
-
-#include <string>
-#include <audiotypes.h>
-#include <semaphore.h>
-#include <stdlib.h>
-
-#define NOTE_ON 0x90
-
-#include "../../jackclient.h"
-#include <stdio.h>
-
-class JackAudio : public JackProcess {
-public:
- JackAudio();
- ~JackAudio();
- bool init(int channels, char *cnames[]);
-
- void setParm(std::string parm, std::string value);
-
- bool start();
- void stop();
-
- void pre(size_t size);
- void run(int channel, sample_t* data, size_t size);
- void post(size_t size);
-
- void jack_process(jack_nframes_t nframes);
-
- size_t bufsize();
- size_t samplerate();
-
-private:
- JackClient *jackclient{nullptr};
- jack_port_t *output_port[64] = {};
- size_t nchannels{0};
- sample_t **channels{nullptr};
- Semaphore sem;
-};
-
-JackAudio::JackAudio() : sem("jackaudio")
-{
-}
-
-JackAudio::~JackAudio()
-{
-}
-
-bool JackAudio::init(int nchannels, char *cnames[])
-{
- this->nchannels = nchannels;
- channels = (sample_t**)malloc(nchannels * sizeof(sample_t*));
-
- for(int i = 0; i < nchannels; i++) {
- char buf[32];
- sprintf(buf, "%d", i + 1);
- std::string name;
- name += buf;
- name += "-";
- name += cnames[i];
- output_port[i] = jack_port_register(jackclient->jack_client,
- name.c_str(),
- JACK_DEFAULT_AUDIO_TYPE,
- JackPortIsOutput, 0);
- channels[i] = (sample_t*)malloc(bufsize() * sizeof(sample_t));
- }
- return true;
-}
-
-void JackAudio::setParm(std::string parm, std::string value)
-{
- if(parm == "jack_client") {
- sscanf(value.c_str(), "%p", &jackclient);
- if(jackclient) jackclient->addJackProcess(this);
- }
-}
-
-bool JackAudio::start()
-{
- //jackclient->activate();
- return true;
-}
-
-void JackAudio::stop()
-{
-}
-
-void JackAudio::pre(size_t size)
-{
-}
-
-void JackAudio::run(int channel, sample_t* data, size_t size)
-{
- // Copy engine data to ringbuffer.
- for(size_t i = 0; i < size; i++) {
- channels[channel][i] = data[i];
- }
-}
-
-void JackAudio::post(size_t size)
-{
- sem.wait();
-}
-
-void JackAudio::jack_process(jack_nframes_t nframes)
-{
- //printf("o"); fflush(stdout);
- for(size_t c = 0; c < nchannels; c++) {
- jack_default_audio_sample_t *out =
- (jack_default_audio_sample_t *) jack_port_get_buffer(output_port[c],
- nframes);
- for(size_t i = 0; i < nframes; i++) {
- out[i] = channels[c][i];
- }
- }
- sem.post();
-}
-
-size_t JackAudio::bufsize()
-{
- return jack_get_buffer_size(jackclient->jack_client);
-}
-
-size_t JackAudio::samplerate()
-{
- return jack_get_sample_rate(jackclient->jack_client);
-}
-
-extern "C" {
- void *create()
- {
- return new JackAudio();
- }
-
- void destroy(void *h)
- {
- JackAudio *jack = (JackAudio*)h;
- delete jack;
- }
-
- bool init(void *h, int cs, char *cnames[])
- {
- JackAudio *jack = (JackAudio*)h;
- return jack->init(cs, cnames);
- }
-
- void setparm(void *h, const char *parm, const char *value)
- {
- JackAudio *jack = (JackAudio*)h;
- jack->setParm(parm, value);
- }
-
- bool start(void *h)
- {
- JackAudio *jack = (JackAudio*)h;
- return jack->start();
- }
-
- void stop(void *h)
- {
- JackAudio *jack = (JackAudio*)h;
- jack->stop();
- }
-
- void pre(void *h, size_t s)
- {
- JackAudio *jack = (JackAudio*)h;
- jack->pre(s);
- }
-
- void run(void *h, int ch, sample_t *data, size_t size)
- {
- JackAudio *jack = (JackAudio*)h;
- jack->run(ch, data, size);
- }
-
- void post(void *h, size_t s)
- {
- JackAudio *jack = (JackAudio*)h;
- jack->post(s);
- }
-
- size_t bufsize(void *h)
- {
- JackAudio *jack = (JackAudio*)h;
- return jack->bufsize();
- }
-
- size_t samplerate(void *h)
- {
- JackAudio *jack = (JackAudio*)h;
- return jack->samplerate();
- }
-}
-*/
diff --git a/drumgizmo/output/wavfile/Makefile.am b/drumgizmo/output/wavfile/Makefile.am
deleted file mode 100644
index ad26294..0000000
--- a/drumgizmo/output/wavfile/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-
-wavfilesources = \
- wavfile.cc
-
-if HAVE_OUTPUT_WAVFILE
-
-wavfileltlibs = wavfile.la
-wavfilebuildsources = $(wavfilesources)
-
-else
-
-wavfileltlibs =
-wavfilebuildsources =
-
-endif
-
-EXTRA_DIST = $(wavfilesources)
-
-lib_LTLIBRARIES = $(wavfileltlibs)
-
-libdir = $(OUTPUT_PLUGIN_DIR)
-
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include $(SNDFILE_CFLAGS)
-wavfile_la_LDFLAGS = $(SNDFILE_LIBS) -module -avoid-version -shared
-wavfile_la_LIBADD =
-wavfile_la_SOURCES = $(wavfilebuildsources)
-
-install-exec-hook:
- rm -f $(DESTDIR)$(libdir)/wavfile.la
diff --git a/drumgizmo/output/wavfile/wavfile.cc b/drumgizmo/output/wavfile/wavfile.cc
deleted file mode 100644
index 8401f80..0000000
--- a/drumgizmo/output/wavfile/wavfile.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/***************************************************************************
- * wavfile.cc
- *
- * Sat Apr 30 21:12: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 2 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 <stdlib.h>
-
-#include <audiotypes.h>
-#include <string>
-#include <memory.h>
-
-#include <sndfile.h>
-
-#define T(x, msg) if(x < 0) { printf("%s failed: %s\n", msg, snd_strerror(x)); fflush(stdout); return false; }
-
-class WavFile {
-public:
- WavFile();
- ~WavFile();
- bool init(int channels, char *cnames[]);
- void setParm(std::string parm, std::string value);
- bool start();
- void stop();
- void pre(size_t size);
- void run(int channel, sample_t* data, size_t size);
- void post(size_t size);
- size_t samplerate();
-
-private:
- SF_INFO sf_info;
- SNDFILE **fh{nullptr};
- size_t channels{0};
-
- // Parameters
- std::string filename;
-};
-
-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;
-}
-
-WavFile::~WavFile()
-{
- if(fh == NULL) return;
-
- for(size_t i = 0; i < channels; i++) {
- if(fh[i]) sf_close(fh[i]);
- }
-
- if(fh) free(fh);
-}
-
-bool WavFile::init(int channels, char *cnames[])
-{
- this->channels = channels;
-
- fh = (SNDFILE **)malloc(sizeof(SNDFILE *)*channels);
-
- for(size_t i = 0; i < this->channels; i++) fh[i] = NULL;
-
- for(size_t i = 0; i < this->channels; i++) {
- char fname[512];
-
- sprintf(fname, "%s%s-%d.wav", filename.c_str(), cnames[i], (int)i);
- // printf("[%s]\n", fname);
-
- fh[i] = sf_open(fname, SFM_WRITE, &sf_info);
- if(!fh[i]) {
- printf("Write error...\n");
- return false;
- }
- }
-
- return true;
-}
-
-void WavFile::setParm(std::string parm, std::string value)
-{
- if(parm == "file") filename = value;
- if(parm == "srate") sf_info.samplerate = atoi(value.c_str());
-}
-
-bool WavFile::start()
-{
- return true;
-}
-
-void WavFile::stop()
-{
-}
-
-void WavFile::pre(size_t size)
-{
-}
-
-void WavFile::run(int channel, sample_t* cdata, size_t csize)
-{
- if(channel < (int)channels) sf_writef_float(fh[channel], cdata, csize);
-}
-
-void WavFile::post(size_t size)
-{
-}
-
-size_t WavFile::samplerate()
-{
- return sf_info.samplerate;
-}
-
-extern "C" {
- void *create()
- {
- return new WavFile();
- }
-
- void destroy(void *h)
- {
- WavFile *sndfile = (WavFile*)h;
- delete sndfile;
- }
-
- bool init(void *h, int cs, char *cnames[])
- {
- WavFile *sndfile = (WavFile*)h;
- return sndfile->init(cs, cnames);
- }
-
- void setparm(void *h, const char *parm, const char *value)
- {
- WavFile *sndfile = (WavFile*)h;
- sndfile->setParm(parm, value);
- }
-
- bool start(void *h)
- {
- WavFile *sndfile = (WavFile*)h;
- return sndfile->start();
- }
-
- void stop(void *h)
- {
- WavFile *sndfile = (WavFile*)h;
- sndfile->stop();
- }
-
- void pre(void *h, size_t s)
- {
- WavFile *sndfile = (WavFile*)h;
- sndfile->pre(s);
- }
-
- void run(void *h, int ch, sample_t *data, size_t size)
- {
- WavFile *sndfile = (WavFile*)h;
- sndfile->run(ch, data, size);
- }
-
- void post(void *h, size_t s)
- {
- WavFile *sndfile = (WavFile*)h;
- sndfile->post(s);
- }
-
- size_t samplerate(void *h)
- {
- WavFile *wavfile = (WavFile*)h;
- return wavfile->samplerate();
- }
-}