--- linuxsampler/trunk/src/engines/common/Note.h 2017/05/20 12:28:57 3193 +++ linuxsampler/trunk/src/engines/common/Note.h 2017/10/27 21:19:18 3360 @@ -12,9 +12,11 @@ #include "../../common/Pool.h" #include "Event.h" +#include "Fade.h" -#define DEFAULT_NOTE_VOLUME_TIME_S 0.013 /* 13ms */ -#define DEFAULT_NOTE_PITCH_TIME_S 0.013 /* 13ms */ +#define DEFAULT_NOTE_VOLUME_TIME_S 0.013f /* 13ms */ +#define DEFAULT_NOTE_PITCH_TIME_S 0.013f /* 13ms */ +#define DEFAULT_NOTE_PAN_TIME_S 0.013f /* 13ms */ namespace LinuxSampler { @@ -39,16 +41,28 @@ float Pitch; ///< as linear frequency ratio (1.0 being neutral) float PitchTime; ///< Transition duration (in seconds) for changes to @c Pitch. float Pan; ///< between -1.0 (most left) and +1.0 (most right) and 0.0 being neutral. + float PanTime; ///< Transition duration (in seconds) for changes to @c Pan. int64_t PanSources; ///< Might be used for calculating an average pan value in differential way: amount of times the Pan value had been changed and shall be calculated relatively upon. float Cutoff; ///< between 0.0 and 1.0 float Resonance; ///< between 0.0 and 1.0 float Attack; ///< between 0.0 and 1.0 float Decay; ///< between 0.0 and 1.0 + float Sustain; ///< between 0.0 and 1.0 float Release; ///< between 0.0 and 1.0 + float CutoffAttack; ///< between 0.0 and 1.0 + float CutoffDecay; ///< between 0.0 and 1.0 + float CutoffSustain;///< between 0.0 and 1.0 + float CutoffRelease;///< between 0.0 and 1.0 float AmpLFODepth; ///< between 0.0 and 1.0 float AmpLFOFreq; ///< between 0.0 and 1.0 + float CutoffLFODepth;///< between 0.0 and 1.0 + float CutoffLFOFreq; ///< between 0.0 and 1.0 float PitchLFODepth; ///< between 0.0 and 1.0 float PitchLFOFreq; ///< between 0.0 and 1.0 + fade_curve_t VolumeCurve; + fade_curve_t PitchCurve; + fade_curve_t PanCurve; + int SampleOffset; ///< Where the sample shall start playback in microseconds (otherwise this is -1 for being ignored). } Override; /// Sampler format specific informations and variables. union _Format { @@ -66,16 +80,28 @@ Override.Pitch = 1.f; Override.PitchTime = DEFAULT_NOTE_PITCH_TIME_S; Override.Pan = 0.f; + Override.PanTime = DEFAULT_NOTE_PAN_TIME_S; Override.PanSources = 0; Override.Cutoff = 1.f; Override.Resonance = 1.f; Override.Attack = 1.f; Override.Decay = 1.f; + Override.Sustain = 1.f; Override.Release = 1.f; + Override.CutoffAttack = 1.f; + Override.CutoffDecay = 1.f; + Override.CutoffSustain = 1.f; + Override.CutoffRelease = 1.f; Override.AmpLFODepth = 1.f; Override.AmpLFOFreq = 1.f; + Override.CutoffLFODepth = 1.f; + Override.CutoffLFOFreq = 1.f; Override.PitchLFODepth = 1.f; Override.PitchLFOFreq = 1.f; + Override.VolumeCurve = DEFAULT_FADE_CURVE; + Override.PitchCurve = DEFAULT_FADE_CURVE; + Override.PanCurve = DEFAULT_FADE_CURVE; + Override.SampleOffset = -1; Format = _Format(); @@ -141,16 +167,28 @@ Override.Pitch = 1.f; Override.PitchTime = DEFAULT_NOTE_PITCH_TIME_S; Override.Pan = 0.f; + Override.PanTime = DEFAULT_NOTE_PAN_TIME_S; Override.PanSources = 0; Override.Cutoff = 1.f; Override.Resonance = 1.f; Override.Attack = 1.f; Override.Decay = 1.f; + Override.Sustain = 1.f; Override.Release = 1.f; + Override.CutoffAttack = 1.f; + Override.CutoffDecay = 1.f; + Override.CutoffSustain = 1.f; + Override.CutoffRelease = 1.f; Override.AmpLFODepth = 1.f; Override.AmpLFOFreq = 1.f; + Override.CutoffLFODepth = 1.f; + Override.CutoffLFOFreq = 1.f; Override.PitchLFODepth = 1.f; Override.PitchLFOFreq = 1.f; + Override.VolumeCurve = DEFAULT_FADE_CURVE; + Override.PitchCurve = DEFAULT_FADE_CURVE; + Override.PanCurve = DEFAULT_FADE_CURVE; + Override.SampleOffset = -1; Format = _Format(); userPar[0] = 0; userPar[1] = 0;