39 |
#include "../gig/Synthesizer.h" |
#include "../gig/Synthesizer.h" |
40 |
#include "../gig/Profiler.h" |
#include "../gig/Profiler.h" |
41 |
#include "SignalUnitRack.h" |
#include "SignalUnitRack.h" |
42 |
|
#include "LFOAll.h" |
|
// include the appropriate (unsigned) triangle LFO implementation |
|
|
#if CONFIG_UNSIGNED_TRIANG_ALGO == INT_MATH_SOLUTION |
|
|
# include "LFOTriangleIntMath.h" |
|
|
#elif CONFIG_UNSIGNED_TRIANG_ALGO == INT_ABS_MATH_SOLUTION |
|
|
# include "LFOTriangleIntAbsMath.h" |
|
|
#elif CONFIG_UNSIGNED_TRIANG_ALGO == DI_HARMONIC_SOLUTION |
|
|
# include "LFOTriangleDiHarmonic.h" |
|
|
#else |
|
|
# error "Unknown or no (unsigned) triangle LFO implementation selected!" |
|
|
#endif |
|
|
|
|
|
// include the appropriate (signed) triangle LFO implementation |
|
|
#if CONFIG_SIGNED_TRIANG_ALGO == INT_MATH_SOLUTION |
|
|
# include "LFOTriangleIntMath.h" |
|
|
#elif CONFIG_SIGNED_TRIANG_ALGO == INT_ABS_MATH_SOLUTION |
|
|
# include "LFOTriangleIntAbsMath.h" |
|
|
#elif CONFIG_SIGNED_TRIANG_ALGO == DI_HARMONIC_SOLUTION |
|
|
# include "LFOTriangleDiHarmonic.h" |
|
|
#else |
|
|
# error "Unknown or no (signed) triangle LFO implementation selected!" |
|
|
#endif |
|
43 |
|
|
44 |
namespace LinuxSampler { |
namespace LinuxSampler { |
45 |
|
|
|
#if CONFIG_UNSIGNED_TRIANG_ALGO == INT_MATH_SOLUTION |
|
|
typedef LFOTriangleIntMath<range_unsigned> LFOUnsigned; |
|
|
#elif CONFIG_UNSIGNED_TRIANG_ALGO == INT_ABS_MATH_SOLUTION |
|
|
typedef LFOTriangleIntAbsMath<range_unsigned> LFOUnsigned; |
|
|
#elif CONFIG_UNSIGNED_TRIANG_ALGO == DI_HARMONIC_SOLUTION |
|
|
typedef LFOTriangleDiHarmonic<range_unsigned> LFOUnsigned; |
|
|
#endif |
|
|
|
|
|
#if CONFIG_SIGNED_TRIANG_ALGO == INT_MATH_SOLUTION |
|
|
typedef LFOTriangleIntMath<range_signed> LFOSigned; |
|
|
#elif CONFIG_SIGNED_TRIANG_ALGO == INT_ABS_MATH_SOLUTION |
|
|
typedef LFOTriangleIntAbsMath<range_signed> LFOSigned; |
|
|
#elif CONFIG_SIGNED_TRIANG_ALGO == DI_HARMONIC_SOLUTION |
|
|
typedef LFOTriangleDiHarmonic<range_signed> LFOSigned; |
|
|
#endif |
|
|
|
|
46 |
class AbstractVoice : public Voice { |
class AbstractVoice : public Voice { |
47 |
public: |
public: |
48 |
type_t Type; ///< Voice Type (bit field, a voice may have several types) |
type_t Type; ///< Voice Type (bit field, a voice may have several types) |
136 |
gig::EGDecay EG3; ///< Envelope Generator 3 (Pitch) TODO: use common EG instead? |
gig::EGDecay EG3; ///< Envelope Generator 3 (Pitch) TODO: use common EG instead? |
137 |
midi_ctrl VCFCutoffCtrl; |
midi_ctrl VCFCutoffCtrl; |
138 |
midi_ctrl VCFResonanceCtrl; |
midi_ctrl VCFResonanceCtrl; |
139 |
LFOUnsigned* pLFO1; ///< Low Frequency Oscillator 1 (Amplification) |
LFOSineUnsigned* pLFO1; ///< Low Frequency Oscillator 1 (Amplification) |
140 |
LFOUnsigned* pLFO2; ///< Low Frequency Oscillator 2 (Filter cutoff frequency) |
LFOSineUnsigned* pLFO2; ///< Low Frequency Oscillator 2 (Filter cutoff frequency) |
141 |
LFOSigned* pLFO3; ///< Low Frequency Oscillator 3 (Pitch) |
LFOSineSigned* pLFO3; ///< Low Frequency Oscillator 3 (Pitch) |
142 |
bool bLFO1Enabled; ///< Should we use the Amplitude LFO for this voice? |
bool bLFO1Enabled; ///< Should we use the Amplitude LFO for this voice? |
143 |
bool bLFO2Enabled; ///< Should we use the Filter Cutoff LFO for this voice? |
bool bLFO2Enabled; ///< Should we use the Filter Cutoff LFO for this voice? |
144 |
bool bLFO3Enabled; ///< Should we use the Pitch LFO for this voice? |
bool bLFO3Enabled; ///< Should we use the Pitch LFO for this voice? |