⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 envelope.cpp

📁 Mobile STK for Symbian OS V0.1
💻 CPP
字号:
/***************************************************//*! \class Envelope    \brief STK envelope base class.    This class implements a simple envelope    generator which is capable of ramping to    a target value by a specified \e rate.    It also responds to simple \e keyOn and    \e keyOff messages, ramping to 1.0 on    keyOn and to 0.0 on keyOff.    by Perry R. Cook and Gary P. Scavone, 1995 - 2005.*//***************************************************/#include "Envelope.h"Envelope :: Envelope(void) : Generator(){      target_ = 0.0;  value_ = 0.0;  rate_ = 0.001;  state_ = 0;}Envelope :: Envelope ( const Envelope& e ){  target_ = 0.0;  value_ = 0.0;  rate_ = 0.001;  state_ = 0;}Envelope :: ~Envelope(void){}Envelope& Envelope :: operator= ( const Envelope& e ){  if ( this != &e ) {    target_ = e.target_;    value_ = e.value_;    rate_ = e.rate_;    state_ = e.state_;  }  return *this;}void Envelope :: keyOn(void){  target_ = 1.0;  if (value_ != target_) state_ = 1;}void Envelope :: keyOff(void){  target_ = 0.0;  if (value_ != target_) state_ = 1;}void Envelope :: setRate(StkFloat rate){  if (rate < 0.0) {#if !defined(SYMBIAN)    errorString_ << "Envelope::setRate: negative rates not allowed ... correcting!";    handleError( StkError::WARNING );#endif    rate_ = -rate;  }  else    rate_ = rate;}void Envelope :: setTime(StkFloat time){  if (time < 0.0) {#if !defined(SYMBIAN)    errorString_ << "Envelope::setTime: negative times not allowed ... correcting!";    handleError( StkError::WARNING );#endif    rate_ = 1.0 / (-time * Stk::sampleRate());  }  else    rate_ = 1.0 / (time * Stk::sampleRate());}void Envelope :: setTarget(StkFloat target){  target_ = target;  if (value_ != target_) state_ = 1;}void Envelope :: setValue(StkFloat value){  state_ = 0;  target_ = value;  value_ = value;}int Envelope :: getState(void) const{  return state_;}StkFloat Envelope :: computeSample(void ){  if (state_) {    if (target_ > value_) {      value_ += rate_;      if (value_ >= target_) {        value_ = target_;        state_ = 0;      }    }    else {      value_ -= rate_;      if (value_ <= target_) {        value_ = target_;        state_ = 0;      }    }  }  lastOutput_ = value_;  return value_;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -