Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > b908fbf6412c51882b2aebf8342c549f > files > 137

libecasound-devel-2.5.2-2mdv2009.1.i586.rpm

#ifndef INCLUDED_TWO_STAGE_LINEAR_ENVELOPE_H
#define INCLUDED_TWO_STAGE_LINEAR_ENVELOPE_H

#include <string>

#include "ctrl-source.h"

/**
 * Two-stage linear envelope
 */
class TWO_STAGE_LINEAR_ENVELOPE : public CONTROLLER_SOURCE {

 public:

  std::string name(void) const { return("Two-stage linear envelope"); }
  virtual parameter_t value(double pos_secs);
  virtual void set_initial_value(parameter_t arg) {}
  virtual void init(void);

  std::string parameter_names(void) const { return("1st-stage-sec,2nd-stage-sec"); }
  void set_parameter(int param, parameter_t value);
  parameter_t get_parameter(int param) const;

  TWO_STAGE_LINEAR_ENVELOPE(void); 
  TWO_STAGE_LINEAR_ENVELOPE* clone(void) const { return new TWO_STAGE_LINEAR_ENVELOPE(*this); }
  TWO_STAGE_LINEAR_ENVELOPE* new_expr(void) const { return new TWO_STAGE_LINEAR_ENVELOPE(); }

  private:

  parameter_t first_stage_length_rep, second_stage_length_rep;
};

#endif