Example #1
0
        internal override void Write(MidiWriter writer, WritingSettings settings)
        {
            var component = Component;

            var componentValueMask = ComponentValueMasks[component];
            var componentValue     = ComponentValue & componentValueMask;

            var data = DataTypesUtilities.Combine((FourBitNumber)(byte)component,
                                                  (FourBitNumber)(byte)componentValue);

            writer.WriteByte(data);
        }
Example #2
0
        public byte GetStatusByte(MidiEvent midiEvent)
        {
            var eventType = midiEvent.GetType();

            byte statusByte;

            if (!StandardEventTypes.Channel.TryGetStatusByte(eventType, out statusByte))
            {
                Debug.Fail($"No status byte defined for {eventType}.");
            }

            return(DataTypesUtilities.Combine((FourBitNumber)statusByte,
                                              ((ChannelEvent)midiEvent).Channel));
        }
        public byte GetStatusByte(MidiEvent midiEvent)
        {
            byte statusByte = 0;

            switch (midiEvent.EventType)
            {
            case MidiEventType.NoteOff:
                statusByte = EventStatusBytes.Channel.NoteOff;
                break;

            case MidiEventType.NoteOn:
                statusByte = EventStatusBytes.Channel.NoteOn;
                break;

            case MidiEventType.ControlChange:
                statusByte = EventStatusBytes.Channel.ControlChange;
                break;

            case MidiEventType.PitchBend:
                statusByte = EventStatusBytes.Channel.PitchBend;
                break;

            case MidiEventType.ChannelAftertouch:
                statusByte = EventStatusBytes.Channel.ChannelAftertouch;
                break;

            case MidiEventType.ProgramChange:
                statusByte = EventStatusBytes.Channel.ProgramChange;
                break;

            case MidiEventType.NoteAftertouch:
                statusByte = EventStatusBytes.Channel.NoteAftertouch;
                break;
            }

            var channel = ((ChannelEvent)midiEvent).Channel;

            return(DataTypesUtilities.Combine((FourBitNumber)statusByte, channel));
        }
Example #4
0
        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 short ToInt16()
 {
     return((short)-DataTypesUtilities.Combine((byte)Format, Resolution));
 }