view libinterp/dldfcn/__player_audioplayer__.cc @ 19513:b8ea3ff8f5fd

include player_class.cc and recorder_class.cc in __player_audioplayer__.cc * __player_audioplayer__.cc: include player_class.cc and recorder_class.cc * module-files: remove lines to build player_class.cc and recorder_class.cc, add a line to build __player_audioplayer__.cc * recorder_class.cc: remove bits_to_format utility function
author Vytautas Jančauskas <unaudio@gmail.com>
date Thu, 12 Sep 2013 19:02:25 +0300
parents 81e7bfb2e872
children 9d1917a61759
line wrap: on
line source

#include "oct.h"
#include "ov-struct.h"

#include "player_class.cc"
#include "recorder_class.cc"
   
DEFUN_DLD(__player_audioplayer__, args, ,
"__player_audioplayer__"
)
{
  int nargin = args.length ();
  audioplayer* retval = new audioplayer ();
  bool is_function = args(0).is_string () || args(0).is_function_handle () || args(0).is_inline_function ();
  if (is_function)
    {
      retval->set_y (args (0).function_value ());
    }
  else
    {
      retval->set_y (args (0));
    }
  retval->set_fs (args (1).int_value ());
  switch (nargin)
    {
      case 3:
        retval->set_nbits (args (2).int_value ());
        break;
      case 4:
        retval->set_nbits (args (2).int_value ());
        retval->set_id (args (3).int_value ());
        break;
    }
  if (is_function)
    {
      retval->init_fn ();
    }
  else
    {
      retval->init (); 
    }
  return octave_value(retval);
}
   
DEFUN_DLD(__player_get_channels__, args, ,
"__player_get_channels__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_channels());
    }
  return retval;
}
   
DEFUN_DLD(__player_get_fs__, args, ,
"__player_get_fs__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_fs());
    }
  return retval;
}

DEFUN_DLD(__player_get_id__, args, ,
"__player_get_id__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_id());
    }
  return retval;
}

DEFUN_DLD(__player_get_nbits__, args, ,
"__player_get_nbits__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_nbits());
    }
  return retval;
}
 
DEFUN_DLD(__player_get_sample_number__, args, ,
"__player_get_sample_number__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_sample_number());
    }
  return retval;
}

DEFUN_DLD(__player_get_tag__, args, ,
"__player_get_tag__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value (player->get_tag ());
    }
  return retval;
}

DEFUN_DLD(__player_get_total_samples__, args, ,
"__player_get_total_samples__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = octave_value(player->get_total_samples());
    }
  return retval;
}

DEFUN_DLD(__player_get_userdata__, args, ,
"__player_get_userdata__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      retval = player->get_userdata ();
    }
  return retval;
}

DEFUN_DLD(__player_isplaying__, args, ,
"__player_isplaying__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      if (player->isplaying())
        {
          return octave_value(1);
        }
      else
        {
          return octave_value(0);
        }
    }
  return retval;
}

DEFUN_DLD(__player_pause__, args, ,
"__player_pause__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->pause();
    }
  return retval;
}

DEFUN_DLD(__player_playblocking__, args, ,
"__player_playblocking__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->playblocking();
    }
  else
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      if (args (1).is_matrix_type ())
        {
          unsigned int start, end;
          RowVector range = args (1).row_vector_value ();
          start = range.elem(0) - 1;
          end = range.elem(1) - 1;
          if (start < 0 or start > player->get_total_samples() or 
              start > end or end < 0 or end > player->get_total_samples())
            {
              error("audioplayer: invalid range specified for playback");
            }
          player->set_sample_number(start);
          player->set_end_sample(end);
        }
      else
        {
          unsigned int start;
          start = args (1).int_value() - 1;
          if (start < 0 or start > player->get_total_samples())
            {
              error("audioplayer: invalid range specified for playback");
            }
          player->set_sample_number(start);
        }
      player->playblocking();
    }
  return retval;
}

DEFUN_DLD(__player_play__, args, ,
"__player_play__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->play();
    }
  else
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      if (args (1).is_matrix_type ())
        {
          unsigned int start, end;
          RowVector range = args (1).row_vector_value ();
          start = range.elem(0) - 1;
          end = range.elem(1) - 1;
          if (start < 0 or start > player->get_total_samples() or 
              start > end or end < 0 or end > player->get_total_samples())
            {
              error("audioplayer: invalid range specified for playback");
            }
          player->set_sample_number(start);
          player->set_end_sample(end);
        }
      else
        {
          unsigned int start;
          start = args (1).int_value() - 1;
          if (start < 0 or start > player->get_total_samples())
            {
              error("audioplayer: invalid range specified for playback");
            }
          player->set_sample_number(start);
        }
      player->play();
    }
  return retval;
}

DEFUN_DLD(__player_resume__, args, ,
"__player_resume__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->resume();
    }
  return retval;
}

DEFUN_DLD(__player_set_fs__, args, ,
"__player_set_fs__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 2)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->set_fs (args(1).int_value ());
    }
  return retval;
}

DEFUN_DLD(__player_set_tag__, args, ,
"__player_set_tag__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 2)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->set_tag (args(1).char_matrix_value ());
    }
  return retval;
}

DEFUN_DLD(__player_set_userdata__, args, ,
"__player_set_userdata__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 2)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->set_userdata (args(1));
    }
  return retval;
}

DEFUN_DLD(__player_stop__, args, ,
"__player_stop__"
)
{
  octave_value retval;
  int nargin = args.length ();
  if (nargin == 1)
    {
      audioplayer* player = 0;
      const octave_base_value& rep = args (0).get_rep ();
      player = &((audioplayer &)rep);
      player->stop();
    }
  return retval;
}