diff options
Diffstat (limited to 'drumgizmo')
| -rw-r--r-- | drumgizmo/audiooutputenginedl.cc | 28 | ||||
| -rw-r--r-- | drumgizmo/audiooutputenginedl.h | 3 | ||||
| -rw-r--r-- | drumgizmo/drumgizmoc.cc | 4 | ||||
| -rw-r--r-- | drumgizmo/output/alsa/alsa.cc | 29 | ||||
| -rw-r--r-- | drumgizmo/output/dummy/dummy.cc | 30 | ||||
| -rw-r--r-- | drumgizmo/output/jackaudio/jackaudio.cc | 29 | ||||
| -rw-r--r-- | drumgizmo/output/wavfile/wavfile.cc | 38 | 
7 files changed, 72 insertions, 89 deletions
| diff --git a/drumgizmo/audiooutputenginedl.cc b/drumgizmo/audiooutputenginedl.cc index 513d21b..2648e8f 100644 --- a/drumgizmo/audiooutputenginedl.cc +++ b/drumgizmo/audiooutputenginedl.cc @@ -111,6 +111,13 @@ AudioOutputEngineDL::AudioOutputEngineDL(std::string name)      o_bufsize = NULL;    } +  o_samplerate = (output_samplerate_func_t) dlsym(lib, "samplerate"); +  dlsym_error = dlerror(); +  if(dlsym_error) { +    printf("Cannot load symbol samplerate: %s\n", dlsym_error); +    return; +  } +    ptr = o_create();    if(is_jack_plugin) { @@ -181,19 +188,8 @@ size_t AudioOutputEngineDL::getBufferSize()    return 1024;  } -#ifdef TEST_AUDIOOUTPUTENGINEDL -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; - -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOOUTPUTENGINEDL*/ +size_t AudioOutputEngineDL::samplerate() +{ +  if(o_samplerate) return o_samplerate(ptr); +  return 44100; +} diff --git a/drumgizmo/audiooutputenginedl.h b/drumgizmo/audiooutputenginedl.h index 471247e..75460f3 100644 --- a/drumgizmo/audiooutputenginedl.h +++ b/drumgizmo/audiooutputenginedl.h @@ -46,6 +46,7 @@ typedef void (*output_pre_func_t)(void*, size_t);  typedef void (*output_run_func_t)(void*,int,sample_t*,size_t);  typedef void (*output_post_func_t)(void*, size_t);  typedef size_t (*output_bufsize_func_t)(void*); +typedef size_t (*output_samplerate_func_t)(void*);  class AudioOutputEngineDL : public AudioOutputEngine {  public: @@ -64,6 +65,7 @@ public:    void post(size_t nsamples);    size_t getBufferSize(); +  size_t samplerate();  private:    void *ptr; @@ -77,6 +79,7 @@ private:    output_run_func_t o_run;    output_post_func_t o_post;    output_bufsize_func_t o_bufsize; +  output_samplerate_func_t o_samplerate;    bool is_jack_plugin;    JackClient *jackclient; diff --git a/drumgizmo/drumgizmoc.cc b/drumgizmo/drumgizmoc.cc index c96736f..61f8eaa 100644 --- a/drumgizmo/drumgizmoc.cc +++ b/drumgizmo/drumgizmoc.cc @@ -187,7 +187,7 @@ int main(int argc, char *argv[])      return 1;    } -  AudioOutputEngine *oe = new AudioOutputEngineDL(outputengine); +  AudioOutputEngineDL *oe = new AudioOutputEngineDL(outputengine);    if(oe == NULL) {      printf("Invalid output engine: %s\n", outputengine.c_str()); @@ -248,6 +248,8 @@ int main(int argc, char *argv[])      return 1;    } +  gizmo.setSamplerate(oe->samplerate()); +    if(!gizmo.init(preload)) {      printf("Failed init engine.\n");      return 1; diff --git a/drumgizmo/output/alsa/alsa.cc b/drumgizmo/output/alsa/alsa.cc index 7b3a395..dc2ac73 100644 --- a/drumgizmo/output/alsa/alsa.cc +++ b/drumgizmo/output/alsa/alsa.cc @@ -49,6 +49,7 @@ public:    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; @@ -157,6 +158,11 @@ void Alsa::post(size_t size)    snd_pcm_writei(handle, data, size);  } +size_t Alsa::samplerate() +{ +  return srate; +} +  extern "C" {    void *create()    { @@ -210,21 +216,10 @@ extern "C" {      Alsa *alsa = (Alsa*)h;      alsa->post(s);    } -} - -#ifdef TEST_AUDIOOUTPUTENGINEALSA -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOOUTPUTENGINEALSA*/ +  size_t samplerate(void *h) +  { +    Alsa *alsa = (Alsa*)h; +    return alsa->samplerate(); +  } +} diff --git a/drumgizmo/output/dummy/dummy.cc b/drumgizmo/output/dummy/dummy.cc index cd210dc..e60f2b7 100644 --- a/drumgizmo/output/dummy/dummy.cc +++ b/drumgizmo/output/dummy/dummy.cc @@ -43,6 +43,8 @@ public:    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() @@ -83,6 +85,11 @@ void Dummy::post(size_t size)  {  } +size_t Dummy::samplerate() +{ +  return 44100; +} +  extern "C" {    void *create()    { @@ -136,21 +143,10 @@ extern "C" {      Dummy *dummy = (Dummy*)h;      dummy->post(size);    } -} - -#ifdef TEST_AUDIOOUTPUTENGINEDUMMY -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOOUTPUTENGINEDUMMY*/ +  size_t samplerate(void *h) +  { +    Dummy *dummy = (Dummy*)h; +    return dummy->samplerate(); +  } +} diff --git a/drumgizmo/output/jackaudio/jackaudio.cc b/drumgizmo/output/jackaudio/jackaudio.cc index 2afe1ea..5c04146 100644 --- a/drumgizmo/output/jackaudio/jackaudio.cc +++ b/drumgizmo/output/jackaudio/jackaudio.cc @@ -54,6 +54,7 @@ public:    void jack_process(jack_nframes_t nframes);    size_t bufsize(); +  size_t samplerate();  private:    JackClient *jackclient; @@ -146,6 +147,11 @@ 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()    { @@ -205,21 +211,10 @@ extern "C" {      JackAudio *jack = (JackAudio*)h;      return jack->bufsize();    } -} - -#ifdef TEST_AUDIOINPUTENGINEJACKAUDIO -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; -// TODO: Put some testcode here (see test.h for usable macros). - -TEST_END; - -#endif/*TEST_AUDIOINPUTENGINEJACKAUDIO*/ +  size_t samplerate(void *h) +  { +    JackAudio *jack = (JackAudio*)h; +    return jack->samplerate(); +  } +} diff --git a/drumgizmo/output/wavfile/wavfile.cc b/drumgizmo/output/wavfile/wavfile.cc index cb95715..fa4128e 100644 --- a/drumgizmo/output/wavfile/wavfile.cc +++ b/drumgizmo/output/wavfile/wavfile.cc @@ -44,6 +44,7 @@ public:    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; @@ -58,6 +59,10 @@ WavFile::WavFile()  {    fh = NULL;    filename = "output"; + +  sf_info.channels = 1;//channels; +  sf_info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT; +  sf_info.samplerate = 44100;  }  WavFile::~WavFile() @@ -74,10 +79,6 @@ WavFile::~WavFile()  bool WavFile::init(int channels, char *cnames[])  {    this->channels = channels; -   -  sf_info.channels = 1;//channels; -  sf_info.format = SF_FORMAT_WAV | SF_FORMAT_FLOAT; -  sf_info.samplerate = 44100;    fh = (SNDFILE **)malloc(sizeof(SNDFILE *)*channels); @@ -102,6 +103,7 @@ bool WavFile::init(int channels, char *cnames[])  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() @@ -126,6 +128,11 @@ void WavFile::post(size_t size)  {  } +size_t WavFile::samplerate() +{ +  return sf_info.samplerate; +} +  extern "C" {    void *create()    { @@ -179,21 +186,10 @@ extern "C" {      WavFile *sndfile = (WavFile*)h;      sndfile->post(s);    } -} - -#ifdef TEST_AUDIOOUTPUTENGINESNDFILE -//Additional dependency files -//deps: -//Required cflags (autoconf vars may be used) -//cflags: -//Required link options (autoconf vars may be used) -//libs: -#include "test.h" - -TEST_BEGIN; - -// TODO: Put some testcode here (see test.h for usable macros). -TEST_END; - -#endif/*TEST_AUDIOOUTPUTENGINESNDFILE*/ +  size_t samplerate(void *h) +  { +    WavFile *wavfile = (WavFile*)h; +    return wavfile->samplerate(); +  } +} | 
