public static void PutNLProcIndexAccent( NonlinProcSpecRec NLProc, double Value, int AccentNum) { SetAccentMemberValue(ref NLProc.WaveTableIndexAccent, AccentNum, Value); }
/* add a nonlinear processor to the spec list */ public static void AddNLProcToEffectSpecList( EffectSpecListRec EffectSpecList, NonlinProcSpecRec NLProcSpec, bool EnabledFlag) { AddGenericToEffectSpecList(EffectSpecList, EffectTypes.eNLProcEffect, NLProcSpec, EnabledFlag); }
public static void PutNLProcOutputAccent( NonlinProcSpecRec NLProc, double Value, int AccentNum) { SetAccentMemberValue(ref NLProc.OutputScalingAccent, AccentNum, Value); }
/* initialize common parts of nlproc structure */ private static NLProcUnifiedRec CommonNLStructAlloc( NonlinProcSpecRec Template, SynthParamRec SynthParams) { NLProcUnifiedRec NLProc = new NLProcUnifiedRec(); /* get the wave table to use for this instance */ string Name = GetNLProcSpecWaveTableName(Template); if (!WaveSampDictGetWaveTableInfo( SynthParams.Dictionary, Name, out NLProc.WaveTableMatrix, out NLProc.FramesPerTable, out NLProc.NumberOfTables)) { Debug.Assert(false); throw new InvalidOperationException(); } NLProc.NumberOfTablesMinus1 = NLProc.NumberOfTables - 1; NLProc.clampOverflow = GetNLProcOverflowMode(Template) == NonlinProcOverflowMode.Clamp; return(NLProc); }
public static void GetNLProcWaveTableIndexAgg( NonlinProcSpecRec NLProc, out ScalarParamEvalRec ParamsOut) { InitScalarParamEval( NLProc.WaveTableIndex, ref NLProc.WaveTableIndexAccent, NLProc.WaveTableIndexFormula, out ParamsOut); }
public static void GetNLProcOutputScalingAgg( NonlinProcSpecRec NLProc, out ScalarParamEvalRec ParamsOut) { InitScalarParamEval( NLProc.OutputScaling, ref NLProc.OutputScalingAccent, NLProc.OutputScalingFormula, out ParamsOut); }
public static void PutNLProcInputScaling( NonlinProcSpecRec NLProc, double InputScaling, PcodeRec Formula) { #if DEBUG if (NLProc.InputScalingFormula != null) { Debug.Assert(false); throw new ArgumentException(); } #endif NLProc.InputScalingFormula = Formula; NLProc.InputScaling = InputScaling; }
public static void PutNLProcWaveTableIndex( NonlinProcSpecRec NLProc, double WaveTableIndex, PcodeRec Formula) { #if DEBUG if (NLProc.WaveTableIndexFormula != null) { Debug.Assert(false); throw new ArgumentException(); } #endif NLProc.WaveTableIndexFormula = Formula; NLProc.WaveTableIndex = WaveTableIndex; }
/* create a new track nonlinear processor */ public static NLProcUnifiedRec NewTrackNLProcProcessor( NonlinProcSpecRec Template, SynthParamRec SynthParams) { /* initialize common portion of structure */ NLProcUnifiedRec NLProc = CommonNLStructAlloc( Template, SynthParams); NLProc.Track = new NLTrackRec(); /* initialize variant portion */ GetNLProcInputScalingAgg( Template, out NLProc.Track.InputScaling); GetNLProcOutputScalingAgg( Template, out NLProc.Track.OutputScaling); GetNLProcWaveTableIndexAgg( Template, out NLProc.Track.WaveTableIndex); return(NLProc); }
/* create a new nonlinear processor specifier. name block is deleted */ public static NonlinProcSpecRec NewNonlinProcSpec(string WaveTableName) { NonlinProcSpecRec NLProc = new NonlinProcSpecRec(); NLProc.WaveTableName = WaveTableName; NLProc.InputEnvelope = NewEnvelope(); NLProc.OutputEvelope = NewEnvelope(); NLProc.IndexEnvelope = NewEnvelope(); NLProc.InputLFO = NewLFOListSpecifier(); NLProc.OutputLFO = NewLFOListSpecifier(); NLProc.IndexLFO = NewLFOListSpecifier(); //InitializeAccentZero(out NLProc.InputScalingAccent); //InitializeAccentZero(out NLProc.OutputScalingAccent); //InitializeAccentZero(out NLProc.WaveTableIndexAccent); NLProc.InputScaling = 1; NLProc.OutputScaling = 1; //NLProc.WaveTableIndex = 0; //NLProc.InputScalingFormula = null; //NLProc.OutputScalingFormula = null; //NLProc.WaveTableIndexFormula = null; return(NLProc); }
public static EnvelopeRec GetNLProcIndexEnvelope(NonlinProcSpecRec NLProc) { return(NLProc.IndexEnvelope); }
/* get the actual wave table name heap block */ public static string GetNLProcSpecWaveTableName(NonlinProcSpecRec NLProc) { return(NLProc.WaveTableName); }
public static EnvelopeRec GetNLProcOutputEnvelope(NonlinProcSpecRec NLProc) { return(NLProc.OutputEvelope); }
public static NonlinProcOverflowMode GetNLProcOverflowMode(NonlinProcSpecRec NLProc) { return(NLProc.OverflowMode); }
public static void SetNLProcOverflowMode(NonlinProcSpecRec NLProc, NonlinProcOverflowMode OverflowMode) { NLProc.OverflowMode = OverflowMode; }
public static LFOListSpecRec GetNLProcIndexLFO(NonlinProcSpecRec NLProc) { return(NLProc.IndexLFO); }
/* create a new oscillator nonlinear processor */ public static NLProcUnifiedRec NewOscNLProcProcessor( NonlinProcSpecRec Template, ref AccentRec Accents, double HurryUp, double InitialFrequency, double FreqForMultisampling, out int PreOriginTimeOut, PlayTrackInfoRec TrackInfo, SynthParamRec SynthParams) { int OnePreOrigin; /* initialize common portion of structure */ NLProcUnifiedRec NLProc = CommonNLStructAlloc( Template, SynthParams); NLProc.Oscillator = new NLOscRec(); int MaxPreOrigin = 0; NLProc.Oscillator.InputScalingEnvelope = NewEnvelopeStateRecord( GetNLProcInputEnvelope(Template), ref Accents, InitialFrequency, 1, HurryUp, out OnePreOrigin, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } NLProc.Oscillator.InputScalingLFO = NewLFOGenerator( GetNLProcInputLFO(Template), out OnePreOrigin, ref Accents, InitialFrequency, HurryUp, 1, 1, FreqForMultisampling, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } NLProc.Oscillator.OutputScalingEnvelope = NewEnvelopeStateRecord( GetNLProcOutputEnvelope(Template), ref Accents, InitialFrequency, 1, HurryUp, out OnePreOrigin, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } NLProc.Oscillator.OutputScalingLFO = NewLFOGenerator( GetNLProcOutputLFO(Template), out OnePreOrigin, ref Accents, InitialFrequency, HurryUp, 1, 1, FreqForMultisampling, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } NLProc.Oscillator.WaveTableIndexEnvelope = NewEnvelopeStateRecord( GetNLProcIndexEnvelope(Template), ref Accents, InitialFrequency, 1, HurryUp, out OnePreOrigin, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } NLProc.Oscillator.WaveTableIndexLFO = NewLFOGenerator( GetNLProcIndexLFO(Template), out OnePreOrigin, ref Accents, InitialFrequency, HurryUp, 1, 1, FreqForMultisampling, _PlayTrackParamGetter, TrackInfo, SynthParams); if (OnePreOrigin > MaxPreOrigin) { MaxPreOrigin = OnePreOrigin; } PreOriginTimeOut = MaxPreOrigin; return(NLProc); }
public static LFOListSpecRec GetNLProcOutputLFO(NonlinProcSpecRec NLProc) { return(NLProc.OutputLFO); }
/* check nonlinear processor effect */ public static SynthErrorCodes CheckNonlinearEffectForUnreferencedSamples( NonlinProcSpecRec NonlinearEffect, CheckUnrefParamRec Param) { SynthErrorCodes Error; string Name = GetNLProcSpecWaveTableName(NonlinearEffect); if (!WaveSampDictDoesWaveTableExist( Param.Dictionary, Name)) { Param.ErrorInfo.ErrorEx = SynthErrorSubCodes.eSynthErrorExUndefinedWaveTable; Param.ErrorInfo.WaveTableName = Name; return(SynthErrorCodes.eSynthErrorEx); } Error = CheckEnvelopeForUnreferencedSamples( GetNLProcInputEnvelope(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } Error = CheckEnvelopeForUnreferencedSamples( GetNLProcOutputEnvelope(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } Error = CheckEnvelopeForUnreferencedSamples( GetNLProcIndexEnvelope(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } Error = CheckLFOListForUnreferencedSamples( GetNLProcInputLFO(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } Error = CheckLFOListForUnreferencedSamples( GetNLProcOutputLFO(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } Error = CheckLFOListForUnreferencedSamples( GetNLProcIndexLFO(NonlinearEffect), Param); if (Error != SynthErrorCodes.eSynthDone) { return(Error); } return(SynthErrorCodes.eSynthDone); }