protected override void GetData(out SevenBitNumber msb, out SevenBitNumber?lsb) { msb = BankNumber; lsb = null; }
internal override void Read(MidiReader reader, ReadingSettings settings, int size) { _lsb = ProcessValue(reader.ReadByte(), "LSB", settings.InvalidSystemCommonEventParameterValuePolicy); _msb = ProcessValue(reader.ReadByte(), "MSB", settings.InvalidSystemCommonEventParameterValuePolicy); }
public override void Merge(SevenBitNumber velocity) { _velocity = (SevenBitNumber)Math.Min(_velocity, velocity); }
/// <summary> /// Initializes a new instance of the <see cref="Note"/> with the specified note number. /// </summary> /// <param name="noteNumber">Number of the note (60 is middle C).</param> public Note(SevenBitNumber noteNumber) : this(noteNumber, 0) { }
public static bool TryParseNoteNumber(string input, NoteNumberFormat noteNumberFormat, out SevenBitNumber result) { result = default(SevenBitNumber); switch (noteNumberFormat) { case NoteNumberFormat.NoteNumber: return(SevenBitNumber.TryParse(input, out result)); case NoteNumberFormat.Letter: { MusicTheory.Note note; if (!MusicTheory.Note.TryParse(input, out note)) { return(false); } result = note.NoteNumber; return(true); } } return(false); }
/// <summary> /// Retrieves an instance of the <see cref="Playback"/> for playing musical objects using /// the specified 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="programNumber">Program that should be used to play <paramref name="objects"/>.</param> /// <returns>An instance of the <see cref="Playback"/> for playing <paramref name="objects"/>.</returns> /// <exception cref="ArgumentNullException"><paramref name="objects"/> is null. -or- /// <paramref name="tempoMap"/> is null. -or- <paramref name="outputDevice"/> is null.</exception> public static Playback GetPlayback <TObject>(this IEnumerable <TObject> objects, TempoMap tempoMap, OutputDevice outputDevice, SevenBitNumber programNumber) where TObject : IMusicalObject, ITimedObject { ThrowIfArgument.IsNull(nameof(objects), objects); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); return(GetMusicalObjectsPlayback(objects, tempoMap, outputDevice, channel => new[] { new ProgramChangeEvent(programNumber) { Channel = channel } })); }
internal static void PostRelease(SevenBitNumber noteNumber) { Keys keycode = (Keys)Config.config.KeyMap[noteNumber]; PostMessage(gameWindowHandle, WM_KEYUP, (int)keycode, 0x001F0001); }
protected override void GetData(out SevenBitNumber msb, out SevenBitNumber?lsb) { msb = HalfSteps; lsb = (SevenBitNumber)MathUtilities.EnsureInBounds((int)Math.Round(Cents * CentResolution), SevenBitNumber.MinValue, SevenBitNumber.MaxValue); }
public void Parse_InvalidFormat() { Assert.Throws <FormatException>(() => SevenBitNumber.Parse("sdsd")); }
public NoteInfo(SevenBitNumber noteNumber, ITimeSpan time, ITimeSpan length, SevenBitNumber velocity) { NoteNumber = noteNumber; Time = time; Length = length; Velocity = velocity; }
public ModulationDepthRangeParameter(SevenBitNumber halfSteps, float cents) : this(halfSteps, cents, ParameterValueType.Exact) { }
/// <summary> /// /// </summary> /// <param name="parentModule"></param> /// <param name="noteOnEvent"></param> /// <param name="programNumber"></param> /// <param name="slot"></param> public MT32Sound(MT32 parentModule, MT32SoundManager manager, TimbreBase timbre, int tindex, TaggedNoteOnEvent noteOnEvent, int slot) : base(parentModule, manager, timbre, tindex, noteOnEvent, slot) { this.parentModule = parentModule; this.programNumber = (SevenBitNumber)parentModule.ProgramNumbers[noteOnEvent.Channel]; this.timbre = (MT32Timbre)timbre; }
/// <summary> /// Initializes a new instance of the <see cref="ProgramChangeEvent"/> with the specified /// program number. /// </summary> /// <param name="programNumber">Program number.</param> public ProgramChangeEvent(SevenBitNumber programNumber) : this() { ProgramNumber = programNumber; }
/// <summary> /// Initializes a new instance of the <see cref="NoteOnEvent"/> with the specified /// note number and velocity. /// </summary> /// <param name="noteNumber">Note number.</param> /// <param name="velocity">Velocity.</param> public NoteOnEvent(SevenBitNumber noteNumber, SevenBitNumber velocity) : base(MidiEventType.NoteOn, noteNumber, velocity) { }
/// <summary> /// Initializes a new instance of the <see cref="NoteAftertouchEvent"/> with the specified /// note number and aftertouch (pressure) value. /// </summary> /// <param name="noteNumber">Note number.</param> /// <param name="aftertouchValue">Aftertouch (pressure) value.</param> public NoteAftertouchEvent(SevenBitNumber noteNumber, SevenBitNumber aftertouchValue) : this() { NoteNumber = noteNumber; AftertouchValue = aftertouchValue; }
public void Parse_OutOfRange() { Assert.Throws <FormatException>(() => SevenBitNumber.Parse("200")); Assert.Throws <FormatException>(() => SevenBitNumber.Parse("128")); }
/// <summary> /// Gets an instance of the <see cref="NoteOffEvent"/> corresponding to the specified /// General MIDI Level 1 percussion. /// </summary> /// <param name="percussion"><see cref="GeneralMidiPercussion"/> to get an event for.</param> /// <param name="velocity">Velocity of the <see cref="NoteOffEvent"/>.</param> /// <returns>An instance of the <see cref="NoteOffEvent"/> corresponding to the specified /// <paramref name="percussion"/>.</returns> /// <exception cref="InvalidEnumArgumentException"><paramref name="percussion"/> specified an invalid value.</exception> public static NoteOffEvent GetNoteOffEvent(this GeneralMidiPercussion percussion, SevenBitNumber velocity) { ThrowIfArgument.IsInvalidEnumValue(nameof(percussion), percussion); return(new NoteOffEvent(percussion.AsSevenBitNumber(), velocity)); }
public void Parse() { Assert.AreEqual((SevenBitNumber)12, SevenBitNumber.Parse("12")); Assert.AreEqual((SevenBitNumber)0, SevenBitNumber.Parse("0")); Assert.AreEqual((SevenBitNumber)127, SevenBitNumber.Parse("127")); }
/// <summary> /// Plays musical objects using the specified 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="programNumber">Program that should be used to play <paramref name="objects"/>.</param> /// <exception cref="ArgumentNullException"><paramref name="objects"/> is null. -or- /// <paramref name="tempoMap"/> is null. -or- <paramref name="outputDevice"/> is null.</exception> public static void Play <TObject>(this IEnumerable <TObject> objects, TempoMap tempoMap, OutputDevice outputDevice, SevenBitNumber programNumber) where TObject : IMusicalObject, ITimedObject { ThrowIfArgument.IsNull(nameof(objects), objects); ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); ThrowIfArgument.IsNull(nameof(outputDevice), outputDevice); using (var playback = objects.GetPlayback(tempoMap, outputDevice, programNumber)) { playback.Play(); } }
public void TryParse_InvalidFormat() { SevenBitNumber result; Assert.AreEqual(false, SevenBitNumber.TryParse("sdsd", out result)); }
/// <summary> /// Initializes a new instance of the <see cref="Note"/> with the specified /// note number and length. /// </summary> /// <param name="noteNumber">Number of the note (60 is middle C).</param> /// <param name="length">Length of the note in units defined by time division of a MIDI file.</param> public Note(SevenBitNumber noteNumber, long length) : this(noteNumber, length, 0) { }
/// <summary> /// Initializes a new instance of the <see cref="ControlChangeEvent"/> with the specified /// controller number and controller value. /// </summary> /// <param name="controlNumber">Controller number.</param> /// <param name="controlValue">Controller value.</param> public ControlChangeEvent(SevenBitNumber controlNumber, SevenBitNumber controlValue) : this() { ControlNumber = controlNumber; ControlValue = controlValue; }
public static IEnumerable <Note> ConvertToNotes(Stream stream, TempoMap tempoMap, NoteCsvConversionSettings settings) { using (var csvReader = new CsvReader(stream, settings.CsvDelimiter)) { CsvRecord record = null; while ((record = csvReader.ReadRecord()) != null) { var values = record.Values; if (values.Length < 6) { CsvError.ThrowBadFormat(record.LineNumber, "Missing required parameters."); } ITimeSpan time; if (!TimeSpanUtilities.TryParse(values[0], settings.TimeType, out time)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid time."); } FourBitNumber channel; if (!FourBitNumber.TryParse(values[1], out channel)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid channel."); } SevenBitNumber noteNumber; if (!TryParseNoteNumber(values[2], settings.NoteNumberFormat, out noteNumber)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid note number or letter."); } ITimeSpan length; if (!TimeSpanUtilities.TryParse(values[3], settings.NoteLengthType, out length)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid length."); } SevenBitNumber velocity; if (!SevenBitNumber.TryParse(values[4], out velocity)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid velocity."); } SevenBitNumber offVelocity; if (!SevenBitNumber.TryParse(values[5], out offVelocity)) { CsvError.ThrowBadFormat(record.LineNumber, "Invalid off velocity."); } var convertedTime = TimeConverter.ConvertFrom(time, tempoMap); var convertedLength = LengthConverter.ConvertFrom(length, convertedTime, tempoMap); yield return(new Note(noteNumber, convertedLength, convertedTime) { Channel = channel, Velocity = velocity, OffVelocity = offVelocity }); } } }
/// <summary> /// Returns an upward <see cref="Interval"/> by the specified half steps number. /// </summary> /// <param name="intervalSize">The size of an interval as a number of half steps away.</param> /// <returns>An upward <see cref="Interval"/> with the specified interval.</returns> public static Interval GetUp(SevenBitNumber intervalSize) { return(Get(intervalSize, IntervalDirection.Up)); }
/// <summary> /// Initializes a new instance of the <see cref="ChannelAftertouchEvent"/> with the specified /// aftertouch (pressure) value. /// </summary> /// <param name="aftertouchValue">Aftertouch (pressure) value.</param> public ChannelAftertouchEvent(SevenBitNumber aftertouchValue) : this() { AftertouchValue = aftertouchValue; }
/// <summary> /// Returns a downward <see cref="Interval"/> by the specified half steps number. /// </summary> /// <param name="intervalSize">The size of an interval as a number of half steps away.</param> /// <returns>A downward <see cref="Interval"/> with the specified interval.</returns> public static Interval GetDown(SevenBitNumber intervalSize) { return(Get(intervalSize, IntervalDirection.Down)); }
public SetProgramNumberAction(SevenBitNumber programNumber) { ProgramNumber = programNumber; }
/// <summary> /// Initializes a new instance of the <see cref="Interval"/> with the /// specified interval and its direction. /// </summary> /// <param name="size">The size of interval as a number of half steps away.</param> /// <param name="direction">The direction of an interval (up or down).</param> private Interval(SevenBitNumber size, IntervalDirection direction) { Size = size; Direction = direction; }
public NoteInfo(NoteName noteName, int octave, ITimeSpan time, ITimeSpan length, SevenBitNumber velocity) : this(NoteUtilities.GetNoteNumber(noteName, octave), time, length, velocity) { }
public TuningBankSelectParameter(SevenBitNumber bankNumber, ParameterValueType valueType) : this() { BankNumber = bankNumber; ValueType = valueType; }