ShortMsg.h
上传用户:fs3633
上传日期:2021-05-14
资源大小:909k
文件大小:4k
源码类别:

midi

开发平台:

Visual C++

  1. #ifndef SHORT_MSG_H
  2. #define SHORT_MSG_H
  3. /*
  4.   ShortMsg.h
  5.   CShortMsg class declaration. This class represents short MIDI messages.
  6.   Copyright (C) 2002 Leslie Sanford
  7.   This library is free software; you can redistribute it and/or
  8.   modify it under the terms of the GNU Lesser General Public
  9.   License as published by the Free Software Foundation; either
  10.   version 2.1 of the License, or (at your option) any later version.
  11.   This library is distributed in the hope that it will be useful,
  12.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.   Lesser General Public License for more details.
  15.   You should have received a copy of the GNU Lesser General Public
  16.   License along with this library; if not, write to the Free Software
  17.   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 
  18.   USA
  19.   Contact: Leslie Sanford (jabberdabber@hotmail.com)
  20.   Last modified: 08/19/2003
  21. */
  22. //---------------------------------------------------------------------
  23. // Dependencies
  24. //---------------------------------------------------------------------
  25. #include "MIDIMsg.h"    // For CMIDIMsg base class
  26. #include "StdAfx.h"
  27. namespace midi
  28. {
  29.     // Constants
  30.     const DWORD SHORT_MSG_LENGTH = 3;
  31.     //-----------------------------------------------------------------
  32.     // CShortMsg class
  33.     //
  34.     // This class represents short MIDI messages.
  35.     //-----------------------------------------------------------------
  36.     class CShortMsg : public CMIDIMsg
  37.     {
  38.     public:
  39.         // Constructors
  40.         explicit CShortMsg(DWORD TimeStamp = 0);
  41.         CShortMsg(DWORD Msg, DWORD TimeStamp = 0);
  42.         CShortMsg(unsigned char Status, unsigned char Data1,
  43.             unsigned char Data2, DWORD TimeStamp);
  44.         CShortMsg(unsigned char Command, unsigned char Channel,
  45.             unsigned char Data1, unsigned char Data2, 
  46.             DWORD TimeStamp);
  47.         // Sends message
  48.         void SendMsg(midi::CMIDIOutDevice &OutDevice);
  49.         // Sends message without status byte
  50.         void SendMsgNoStatus(midi::CMIDIOutDevice &OutDevice);
  51.         //
  52.         // Accessors
  53.         // 
  54.         DWORD GetLength() const
  55.         { return midi::SHORT_MSG_LENGTH; }
  56.         const char *GetMsg() const;
  57.         unsigned char GetStatus() const;
  58.         unsigned char GetChannel() const;
  59.         unsigned char GetCommand() const;
  60.         unsigned char GetData1() const;
  61.         unsigned char GetData2() const;
  62.         //
  63.         // Mutators
  64.         //
  65.         void SetMsg(unsigned char Status, unsigned char Data1,
  66.             unsigned char Data2);
  67.         void SetMsg(unsigned char Command, unsigned char Channel,
  68.             unsigned char Data1, unsigned char Data2);
  69.         //
  70.         // Class methods
  71.         //
  72.         // Packs short messages without status byte
  73.         static DWORD PackShortMsg(unsigned char DataByte1,
  74.                                   unsigned char DataByte2);
  75.         // Packs short messages with status byte
  76.         static DWORD PackShortMsg(unsigned char Status,
  77.                                   unsigned char DataByte1,
  78.                                   unsigned char DataByte2);
  79.         // Packs short channel messages
  80.         static DWORD PackShortMsg(unsigned char Command,
  81.                                   unsigned char Channel,
  82.                                   unsigned char DataByte1,
  83.                                   unsigned char DataByte2);
  84.         // Unpacks short messages
  85.         static void UnpackShortMsg(DWORD Msg, unsigned char &Status,
  86.                                    unsigned char &DataByte1,
  87.                                    unsigned char &DataByte2);
  88.         // Unpacks short channel messages
  89.         static void UnpackShortMsg(DWORD Msg, unsigned char &Command,
  90.                                    unsigned char &Channel,
  91.                                    unsigned char &DataByte1,
  92.                                    unsigned char &DataByte2);
  93.     private:
  94.         DWORD m_Msg;
  95.         DWORD m_MsgNoStatus;
  96.     };
  97. }
  98. #endif