Nsound  0.9.4
EnvelopeAdsr.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 //
3 // $Id: EnvelopeAdsr.h 874 2014-09-08 02:21:29Z weegreenblobbie $
4 //
5 // Nsound is a C++ library and Python module for audio synthesis featuring
6 // dynamic digital filters. Nsound lets you easily shape waveforms and write
7 // to disk or plot them. Nsound aims to be as powerful as Csound but easy to
8 // use.
9 //
10 // Copyright (c) 2005-2006 Nick Hilton
11 //
12 // weegreenblobbie_yahoo_com (replace '_' with '@' and '.')
13 //
14 //-----------------------------------------------------------------------------
15 
16 //-----------------------------------------------------------------------------
17 //
18 // This program is free software; you can redistribute it and/or modify
19 // it under the terms of the GNU General Public License as published by
20 // the Free Software Foundation; either version 2 of the License, or
21 // (at your option) any later version.
22 //
23 // This program is distributed in the hope that it will be useful,
24 // but WITHOUT ANY WARRANTY; without even the implied warranty of
25 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 // GNU Library General Public License for more details.
27 //
28 // You should have received a copy of the GNU General Public License
29 // along with this program; if not, write to the Free Software
30 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
31 //
32 //-----------------------------------------------------------------------------
33 
34 //-----------------------------------------------------------------------------
35 //
36 // This class will generate an Attack Delay Sustain Release (ADSR) envlepe.
37 //
38 // 1.0 | /|
39 // | / |
40 // | / |
41 // | / |
42 // | / |-----sustain-amplitude------|
43 // | / |
44 // | / |
45 // | / |
46 // |/ |
47 // 0.0 ------------------------------------------------
48 // |--------|
49 // Attack |------|
50 // Delay |--------------------------|
51 // Sustain |-----|
52 // Release
53 //
54 // Currently the curves are linear.
55 //
56 //-----------------------------------------------------------------------------
57 
58 #ifndef _NSOUND_ENVELOPE_ADSR_H_
59 #define _NSOUND_ENVELOPE_ADSR_H_
60 
61 namespace Nsound
62 {
63 
64 // Forward declarations
65 class AudioStream;
66 class Buffer;
67 
68 //-----------------------------------------------------------------------------
70 {
71  public:
72 
75  const float64 & sample_rate,
76  const float64 & attack_time,
77  const float64 & delay_time,
78  const float64 & sustain_amplitude,
79  const float64 & release_time);
80 
81  void reset();
82 
83  void setAttackTime(const float64 & time);
84  void setDelayTime(const float64 & time);
85  void setSustainAmplitude(const float64 & amp);
86  void setReleaseTime(const float64 & time);
87 
89  AudioStream shape(const AudioStream & as);
90 
92  Buffer shape(const Buffer & buf);
93 
95  float64 shape(float64 sample, bool key_on);
96  bool is_done() const { return mode_ == done; }
97 
98  protected:
99 
109 
111 
113 
114 };
115 
116 };
117 
118 #endif
void setReleaseTime(const float64 &time)
void setSustainAmplitude(const float64 &amp)
double float64
Definition: Nsound.h:146
EnvelopeAdsr(const float64 &sample_rate, const float64 &attack_time, const float64 &delay_time, const float64 &sustain_amplitude, const float64 &release_time)
Constructor.
Definition: EnvelopeAdsr.cc:39
bool is_done() const
Definition: EnvelopeAdsr.h:96
AudioStream shape(const AudioStream &as)
Shapes the AudioStream inplace.
void setAttackTime(const float64 &time)
Definition: EnvelopeAdsr.cc:81
A Buffer for storing audio samples.
Definition: Buffer.h:60
void setDelayTime(const float64 &time)
Definition: EnvelopeAdsr.cc:97