public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { writer.WriteByte(EventStatusBytes.Global.Meta); } // byte statusByte; var unknownMetaEvent = midiEvent as UnknownMetaEvent; if (unknownMetaEvent != null) { statusByte = unknownMetaEvent.StatusByte; } else { var eventType = midiEvent.GetType(); if (!StandardEventTypes.Meta.TryGetStatusByte(eventType, out statusByte) && settings.CustomMetaEventTypes?.TryGetStatusByte(eventType, out statusByte) != true) { Debug.Fail($"Unable to write the {eventType} event."); } } writer.WriteByte(statusByte); // var contentSize = midiEvent.GetSize(settings); writer.WriteVlqNumber(contentSize); midiEvent.Write(writer, settings); }
/// <summary> /// Writes content of a MIDI meta event. /// </summary> /// <param name="writer">Writer to write the content with.</param> /// <param name="settings">Settings according to which the event's content must be written.</param> protected override void WriteContent(MidiWriter writer, WritingSettings settings) { writer.WriteByte(Numerator); writer.WriteByte((byte)Math.Log(Denominator, 2)); writer.WriteByte(ClocksPerClick); writer.WriteByte(ThirtySecondNotesPerBeat); }
/// <summary> /// Writes content of a MIDI event. /// </summary> /// <param name="writer">Writer to write the content with.</param> /// <param name="settings">Settings according to which the event's content must be written.</param> internal sealed override void Write(MidiWriter writer, WritingSettings settings) { foreach (var parameter in _parameters) { writer.WriteByte(parameter); } }
internal override void Write(MidiWriter writer, WritingSettings settings) { var component = Component; var componentValueMask = ComponentValueMasks[component]; var componentValue = ComponentValue & componentValueMask; var data = DataTypesUtilities.CombineAsFourBitNumbers((byte)component, (byte)componentValue); writer.WriteByte(data); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { var statusByte = GetStatusByte(midiEvent); writer.WriteByte(statusByte); } // midiEvent.Write(writer, settings); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { var statusByte = GetStatusByte(midiEvent); writer.WriteByte(statusByte); } // var contentSize = midiEvent.GetSize(settings); writer.WriteVlqNumber(contentSize); midiEvent.Write(writer, settings); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { var eventType = midiEvent.GetType(); byte statusByte; if (!StandardEventTypes.SystemCommon.TryGetStatusByte(eventType, out statusByte)) { Debug.Fail($"Unable to write the {eventType} event."); } writer.WriteByte(statusByte); } midiEvent.Write(writer, settings); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { var eventType = midiEvent.GetType(); byte statusByte; if (!StandardEventTypes.SysEx.TryGetStatusByte(eventType, out statusByte)) { Debug.Fail($"Unable to write the {eventType} event."); } writer.WriteByte(statusByte); } // var contentSize = midiEvent.GetSize(settings); writer.WriteVlqNumber(contentSize); midiEvent.Write(writer, settings); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { var eventType = midiEvent.GetType(); byte statusByte; if (!StandardEventTypes.Channel.TryGetStatusByte(eventType, out statusByte)) { Debug.Fail($"Unable to write the {eventType} event."); } var channel = ((ChannelEvent)midiEvent).Channel; var totalStatusByte = DataTypesUtilities.Combine((FourBitNumber)statusByte, channel); writer.WriteByte(totalStatusByte); } // midiEvent.Write(writer, settings); }
internal override void Write(MidiWriter writer, WritingSettings settings) { writer.WriteByte(_dataByte1); }
/// <summary> /// Writes content of a MIDI meta event. /// </summary> /// <param name="writer">Writer to write the content with.</param> /// <param name="settings">Settings according to which the event's content must be written.</param> protected override void WriteContent(MidiWriter writer, WritingSettings settings) { writer.WriteSByte(Key); writer.WriteByte(Scale); }
internal override void Write(MidiWriter writer, WritingSettings settings) { writer.WriteByte(Number); }
internal override void Write(MidiWriter writer, WritingSettings settings) { writer.WriteByte(_lsb); writer.WriteByte(_msb); }
public void Write(MidiEvent midiEvent, MidiWriter writer, WritingSettings settings, bool writeStatusByte) { if (writeStatusByte) { writer.WriteByte(EventStatusBytes.Global.Meta); } // byte statusByte = 0; switch (midiEvent.EventType) { case MidiEventType.Lyric: statusByte = EventStatusBytes.Meta.Lyric; break; case MidiEventType.SetTempo: statusByte = EventStatusBytes.Meta.SetTempo; break; case MidiEventType.Text: statusByte = EventStatusBytes.Meta.Text; break; case MidiEventType.SequenceTrackName: statusByte = EventStatusBytes.Meta.SequenceTrackName; break; case MidiEventType.PortPrefix: statusByte = EventStatusBytes.Meta.PortPrefix; break; case MidiEventType.TimeSignature: statusByte = EventStatusBytes.Meta.TimeSignature; break; case MidiEventType.SequencerSpecific: statusByte = EventStatusBytes.Meta.SequencerSpecific; break; case MidiEventType.KeySignature: statusByte = EventStatusBytes.Meta.KeySignature; break; case MidiEventType.Marker: statusByte = EventStatusBytes.Meta.Marker; break; case MidiEventType.ChannelPrefix: statusByte = EventStatusBytes.Meta.ChannelPrefix; break; case MidiEventType.InstrumentName: statusByte = EventStatusBytes.Meta.InstrumentName; break; case MidiEventType.CopyrightNotice: statusByte = EventStatusBytes.Meta.CopyrightNotice; break; case MidiEventType.SmpteOffset: statusByte = EventStatusBytes.Meta.SmpteOffset; break; case MidiEventType.DeviceName: statusByte = EventStatusBytes.Meta.DeviceName; break; case MidiEventType.CuePoint: statusByte = EventStatusBytes.Meta.CuePoint; break; case MidiEventType.ProgramName: statusByte = EventStatusBytes.Meta.ProgramName; break; case MidiEventType.SequenceNumber: statusByte = EventStatusBytes.Meta.SequenceNumber; break; case MidiEventType.EndOfTrack: statusByte = EventStatusBytes.Meta.EndOfTrack; break; case MidiEventType.UnknownMeta: statusByte = ((UnknownMetaEvent)midiEvent).StatusByte; break; default: { var eventType = midiEvent.GetType(); if (settings.CustomMetaEventTypes?.TryGetStatusByte(eventType, out statusByte) != true) { Debug.Fail($"Unable to write the {eventType} event."); } } break; } writer.WriteByte(statusByte); // var contentSize = midiEvent.GetSize(settings); writer.WriteVlqNumber(contentSize); midiEvent.Write(writer, settings); }