예제 #1
0
 public Translation(ShortMessage inputMessageMatchTarget, ShortMessage outputMessageTemplate, Func<ShortMessage, ShortMessage, bool> inputMatchFunction, Func<ShortMessage, ShortMessage, ShortMessage> translationFunction)
 {
     InputMessageMatchTarget = inputMessageMatchTarget;
     OutputMessageTemplate = outputMessageTemplate;
     InputMatchFunction = inputMatchFunction;
     TranslationFunction = translationFunction;
 }
예제 #2
0
        private void Write(int deltaTicks, ShortMessage message)
        {
            #region Require

            if (IsDisposed)
            {
                throw new ObjectDisposedException("OutputStream");
            }

            #endregion

            // Delta time.
            events.AddRange(BitConverter.GetBytes(deltaTicks + offsetTicks));

            // Stream ID.
            events.AddRange(streamID);

            // Event code.
            byte[] eventCode = message.GetBytes();
            eventCode[eventCode.Length - 1] = MEVT_SHORTMSG;
            events.AddRange(eventCode);

            offsetTicks = 0;
        }
 public RawMessageEventArgs(int message)
 {
     this.message = new byte[] { (byte)ShortMessage.UnpackStatus(message),
                                 (byte)ShortMessage.UnpackData1(message),
                                 (byte)ShortMessage.UnpackData2(message) };
 }
 public ShortMessageEventArgs(byte status, byte data1, byte data2)
 {
     this.message = new ShortMessage(status, data1, data2);
 }
 public ShortMessageEventArgs(int message, int timestamp = 0)
 {
     this.message           = new ShortMessage(message);
     this.message.Timestamp = timestamp;
 }
 public ShortMessageEventArgs(ShortMessage message)
 {
     this.message = message;
 }
        private void HandleShortMessage(object state)
        {
            int message = (int)state;
            int status  = ShortMessage.UnpackStatus(message);

            if (status >= (int)ChannelCommand.NoteOff &&
                status <= (int)ChannelCommand.PitchWheel +
                ChannelMessage.MidiChannelMaxValue)
            {
                cmBuilder.Message = message;
                cmBuilder.Build();

                OnChannelMessageReceived(new ChannelMessageEventArgs(cmBuilder.Result));
            }
            else if (status == (int)SysCommonType.MidiTimeCode ||
                     status == (int)SysCommonType.SongPositionPointer ||
                     status == (int)SysCommonType.SongSelect ||
                     status == (int)SysCommonType.TuneRequest)
            {
                scBuilder.Message = message;
                scBuilder.Build();

                OnSysCommonMessageReceived(new SysCommonMessageEventArgs(scBuilder.Result));
            }
            else
            {
                SysRealtimeMessageEventArgs e = null;

                switch ((SysRealtimeType)status)
                {
                case SysRealtimeType.ActiveSense:
                    e = SysRealtimeMessageEventArgs.ActiveSense;
                    break;

                case SysRealtimeType.Clock:
                    e = SysRealtimeMessageEventArgs.Clock;
                    break;

                case SysRealtimeType.Continue:
                    e = SysRealtimeMessageEventArgs.Continue;
                    break;

                case SysRealtimeType.Reset:
                    e = SysRealtimeMessageEventArgs.Reset;
                    break;

                case SysRealtimeType.Start:
                    e = SysRealtimeMessageEventArgs.Start;
                    break;

                case SysRealtimeType.Stop:
                    e = SysRealtimeMessageEventArgs.Stop;
                    break;

                case SysRealtimeType.Tick:
                    e = SysRealtimeMessageEventArgs.Tick;
                    break;
                }

                OnSysRealtimeMessageReceived(e);
            }
        }
 public ShortMessageEventArgs(int message)
 {
     this.message = new ShortMessage(message);
 }
예제 #9
0
        private void Write(int deltaTicks, ShortMessage message)
        {
            #region Require

            if(IsDisposed)
            {
                throw new ObjectDisposedException("OutputStream");
            }

            #endregion

            // Delta time.
            events.AddRange(BitConverter.GetBytes(deltaTicks + offsetTicks));

            // Stream ID.
            events.AddRange(streamID);

            // Event code.
            byte[] eventCode = message.GetBytes();
            eventCode[eventCode.Length - 1] = MEVT_SHORTMSG;
            events.AddRange(eventCode);

            offsetTicks = 0;
        }
 public ShortMessageEventArgs(byte status, byte data1, byte data2, int absoluteTicks = -1)
 {
     this.message       = new ShortMessage(status, data1, data2);
     this.AbsoluteTicks = absoluteTicks;
 }
 public ShortMessageEventArgs(int message, int timestamp = 0, int absoluteTicks = -1)
 {
     this.message           = new ShortMessage(message);
     this.message.Timestamp = timestamp;
     this.AbsoluteTicks     = absoluteTicks;
 }
 public ShortMessageEventArgs(ShortMessage message, int absoluteTicks = -1)
 {
     this.message       = message;
     this.AbsoluteTicks = absoluteTicks;
 }
예제 #13
0
 private void Write(ShortMessage message)
 {
     trackData.AddRange(message.GetBytes());
 }
예제 #14
0
 public void Send(ShortMessage midiMessage)
 {
     OutputDevice.Send((ChannelMessage)midiMessage);
 }