public GeneralMidi2ProgramData(GeneralMidi2Program generalMidi2Program, GeneralMidiProgram generalMidiProgram, SevenBitNumber bankMsb, SevenBitNumber bankLsb) { GeneralMidi2Program = generalMidi2Program; GeneralMidiProgram = generalMidiProgram; BankMsb = bankMsb; BankLsb = bankLsb; }
private static GeneralMidi2ProgramData GetProgramData(GeneralMidi2Program generalMidi2Program, GeneralMidiProgram generalMidiProgram, byte bankMsb, byte bankLsb) { return(new GeneralMidi2ProgramData(generalMidi2Program, generalMidiProgram, (SevenBitNumber)bankMsb, (SevenBitNumber)bankLsb)); }
/// <summary> /// Gets an instance of the <see cref="ProgramChangeEvent"/> corresponding to the specified /// General MIDI Level 1 program. /// </summary> /// <param name="program"><see cref="GeneralMidiProgram"/> to get an event for.</param> /// <param name="channel">Channel an event should be created for.</param> /// <returns>An instance of the <see cref="ProgramChangeEvent"/> corresponding to the <paramref name="program"/>.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="program"/> specified an invalid value.</exception> public static MidiEvent GetProgramEvent(this GeneralMidiProgram program, FourBitNumber channel) { ThrowIfArgument.IsInvalidEnumValue(nameof(program), program); return(new ProgramChangeEvent(program.AsSevenBitNumber()) { Channel = channel }); }
private static IEnumerable <GeneralMidi2ProgramData> GetProgramsData(GeneralMidiProgram generalMidiProgram, params GeneralMidi2Program[] programs) { return(programs.Select((p, i) => GetProgramData(p, generalMidiProgram, MelodyChannelBankMsb, (byte)i))); }
/// <summary> /// Plays musical objects using the specified General MIDI 1 program. /// </summary> /// <typeparam name="TObject">The type of objects to play.</typeparam> /// <param name="objects">Objects to play.</param> /// <param name="tempoMap">Tempo map used to calculate events times.</param> /// <param name="outputDevice">Output MIDI device to play <paramref name="objects"/> through.</param> /// <param name="generalMidiProgram">Program that should be used to play <paramref name="objects"/>.</param> /// <param name="clockSettings">Settings of the internal playback's clock.</param> /// <exception cref="ArgumentNullException"> /// <para>One of the following errors occured:</para> /// <list type="bullet"> /// <item> /// <description><paramref name="objects"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="tempoMap"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="outputDevice"/> is <c>null</c>.</description> /// </item> /// </list> /// </exception> /// <exception cref="InvalidEnumArgumentException"><paramref name="generalMidiProgram"/> specified an invalid value.</exception> public static void Play <TObject>(this IEnumerable <TObject> objects, TempoMap tempoMap, IOutputDevice outputDevice, GeneralMidiProgram generalMidiProgram, MidiClockSettings clockSettings = null) where TObject : IMusicalObject, ITimedObject { ThrowIfArgument.IsNull(nameof(objects), objects); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); ThrowIfArgument.IsInvalidEnumValue(nameof(generalMidiProgram), generalMidiProgram); using (var playback = objects.GetPlayback(tempoMap, outputDevice, generalMidiProgram, clockSettings)) { playback.Play(); } }
/// <summary> /// Retrieves an instance of the <see cref="Playback"/> for playing musical objects using /// the specified General MIDI 1 program. /// </summary> /// <typeparam name="TObject">The type of objects to play.</typeparam> /// <param name="objects">Objects to play.</param> /// <param name="tempoMap">Tempo map used to calculate events times.</param> /// <param name="outputDevice">Output MIDI device to play <paramref name="objects"/> through.</param> /// <param name="generalMidiProgram">Program that should be used to play <paramref name="objects"/>.</param> /// <param name="clockSettings">Settings of the internal playback's clock.</param> /// <returns>An instance of the <see cref="Playback"/> for playing <paramref name="objects"/>.</returns> /// <exception cref="ArgumentNullException"> /// <para>One of the following errors occured:</para> /// <list type="bullet"> /// <item> /// <description><paramref name="objects"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="tempoMap"/> is <c>null</c>.</description> /// </item> /// <item> /// <description><paramref name="outputDevice"/> is <c>null</c>.</description> /// </item> /// </list> /// </exception> /// <exception cref="InvalidEnumArgumentException"><paramref name="generalMidiProgram"/> specified an invalid value.</exception> public static Playback GetPlayback <TObject>(this IEnumerable <TObject> objects, TempoMap tempoMap, IOutputDevice outputDevice, GeneralMidiProgram generalMidiProgram, MidiClockSettings clockSettings = null) where TObject : IMusicalObject, ITimedObject { ThrowIfArgument.IsNull(nameof(objects), objects); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); ThrowIfArgument.IsInvalidEnumValue(nameof(generalMidiProgram), generalMidiProgram); return(GetMusicalObjectsPlayback(objects, tempoMap, outputDevice, channel => new[] { generalMidiProgram.GetProgramEvent(channel) }, clockSettings)); }
public SetGeneralMidiProgramAction(GeneralMidiProgram program) { Program = program; }
/// <summary> /// Converts <see cref="GeneralMidiProgram" /> to the corresponding value of the /// <see cref="SevenBitNumber" /> type. /// </summary> /// <param name="program"><see cref="GeneralMidiProgram" /> to convert to <see cref="SevenBitNumber" />.</param> /// <returns><see cref="SevenBitNumber" /> representing the <paramref name="program" />.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="program" /> specified an invalid value.</exception> public static SevenBitNumber AsSevenBitNumber(this GeneralMidiProgram program) { ThrowIfArgument.IsInvalidEnumValue(nameof(program), program); return((SevenBitNumber)(byte)program); }