/[svn]/linuxsampler/trunk/src/engines/common/Voice.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/common/Voice.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2014 by iliev, Fri Oct 23 17:53:17 2009 UTC revision 2015 by iliev, Sun Oct 25 22:22:52 2009 UTC
# Line 27  Line 27 
27  #include "Event.h"  #include "Event.h"
28  #include "../../common/Pool.h"  #include "../../common/Pool.h"
29    
30    #include <gig.h> // TODO: remove gig dependency
31    
32  namespace LinuxSampler {  namespace LinuxSampler {
33    
34      class Voice {      class Voice {
# Line 44  namespace LinuxSampler { Line 46  namespace LinuxSampler {
46                  type_release_trigger_required,  ///< If the key of this voice will be released, it causes a release triggered voice to be spawned                  type_release_trigger_required,  ///< If the key of this voice will be released, it causes a release triggered voice to be spawned
47                  type_release_trigger            ///< Release triggered voice which cannot be killed by releasing its key                  type_release_trigger            ///< Release triggered voice which cannot be killed by releasing its key
48              };              };
49    
50                struct PitchInfo {
51                    float PitchBase;      ///< Basic pitch depth, stays the same for the whole life time of the voice
52                    float PitchBend;      ///< Current pitch value of the pitchbend wheel
53                    float PitchBendRange; ///< The pitch range of the pitchbend wheel, value is in cents / 8192
54                };
55    
56                struct EGInfo {
57                    double Attack;
58                    double Decay;
59                    double Release;
60                };
61    
62                struct SampleInfo {
63                    uint SampleRate;
64                    uint ChannelCount;
65                    uint FrameSize;
66                    uint TotalFrameCount;
67                    uint BitDepth;
68                    bool HasLoops;
69                    uint LoopStart;
70                    uint LoopLength;
71                    uint LoopPlayCount; ///< Number of times the loop should be played (a value of 0 = infinite).
72                    bool Unpitched; ///< sound which is not characterized by a perceived frequency
73                };
74    
75                struct RegionInfo {
76                    uint8_t UnityNote; ///< The MIDI key number of the recorded pitch of the sample
77                    int16_t FineTune;
78                    int     Pan; ///< Panorama / Balance (-64..0..63 <-> left..middle..right)
79                    uint    SampleStartOffset; ///< Number of samples the sample start should be moved
80    
81                    double  EG1PreAttack; ///< Preattack value of the sample amplitude EG (in permilles)
82                    double  EG1Attack; ///< Attack time of the sample amplitude EG (in seconds)
83                    double  EG1Hold;  ///< If true, Decay1 stage should be postponed until the sample reached the sample loop start
84                    double  EG1Decay1;  ///< Decay time of the sample amplitude EG (in seconds)
85                    double  EG1Decay2;  ///< Only if (EG1InfiniteSustain == false): 2nd decay stage time of the sample amplitude EG (in seconds)
86                    double  EG1Sustain; ///< Sustain value of the sample amplitude EG (in permilles)
87                    bool    EG1InfiniteSustain; ///< If true, instead of going into Decay2 phase, Decay1 level will be hold until note will be released.
88                    double  EG1Release; ///< Release time of the sample amplitude EG (in seconds)
89    
90                    double  EG2PreAttack; ///< Preattack value of the filter cutoff EG (in permilles)
91                    double  EG2Attack; ///< Attack time of the filter cutoff EG (in seconds)
92                    double  EG2Decay1;  ///< Decay time of the filter cutoff EG (in seconds)
93                    double  EG2Decay2;  ///< Only if (EG2InfiniteSustain == false): 2nd decay stage time of the filter cutoff EG (in seconds)
94                    double  EG2Sustain; ///< Sustain value of the filter cutoff EG (in permilles)
95                    bool    EG2InfiniteSustain; ///< If true, instead of going into Decay2 phase, Decay1 level will be hold until note will be released.
96                    double  EG2Release; ///< Release time of the filter cutoff EG (in seconds)
97    
98                    double  EG3Attack;  ///< Attack time of the sample pitch EG (in seconds)
99                    int     EG3Depth;   ///< Depth of the sample pitch EG (-1200 - +1200)
100                    uint8_t ReleaseTriggerDecay; ///< 0 - 8
101    
102                    bool               VCFEnabled;    ///< If filter should be used.
103                    ::gig::vcf_type_t  VCFType;       ///< Defines the general filter characteristic (lowpass, highpass, bandpass, etc.).
104                    uint8_t            VCFResonance;  ///< Firm internal filter resonance weight.
105                };
106    
107                struct InstrumentInfo {
108                    int   FineTune; // in cents
109                    uint  PitchbendRange;    ///< Number of semitones pitchbend controller can pitch
110                };
111    
112                /// Reflects a MIDI controller
113                struct midi_ctrl {
114                    uint8_t controller; ///< MIDI control change controller number
115                    uint8_t value;      ///< Current MIDI controller value
116                    float   fvalue;     ///< Transformed / effective value (e.g. volume level or filter cutoff frequency)
117                };
118    
119                Voice() { }
120                virtual ~Voice() { }
121      };      };
122  } // namespace LinuxSampler  } // namespace LinuxSampler
123    

Legend:
Removed from v.2014  
changed lines
  Added in v.2015

  ViewVC Help
Powered by ViewVC