Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Status:     // Voice Reserve Total, 0 = OFF, 1~18 = reserve voice value (5 bytes), treat all as Int
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 1, 4, 0, new List <string>
                {
                    "Off", "Int", "Int", "Int", "Int", "Int", "Int", "Int", "Int",       // 1~8
                    "Int", "Int", "Int", "Int", "Int", "Int", "Int", "Int", "Int", "Int" // 9~1~2
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 8, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 9, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 10, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 11, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Volume:     // Output level
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 5, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.MidiChannel:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 12, 4, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Transpose:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 2, 7, 0, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BendRange:     // Detune
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 3, 7, 0, true, Parent as IPatch);
                break;

            default:
                return(base.GetParam(name));
            }
            return(parameter);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            default:
                parameter = base.GetParam(name);
                break;
            }
            return(parameter);
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Detune:
                parameter = IntParameter.Instance.SetMultiBytes(
                    Root, Root.Content, TimbresOffset + 8, 2, false, true, Parent as IPatch);
                break;

            default:
                parameter = base.GetParam(name);
                break;
            }
            return(parameter);
        }
Esempio n. 4
0
        /// <summary>
        /// Initialize as MIDI MPE:
        /// MIDI Channel equal to timbre nummer.
        /// Copy all parameters including used program from Timbre 0.
        /// </summary>
        public void InitAsMpe()
        {
            ITimbre timbre0     = Timbres.TimbresCollection[0];
            int     midiChannel = 0;

            timbre0.GetParam(ParameterNames.TimbreParameterName.MidiChannel).Value = midiChannel++; // MIDI channel 1 (value 0)

            foreach (ITimbre timbre in Timbres.TimbresCollection.Where(timbre => timbre != timbre0))
            {
                timbre.GetParam(ParameterNames.TimbreParameterName.MidiChannel).Value = midiChannel++; // MIDI channel same as timbre number

                timbre.UsedProgram = timbre0.UsedProgram;


                ParameterNames.TimbreParameterName[] parameterNames = new ParameterNames.TimbreParameterName[]
                {
                    ParameterNames.TimbreParameterName.Status,
                    ParameterNames.TimbreParameterName.Mute,
                    ParameterNames.TimbreParameterName.Volume,
                    ParameterNames.TimbreParameterName.BottomKey,
                    ParameterNames.TimbreParameterName.TopKey,
                    ParameterNames.TimbreParameterName.BottomVelocity,
                    ParameterNames.TimbreParameterName.TopVelocity,
                    ParameterNames.TimbreParameterName.OscMode,
                    ParameterNames.TimbreParameterName.OscSelect
                    // "Transpose", "Detune", "Portamento", "Bend Range" are not set since parameters with negative values cannot be set.
                };

                ITimbre timbreToChange = timbre;
                foreach (
                    ParameterNames.TimbreParameterName parameterName in
                    parameterNames.Where(parameterName => timbreToChange.GetParam(parameterName) != null))
                {
                    try
                    {
                        dynamic parameterValue = timbre0.GetParam(parameterName).Value;
                        timbre.GetParam(parameterName).Value = parameterValue;
                    }
                    catch (Exception)
                    {
                        Console.WriteLine();
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public virtual IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Volume:
                parameter = IntParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 5, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.MidiChannel:
                parameter = IntParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 2, 4, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Transpose:
                parameter = IntParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 7, 7, 0, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Detune:
                parameter = IntParameter.Instance.SetMultiBytes(
                    Root, Root.Content, TimbresOffset + 8, 2, true, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BendRange:
                parameter = IntParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 6, 7, 0, true, Parent as IPatch);
                break;

            default:
                parameter = null;
                break;
            }

            return(parameter);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="parameterName"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string GetStringValue(ParameterNames.TimbreParameterName parameterName, int value)
        {
            string str;

            switch (parameterName)
            {
            case ParameterNames.TimbreParameterName.MidiChannel:
                str = GetMidiChannelString(value);
                break;

            case ParameterNames.TimbreParameterName.TopKey:     // Fall through
            case ParameterNames.TimbreParameterName.BottomKey:
                str = GetKeyString(value);
                break;

            case ParameterNames.TimbreParameterName.Transpose:
                str = GetTransposeString(value);
                break;

            case ParameterNames.TimbreParameterName.Detune:
                str = GetDetuneString(value);
                break;

            case ParameterNames.TimbreParameterName.BendRange:
                str = GetBendRangeString(value);
                break;

            case ParameterNames.TimbreParameterName.Portamento:
                str = GetPortamentoString(value);
                break;

            default:
                throw new ApplicationException("No value available for parameter.");
            }
            return(str);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Status:
                parameter = EnumParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 2, 7, 5,
                    new List <string> {
                    "Off", "Int", "Both", "Ext", "Ex2"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Mute:
                parameter = BoolParameter.Instance.Set(Root, Root.Content, TimbresOffset + 34, 7,
                                                       Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Priority:
                parameter = BoolParameter.Instance.Set(Root, Root.Content, TimbresOffset + 35, 4,
                                                       Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopKey:
                parameter = IntParameter.Instance.Set(Root, Root.Content, TimbresOffset + 37, 7, 0,
                                                      false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomKey:
                parameter = IntParameter.Instance.Set(Root, Root.Content, TimbresOffset + 38, 7, 0,
                                                      false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopVelocity:
                parameter = IntParameter.Instance.Set(Root, Root.Content, TimbresOffset + 40, 7, 0,
                                                      false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomVelocity:
                parameter = IntParameter.Instance.Set(Root, Root.Content, TimbresOffset + 41, 7, 0,
                                                      false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscMode:
                parameter = EnumParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 35, 1, 0,
                    new List <string> {
                    "Prg", "Poly", "Mono", "Legato"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscSelect:
                parameter = EnumParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 35, 3, 2,
                    new List <string> {
                    "Both", "Osc1", "Osc2"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Portamento:
                parameter = IntParameter.Instance.Set(
                    Root, Root.Content, TimbresOffset + 36, 7, 0, true, Parent as IPatch);
                break;

            default:
                return(base.GetParam(name));
            }
            return(parameter);
        }
Esempio n. 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Status:     // Called Timbre Mode
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 2, 6, 5,
                    new List <string> {
                    "Int", "Off", "Both", "Ext"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 12, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 13, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 15, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 16, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscMode:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 11, 6, 6, new List <string> {
                    "Prg", "Force Poly"
                },
                    Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscSelect:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 11, 5, 5, new List <string> {
                    "Both", "Hide OSC2"
                },
                    Parent as IPatch);
                break;

            // No portamento.

            case ParameterNames.TimbreParameterName.Volume:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 3, 7, 0, false,
                    Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.MidiChannel:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 2, 4, 0, false,
                    Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Transpose:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 5, 7, 0, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BendRange:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 4, 7, 0, true, Parent as IPatch);
                break;

            default:
                parameter = base.GetParam(name);
                break;
            }
            return(parameter);
        }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Status:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 2, 7, 5,
                    new List <string> {
                    "Int", "Off", "Both", "Ext", "Ex2"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 21, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 22, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 24, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 25, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscMode:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 19, 1, 0,
                    new List <string> {
                    "Prg", "Poly", "Mono", "Legato"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.OscSelect:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 19, 3, 2,
                    new List <string> {
                    "Both", "Osc1", "Osc2"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Portamento:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 20, 7, 0, true, Parent as IPatch);
                break;

            default:
                parameter = base.GetParam(name);
                break;
            }
            return(parameter);
        }
Esempio n. 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override IParameter GetParam(ParameterNames.TimbreParameterName name)
        {
            IParameter parameter;

            switch (name)
            {
            case ParameterNames.TimbreParameterName.Status:
                parameter = EnumParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 10, 4, 4, new List <string> {
                    "On", "Off"
                }, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 5, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomKey:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 6, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.TopVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 7, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BottomVelocity:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 8, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Volume:     // But called Output Level
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 1, 7, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.MidiChannel:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 10, 3, 0, false, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Transpose:     // Called Key Transpose
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 2, 7, 0, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.Detune:
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 3, 7, 0, true, Parent as IPatch);
                break;

            case ParameterNames.TimbreParameterName.BendRange:     // Called Detune
                parameter = IntParameter.Instance.Set(
                    PcgRoot, Combi.PcgRoot.Content, TimbresOffset + 3, 7, 0, true, Parent as IPatch);
                break;

            // No OSC Mode
            // No OSC Select
            // No portamento

            default:
                parameter = base.GetParam(name);
                break;
            }
            return(parameter);
        }