Mercurial > hg > octave-jordi
changeset 19479:13082628e7e8
added __recorder_audiorecorder__ file for wrapping recorder_class functionality
* __recorder_audiorecorder__.cc: contains functions for accessing
recorder_class functionality from Octave
* module-files: added lines to build __recorder_audiorecorder__.cc
author | Vytautas Jančauskas <unaudio@gmail.com> |
---|---|
date | Thu, 12 Sep 2013 19:07:04 +0300 |
parents | b8ea3ff8f5fd |
children | 9d1917a61759 |
files | libinterp/dldfcn/__recorder_audiorecorder__.cc libinterp/dldfcn/module-files |
diffstat | 2 files changed, 332 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/libinterp/dldfcn/__recorder_audiorecorder__.cc @@ -0,0 +1,330 @@ +#include "oct.h" +#include "ov-struct.h" + +#include "player_class.cc" +#include "recorder_class.cc" + +DEFUN_DLD(__recorder_audiorecorder__, args, , +"__recorder_audiorecorder__" +) +{ + int nargin = args.length (); + audiorecorder* retval = new audiorecorder (); + int offset = 0; + if (nargin > 0) + { + bool is_function = args(0).is_string () || args(0).is_function_handle () || args(0).is_inline_function (); + if (is_function) + { + retval->octave_callback_function = args (0).function_value (); + offset = 1; + } + } + switch (nargin - offset) + { + case 3: + retval->set_fs (args(0 + offset).int_value ()); + retval->set_nbits (args(1 + offset).int_value ()); + retval->set_channels (args(2 + offset).int_value ()); + break; + case 4: + retval->set_fs (args(0 + offset).int_value ()); + retval->set_nbits (args(1 + offset).int_value ()); + retval->set_channels (args(2 + offset).int_value ()); + retval->set_id (args(3 + offset).int_value ()); + break; + } + retval->init(); + return octave_value(retval); +} + +DEFUN_DLD(__recorder_getaudiodata__, args, , +"__recorder_getaudiodata__" +) +{ + octave_value retval; + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value (recorder->getaudiodata ()); + return retval; +} + +DEFUN_DLD(__recorder_get_channels__, args, , +"__recorder_get_channels__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_channels()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_fs__, args, , +"__recorder_get_fs__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_fs()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_id__, args, , +"__recorder_get_id__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_id()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_nbits__, args, , +"__recorder_get_nbits__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_nbits ()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_sample_number__, args, , +"__recorder_get_sample_number__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_sample_number()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_tag__, args, , +"__recorder_get_tag__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value (recorder->get_tag ()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_total_samples__, args, , +"__recorder_get_total_samples__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = octave_value(recorder->get_total_samples()); + } + return retval; +} + +DEFUN_DLD(__recorder_get_userdata__, args, , +"__recorder_get_userdata__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + retval = recorder->get_userdata (); + } + return retval; +} + +DEFUN_DLD(__recorder_isrecording__, args, , +"__recorder_isrecording__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + if (recorder->isrecording()) + { + return octave_value(1); + } + else + { + return octave_value(0); + } + } + return retval; +} + +DEFUN_DLD(__recorder_pause__, args, , +"__recorder_pause__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->pause(); + } + return retval; +} + +DEFUN_DLD(__recorder_recordblocking__, args, , +"__recorder_recordblocking__" +) +{ + octave_value retval; + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->recordblocking (args (1).float_value ()); + return retval; +} + +DEFUN_DLD(__recorder_record__, args, , +"__recorder_record__" +) +{ + octave_value retval; + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + if (args.length () == 1) + { + recorder->record (); + } + else if (args.length () == 2) + { + recorder->set_end_sample (args (1).int_value () * recorder->get_fs ()); + recorder->record (); + } + else + { + error ("audiorecorder: wrong number of arguments passed to record"); + } + return retval; +} + +DEFUN_DLD(__recorder_resume__, args, , +"__recorder_resume__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 1) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->resume(); + } + return retval; +} + +DEFUN_DLD(__recorder_set_fs__, args, , +"__recorder_set_fs__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 2) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->set_fs (args (1).int_value()); + } + return retval; +} + +DEFUN_DLD(__recorder_set_tag__, args, , +"__recorder_set_tag__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 2) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->set_tag (args(1).char_matrix_value ()); + } + return retval; +} + +DEFUN_DLD(__recorder_set_userdata__, args, , +"__recorder_set_userdata__" +) +{ + octave_value retval; + int nargin = args.length (); + if (nargin == 2) + { + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->set_userdata (args(1)); + } + return retval; +} + +DEFUN_DLD(__recorder_stop__, args, , +"__recorder_stop__" +) +{ + octave_value retval; + audiorecorder* recorder = 0; + const octave_base_value& rep = args (0).get_rep (); + recorder = &((audiorecorder &)rep); + recorder->stop(); + return retval; +}
--- a/libinterp/dldfcn/module-files +++ b/libinterp/dldfcn/module-files @@ -24,4 +24,5 @@ audiowrite.cc|$(SNDFILE_CPPFLAGS)|$(SNDFILE_LDFLAGS)|$(SNDFILE_LIBS) audioinfo.cc|$(SNDFILE_CPPFLAGS)|$(SNDFILE_LDFLAGS)|$(SNDFILE_LIBS) audiodevinfo.cc|$(PORTAUDIO_CPPFLAGS)|$(PORTAUDIO_LDFLAGS)|$(PORTAUDIO_LIBS) -__player_audioplayer__.cc|$(PORTAUDIO_CPPFLAGS)|$(PORTAUDIO_LDFLAGS)|$(PORTAUDIO_LIBS) \ No newline at end of file +__player_audioplayer__.cc|$(PORTAUDIO_CPPFLAGS)|$(PORTAUDIO_LDFLAGS)|$(PORTAUDIO_LIBS) +__recorder_audiorecorder__.cc|$(PORTAUDIO_CPPFLAGS)|$(PORTAUDIO_LDFLAGS)|$(PORTAUDIO_LIBS) \ No newline at end of file