/// <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); }
/// <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); }
/// <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); }
/// <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(); } } } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }