diff options
Diffstat (limited to 'drumgizmo/input/test')
| -rw-r--r-- | drumgizmo/input/test/test.cc | 64 | 
1 files changed, 16 insertions, 48 deletions
| diff --git a/drumgizmo/input/test/test.cc b/drumgizmo/input/test/test.cc index 6032f02..b7b4a7d 100644 --- a/drumgizmo/input/test/test.cc +++ b/drumgizmo/input/test/test.cc @@ -31,13 +31,7 @@  class Test {  public: -  Test() -    : p(0.1) -    , instr(-1) -    , nth(-1) -    , nth_counter(0) -  {} - +  Test() { p = 0.1; instr = -1; len = -1; }    ~Test() {}    bool init(int instruments, char *inames[]); @@ -54,14 +48,11 @@ public:  private:    float p;    int instr; -  int nth; -  int nth_counter; -  int num_instruments; +  int len;  };  bool Test::init(int instruments, char *inames[])  { -  num_instruments = instruments;    return true;  } @@ -69,7 +60,7 @@ void Test::setParm(std::string parm, std::string value)  {    if(parm == "p") p = atof(value.c_str());    if(parm == "instr") instr = atoi(value.c_str()); -  if(parm == "nth") nth = atoi(value.c_str()); +  if(parm == "len") len = atoi(value.c_str());  }  bool Test::start() @@ -85,46 +76,23 @@ void Test::pre()  {  } -#define BUFFER_MAX 1000  event_t *Test::run(size_t pos, size_t nsamples, size_t *nevents)  { -  *nevents = 0; -  event_t *evs = (event_t *)malloc(sizeof(event_t) * BUFFER_MAX); - -  for(size_t i = 0; i < nsamples; ++i) { - -    if(nth != -1) { -      if(nth_counter < nth) { -        ++nth_counter; -        continue; -      } -      nth_counter = 0; -    } else { -      if((float)rand() / (float)RAND_MAX > p) { -        continue; -      } -    } - -    evs[*nevents].type = TYPE_ONSET; - -    if(instr != -1) { -      // Use specified instrument -      evs[*nevents].instrument = instr; -    } else { -      // Use random instrument -      evs[*nevents].instrument = rand() % num_instruments; -    } - -    evs[*nevents].velocity = (float)rand()/(float)RAND_MAX; -    evs[*nevents].offset = nsamples?rand()%nsamples:0; - -    (*nevents)++; - -    if(*nevents == BUFFER_MAX) { -      break; -    } +  if((float)rand() / (float)RAND_MAX > p) { +    *nevents = 0; +    return NULL;    } +  *nevents = 1; +  event_t *evs = (event_t *)malloc(sizeof(event_t)); +  evs[0].type = TYPE_ONSET; +  if(len != -1 && (int)pos > len * 44100) evs[0].type = TYPE_STOP; + +  if(instr != -1) evs[0].instrument = instr; +  else evs[0].instrument = rand() % 32; + +  evs[0].velocity = (float)rand()/(float)RAND_MAX; +  evs[0].offset = nsamples?rand()%nsamples:0;    return evs;  } | 
