Exemplo n.º 1
0
 internal void SendMessages(OutputMidi[] om, SysCommonMessage CommonMessage)
 {
     foreach (int i in outMidiList)
     {
         om[i].outMIDI.Send(CommonMessage);
     }
 }
Exemplo n.º 2
0
    private void Write(SysCommonMessage message)
    {
        // Escaped messages cancel running status.
        runningStatus = 0;

        // Escaped message.
        trackData.Add((byte)0xF7);

        trackData.Add((byte)message.Status);

        switch (message.SysCommonType)
        {
        case SysCommonType.MidiTimeCode:
            trackData.Add((byte)message.Data1);
            break;

        case SysCommonType.SongPositionPointer:
            trackData.Add((byte)message.Data1);
            trackData.Add((byte)message.Data2);
            break;

        case SysCommonType.SongSelect:
            trackData.Add((byte)message.Data1);
            break;
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// Initializes a new instance of the SongPositionPointerBuilder class
    /// with the specified song position pointer message.
    /// </summary>
    /// <param name="message">
    /// The song position pointer message to use for initializing the
    /// SongPositionPointerBuilder.
    /// </param>
    /// <exception cref="ArgumentException">
    /// If message is not a song position pointer message.
    /// </exception>
    public SongPositionPointerBuilder(SysCommonMessage message)
    {
        builder      = new SysCommonMessageBuilder();
        builder.Type = SysCommonType.SongPositionPointer;

        Initialize(message);

        Ppqn = PpqnClock.PpqnMinValue;
    }
Exemplo n.º 4
0
        void onSysCommonMessageReceived(object obj, SysCommonMessageEventArgs e)
        {
            SysCommonMessage m = e.Message;

            if (debugPrintMIDI)
            {
                Console.WriteLine("SysCommon Message: " + m.SysCommonType.ToString() + " "
                                  + m.Data1.ToString() + " " + m.Data2.ToString());
            }
        }
Exemplo n.º 5
0
    /// <summary>
    /// Builds a SysCommonMessage.
    /// </summary>
    public void Build()
    {
        result = (SysCommonMessage)messageCache[message];

        if (result == null)
        {
            result = new SysCommonMessage(message);

            messageCache.Add(message, result);
        }
    }
Exemplo n.º 6
0
    public virtual void Send(SysCommonMessage message)
    {
        #region Require

        if (IsDisposed)
        {
            throw new ObjectDisposedException(this.GetType().Name);
        }

        #endregion

        Send(message.Message);
    }
Exemplo n.º 7
0
    /// <summary>
    /// Determines whether two SysCommonMessage instances are equal.
    /// </summary>
    /// <param name="obj">
    /// The SysCommonMessage to compare with the current SysCommonMessage.
    /// </param>
    /// <returns>
    /// <b>true</b> if the specified SysCommonMessage is equal to the
    /// current SysCommonMessage; otherwise, <b>false</b>.
    /// </returns>
    public override bool Equals(object obj)
    {
        #region Guard

        if (!(obj is SysCommonMessage))
        {
            return(false);
        }

        #endregion

        SysCommonMessage message = (SysCommonMessage)obj;

        return(this.SysCommonType == message.SysCommonType &&
               this.Data1 == message.Data1 &&
               this.Data2 == message.Data2);
    }
Exemplo n.º 8
0
    /// <summary>
    /// Initializes the SongPositionPointerBuilder with the specified
    /// SysCommonMessage.
    /// </summary>
    /// <param name="message">
    /// The SysCommonMessage to use to initialize the
    /// SongPositionPointerBuilder.
    /// </param>
    /// <exception cref="ArgumentException">
    /// If the SysCommonMessage is not a song position pointer message.
    /// </exception>
    public void Initialize(SysCommonMessage message)
    {
        #region Require

        if (message == null)
        {
            throw new ArgumentNullException("message");
        }
        else if (message.SysCommonType != SysCommonType.SongPositionPointer)
        {
            throw new ArgumentException(
                      "Message is not a song position pointer message.");
        }

        #endregion

        builder.Initialize(message);
    }
Exemplo n.º 9
0
        /// <summary>
        /// SysCommon messages received
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandleSysCommonMessageReceived(object sender, SysCommonMessageEventArgs e)
        {
            context.Post(delegate(object dummy)
            {
                int ticks = GetTicks();

                sysCommonListBox.Items.Add(
                    e.Message.SysCommonType.ToString() + '\t' + '\t' +
                    e.Message.Data1.ToString() + '\t' +
                    e.Message.Data2.ToString());

                sysCommonListBox.SelectedIndex = sysCommonListBox.Items.Count - 1;

                // insert event
                SysCommonMessage CMsg = new SysCommonMessage(e.Message.SysCommonType);
                track1.Insert(ticks, CMsg);
            }, null);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 添加mid文件到dataGridView
        /// </summary>
        /// <param name="trakInfo"></param>
        /// <param name="gridView"></param>
        private void AddTrackInfo2GridView(Sanford.Multimedia.Midi.Track trakInfo, DataGridView gridView)
        {
            //DataGridViewTextBoxColumn boxColumn = new DataGridViewTextBoxColumn();

            DataGridViewTextBoxColumn ColumnEventIndex = new DataGridViewTextBoxColumn();

            ColumnEventIndex.HeaderText = "Event-Num";
            ColumnEventIndex.Name       = "ColumnEventIndex";
            ColumnEventIndex.ReadOnly   = true;
            //ColumnEventIndex.Width = 200;

            DataGridViewTextBoxColumn ColumnAbsTicks = new DataGridViewTextBoxColumn();

            ColumnAbsTicks.HeaderText = "Abs-Ticks";
            ColumnAbsTicks.Name       = "ColumnAbsTicks";
            ColumnAbsTicks.ReadOnly   = true;
            //ColumnAbsTicks.Width = 80;
            //
            // ColumnDeltaTicks
            //
            DataGridViewTextBoxColumn ColumnDeltaTicks = new DataGridViewTextBoxColumn();

            ColumnDeltaTicks.HeaderText = "Dlt Ticks";
            ColumnDeltaTicks.Name       = "ColumnDeltaTicks";
            ColumnDeltaTicks.ReadOnly   = true;
            //
            // ColumnMsgStatus
            //
            DataGridViewTextBoxColumn ColumnMsgStatus = new DataGridViewTextBoxColumn();

            ColumnMsgStatus.HeaderText = "MsgStatus";
            ColumnMsgStatus.Name       = "ColumnMsgStatus";
            ColumnMsgStatus.ReadOnly   = true;
            //
            // ColumnMsgType
            //
            DataGridViewTextBoxColumn ColumnMsgType = new DataGridViewTextBoxColumn();

            ColumnMsgType.HeaderText = "MsgType";
            ColumnMsgType.Name       = "ColumnMsgType";
            ColumnMsgType.ReadOnly   = true;
            //
            // ColumnMsgSubType
            //
            DataGridViewTextBoxColumn ColumnMsgSubType = new DataGridViewTextBoxColumn();

            ColumnMsgSubType.HeaderText = "SubType";
            ColumnMsgSubType.Name       = "ColumnMsgSubType";
            ColumnMsgSubType.ReadOnly   = true;
            //
            // ColumnMsgData1
            //
            DataGridViewTextBoxColumn ColumnMsgData1 = new DataGridViewTextBoxColumn();

            ColumnMsgData1.HeaderText = "MsgData1";
            ColumnMsgData1.Name       = "ColumnMsgData1";
            ColumnMsgData1.ReadOnly   = true;
            //
            // ColumnMsgData2
            //
            DataGridViewTextBoxColumn ColumnMsgData2 = new DataGridViewTextBoxColumn();

            ColumnMsgData2.HeaderText = "MsgData2";
            ColumnMsgData2.Name       = "ColumnMsgData2";
            ColumnMsgData2.ReadOnly   = true;
            //
            // ColumnMidiChannel
            //
            DataGridViewTextBoxColumn ColumnMidiChannel = new DataGridViewTextBoxColumn();

            ColumnMidiChannel.HeaderText = "MidiChannel";
            ColumnMidiChannel.Name       = "ColumnMidiChannel";
            ColumnMidiChannel.ReadOnly   = true;
            //
            // ColumnBytes
            //
            DataGridViewTextBoxColumn ColumnBytes = new DataGridViewTextBoxColumn();

            ColumnBytes.HeaderText = "Bytes";
            ColumnBytes.Name       = "ColumnBytes";
            ColumnBytes.ReadOnly   = true;

            gridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            gridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
                ColumnEventIndex,
                ColumnAbsTicks,
                ColumnDeltaTicks,
                ColumnMsgStatus,
                ColumnMsgType,
                ColumnMsgSubType,
                ColumnMsgData1,
                ColumnMsgData2,
                ColumnMidiChannel,
                ColumnBytes
            });
            for (int i = 0; i < trakInfo.Count; i++)
            {
                MidiEvent me = trakInfo.GetMidiEvent(i);
                //listViewTrackInfo.Items.Add(string.Format("音轨{0},EventNo = {1} Msg type = {2} , status = {3}", i, j, me.MidiMessage.MessageType, me.MidiMessage.Status));
                ArrayList stuff = new ArrayList();
                stuff.Add(i);
                stuff.Add(me.AbsoluteTicks);
                stuff.Add(me.DeltaTicks);
                stuff.Add(me.MidiMessage.Status);
                stuff.Add(me.MidiMessage.MessageType);
                switch (me.MidiMessage.MessageType)
                {
                case MessageType.Channel:
                    ChannelMessage cm = (ChannelMessage)me.MidiMessage;
                    stuff.Add(cm.Command);
                    stuff.Add(cm.Data1);
                    stuff.Add(cm.Data2);
                    stuff.Add(cm.MidiChannel);
                    break;

                case MessageType.SystemExclusive:
                    SysExMessage sem = (SysExMessage)me.MidiMessage;
                    stuff.Add(sem.SysExType);

                    break;

                case MessageType.SystemCommon:
                    SysCommonMessage scm = (SysCommonMessage)me.MidiMessage;
                    stuff.Add(scm.SysCommonType);
                    stuff.Add(scm.Data1);
                    stuff.Add(scm.Data2);

                    break;

                case MessageType.SystemRealtime:
                    SysRealtimeMessage srm = (SysRealtimeMessage)me.MidiMessage;
                    stuff.Add(srm.SysRealtimeType);

                    break;

                case MessageType.Meta:
                    MetaMessage mm = (MetaMessage)me.MidiMessage;
                    stuff.Add(mm.MetaType);
                    //if (mm.MetaType == MetaType.TrackName)
                    //{
                    //    stuff.Add(""); //data1
                    //    stuff.Add(""); //data2
                    //    stuff.Add("");//MidiChannel
                    //    byte[] bytesTrkName = mm.GetBytes();
                    //    //UnicodeEncoding encoding = new UnicodeEncoding();
                    //    //string trackName = encoding.GetString(mm.GetBytes());
                    //    //stuff.Add(/*trackName*/mm.GetBytes());
                    //}
                    break;
                }

                //object[] stuff = { i, j, me.MidiMessage.MessageType,me.AbsoluteTicks };
                gridView.Rows.Add(stuff.ToArray());
            }
        }
Exemplo n.º 11
0
 /// <summary>
 /// Initializes a new instance of the SysCommonMessageBuilder class 
 /// with the specified SystemCommonMessage.
 /// </summary>
 /// <param name="message">
 /// The SysCommonMessage to use for initializing the 
 /// SysCommonMessageBuilder.
 /// </param>
 /// <remarks>
 /// The SysCommonMessageBuilder uses the specified SysCommonMessage to 
 /// initialize its property values.
 /// </remarks>
 public SysCommonMessageBuilder(SysCommonMessage message)
 {
     Initialize(message);
 }
        /// <summary>
        /// Initializes a new instance of the SongPositionPointerBuilder class
        /// with the specified song position pointer message.
        /// </summary>
        /// <param name="message">
        /// The song position pointer message to use for initializing the 
        /// SongPositionPointerBuilder.
        /// </param>
        /// <exception cref="ArgumentException">
        /// If message is not a song position pointer message.
        /// </exception>
        public SongPositionPointerBuilder(SysCommonMessage message)
        {
            builder = new SysCommonMessageBuilder();
            builder.Type = SysCommonType.SongPositionPointer;

            Initialize(message);

            Ppqn = PpqnClock.PpqnMinValue;
        }
Exemplo n.º 13
0
 /// <summary>
 /// Initializes the SysCommonMessageBuilder with the specified 
 /// SysCommonMessage.
 /// </summary>
 /// <param name="message">
 /// The SysCommonMessage to use for initializing the 
 /// SysCommonMessageBuilder.
 /// </param>
 public void Initialize(SysCommonMessage message)
 {
     this.message = message.Message;
 }
Exemplo n.º 14
0
 public SysCommonMessageEventArgs(SysCommonMessage message)
 {
     this.message = message;
 }
Exemplo n.º 15
0
 public virtual void Send(SysCommonMessage message)
 {
 }
Exemplo n.º 16
0
        private void Write(SysCommonMessage message)
        {
            // Escaped messages cancel running status.
            runningStatus = 0;

            // Escaped message.
            trackData.Add((byte)0xF7);

            trackData.Add((byte)message.Status);

            switch(message.SysCommonType)
            {
                case SysCommonType.MidiTimeCode:
                    trackData.Add((byte)message.Data1);
                    break;

                case SysCommonType.SongPositionPointer:
                    trackData.Add((byte)message.Data1);
                    trackData.Add((byte)message.Data2);
                    break;

                case SysCommonType.SongSelect:
                    trackData.Add((byte)message.Data1);
                    break;
            }
        }
Exemplo n.º 17
0
 /// <summary>
 /// Initializes the SysCommonMessageBuilder with the specified
 /// SysCommonMessage.
 /// </summary>
 /// <param name="message">
 /// The SysCommonMessage to use for initializing the
 /// SysCommonMessageBuilder.
 /// </param>
 public void Initialize(SysCommonMessage message)
 {
     this.message = message.Message;
 }
Exemplo n.º 18
0
 /// <summary>
 /// Initializes a new instance of the SysCommonMessageBuilder class
 /// with the specified SystemCommonMessage.
 /// </summary>
 /// <param name="message">
 /// The SysCommonMessage to use for initializing the
 /// SysCommonMessageBuilder.
 /// </param>
 /// <remarks>
 /// The SysCommonMessageBuilder uses the specified SysCommonMessage to
 /// initialize its property values.
 /// </remarks>
 public SysCommonMessageBuilder(SysCommonMessage message)
 {
     Initialize(message);
 }
Exemplo n.º 19
0
 public SysCommonMessageEventArgs(SysCommonMessage message)
 {
     this.message = message;
 }
Exemplo n.º 20
0
 public virtual void Send(SysCommonMessage message)
 {
 }
        /// <summary>
        /// Initializes the SongPositionPointerBuilder with the specified 
        /// SysCommonMessage.
        /// </summary>
        /// <param name="message">
        /// The SysCommonMessage to use to initialize the 
        /// SongPositionPointerBuilder.
        /// </param>
        /// <exception cref="ArgumentException">
        /// If the SysCommonMessage is not a song position pointer message.
        /// </exception>
        public void Initialize(SysCommonMessage message)
        {
            #region Require

            if(message == null)
            {
                throw new ArgumentNullException("message");
            }
            else if(message.SysCommonType != SysCommonType.SongPositionPointer)
            {
                throw new ArgumentException(
                    "Message is not a song position pointer message.");
            }

            #endregion

            builder.Initialize(message);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Builds a SysCommonMessage.
        /// </summary>
        public void Build()
        {
            result = (SysCommonMessage)messageCache[message];

            if(result == null)
            {
                result = new SysCommonMessage(message);

                messageCache.Add(message, result);
            }
        }