Ejemplo n.º 1
0
            public PluggableOscSpec(IPluggableProcessorTemplate pluggableTemplate)
                : base(pluggableTemplate)
            {
                dynamicParams = new PluggableEvaluableOscParam[dynamicDoubleParamCount];

                PluggableParameter[] parameters = pluggableTemplate.ParametersDefinition;
                for (int i = 0; i < parameters.Length; i++)
                {
                    if ((parameters[i].Type & PluggableParameterType.Pitch) != 0)
                    {
                        if (pitchParamOffset >= 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        pitchParamOffset = i;
                    }
                    if ((parameters[i].Type & PluggableParameterType.Loudness) != 0)
                    {
                        if (loudnessParamOffset >= 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        loudnessParamOffset = i;
                    }
                }
            }
Ejemplo n.º 2
0
            public BuildInstrErrors Create(
                KeyValuePair <string, string[]>[] configsTokens,
                PluggableRole role,
                out IPluggableProcessorTemplate template,
                out string errorMessage)
            {
                if (configsTokens.Length != 0) // parser guarrantees to meet requirements specified by Configs property
                {
                    Debug.Assert(false);
                    throw new ArgumentException();
                }
                if (role != PluggableRole.Oscillator) // parser gaurrantees to respect constraint of Roles property
                {
                    Debug.Assert(false);
                    throw new ArgumentException();
                }

                errorMessage = null;
                template     = new PluggableOscSineTemplate(this);
                return(BuildInstrErrors.eBuildInstrNoError);
            }
Ejemplo n.º 3
0
            protected PluggableSpec(IPluggableProcessorTemplate pluggableTemplate)
            {
                this.pluggableTemplate = pluggableTemplate;
                this.parameters        = pluggableTemplate.ParametersDefinition;

                this.parameterSpecified = new bool[this.parameters.Length];

                int staticIntegerParamCount = 0;
                int staticStringParamCount  = 0;
                int staticDoubleParamCount  = 0;

                dynamicDoubleParamCount = 0;
                for (int i = 0; i < this.parameters.Length; i++)
                {
                    // while counting, also debug-validate the modifier flags on the parameter type
                    switch (this.parameters[i].Type & PluggableParameterType.TypeMask)
                    {
                    default:
                        Debug.Assert(false);
                        throw new ArgumentException();

                    case PluggableParameterType.StaticInteger:
                        if ((this.parameters[i].Type & (PluggableParameterType.Smoothed | PluggableParameterType.SmoothedOptional)) != 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        staticIntegerParamCount++;
                        break;

                    case PluggableParameterType.StaticString:
                        if ((this.parameters[i].Type & (PluggableParameterType.Smoothed | PluggableParameterType.SmoothedOptional
                                                        | PluggableParameterType.Enumerated)) != 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        staticStringParamCount++;
                        break;

                    case PluggableParameterType.StaticDouble:
                        if ((this.parameters[i].Type & (PluggableParameterType.Smoothed | PluggableParameterType.SmoothedOptional
                                                        | PluggableParameterType.Enumerated)) != 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        staticDoubleParamCount++;
                        break;

                    case PluggableParameterType.DynamicDouble:
                        if ((this.parameters[i].Type & (PluggableParameterType.Enumerated)) != 0)
                        {
                            Debug.Assert(false);
                            throw new ArgumentException();
                        }
                        dynamicDoubleParamCount++;
                        break;
                    }
                }

                this.staticIntegerParams = new int[staticIntegerParamCount];
                this.staticStringParams  = new string[staticStringParamCount];
                this.staticDoubleParams  = new PluggableEvaluableParam[staticDoubleParamCount];

                this.staticIntegerIndices = new int[staticIntegerParamCount];
                this.staticStringIndices  = new int[staticStringParamCount];
                this.staticDoubleIndices  = new int[staticDoubleParamCount];
                this.dynamicDoubleIndices = new int[dynamicDoubleParamCount];
                int staticIntegerOffset = 0, staticStringOffset = 0, staticDoubleOffset = 0, dynamicDoubleOffset = 0;

                for (int i = 0; i < this.parameters.Length; i++)
                {
                    switch (this.parameters[i].Type & PluggableParameterType.TypeMask)
                    {
                    default:
                        Debug.Assert(false);
                        throw new ArgumentException();

                    case PluggableParameterType.StaticInteger:
                        this.staticIntegerIndices[staticIntegerOffset++] = i;
                        break;

                    case PluggableParameterType.StaticString:
                        this.staticStringIndices[staticStringOffset++] = i;
                        break;

                    case PluggableParameterType.StaticDouble:
                        this.staticDoubleIndices[staticDoubleOffset++] = i;
                        break;

                    case PluggableParameterType.DynamicDouble:
                        this.dynamicDoubleIndices[dynamicDoubleOffset++] = i;
                        break;
                    }
                }
                Debug.Assert(staticIntegerParamCount == staticIntegerOffset);
                Debug.Assert(staticStringParamCount == staticStringOffset);
                Debug.Assert(staticDoubleParamCount == staticDoubleOffset);
                Debug.Assert(dynamicDoubleParamCount == dynamicDoubleOffset);
            }
Ejemplo n.º 4
0
 public PluggableTrackSpec(IPluggableProcessorTemplate pluggableTemplate)
     : base(pluggableTemplate)
 {
     dynamicParams = new PluggableEvaluableParam[dynamicDoubleParamCount];
 }
        /* check oscillator */
        public static SynthErrorCodes CheckOscillatorForUnreferencedSamples(
            OscillatorRec Oscillator,
            CheckUnrefParamRec Param)
        {
            SynthErrorCodes Error = SynthErrorCodes.eSynthDone;

            switch (OscillatorGetWhatKindItIs(Oscillator))
            {
            default:
                Debug.Assert(false);
                throw new ArgumentException();

            case OscillatorTypes.eOscillatorSampled:
                Error = CheckSampleSelectorForUnreferencedSamples(
                    OscillatorGetSampleIntervalList(Oscillator),
                    Param);
                break;

            case OscillatorTypes.eOscillatorWaveTable:
            case OscillatorTypes.eOscillatorFOF:
                Error = CheckWaveTableSelectorForUnreferencedSamples(
                    OscillatorGetSampleIntervalList(Oscillator),
                    Param);
                break;

            case OscillatorTypes.eOscillatorAlgorithm:
                break;

            case OscillatorTypes.eOscillatorFMSynth:
                Error = CheckFMNetworkForUnreferencedSamples(
                    OscillatorGetFMSynthSpec(Oscillator),
                    Param);
                break;

            case OscillatorTypes.eOscillatorPluggable:
                IPluggableProcessorTemplate pluggable = GetOscillatorPluggableSpec(Oscillator).PluggableTemplate;
                Error = pluggable.CheckUnreferencedObjects(
                    GetOscillatorPluggableSpec(Oscillator).GetStaticStrings(),
                    Param);
                break;
            }
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckEnvelopeForUnreferencedSamples(
                OscillatorGetLoudnessEnvelope(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckLFOListForUnreferencedSamples(
                OscillatorGetLoudnessLFOList(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckEnvelopeForUnreferencedSamples(
                OscillatorGetExcitationEnvelope(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckLFOListForUnreferencedSamples(
                OscillatorGetExcitationLFOList(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckLFOListForUnreferencedSamples(
                GetOscillatorFrequencyLFOList(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckEffectListForUnreferencedSamples(
                GetOscillatorEffectList(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckEnvelopeForUnreferencedSamples(
                OscillatorGetFOFRateEnvelope(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            Error = CheckLFOListForUnreferencedSamples(
                OscillatorGetFOFRateLFOList(Oscillator),
                Param);
            if (Error != SynthErrorCodes.eSynthDone)
            {
                return(Error);
            }

            return(SynthErrorCodes.eSynthDone);
        }