File: midirawdev.h

package info (click to toggle)
muse 0.6.3-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 8,936 kB
  • ctags: 7,446
  • sloc: cpp: 66,262; sh: 8,355; makefile: 755; ansic: 172
file content (64 lines) | stat: -rw-r--r-- 1,860 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//=========================================================
//  MusE
//  Linux Music Editor
//  $Id: midirawdev.h,v 1.1.1.1 2003/10/29 10:06:13 wschweer Exp $
//  (C) Copyright 2000 Werner Schweer (ws@seh.de)
//=========================================================

#ifndef __MIDIRAWDEV_H__
#define __MIDIRAWDEV_H__

#include "midithread.h"
#include "mididev.h"
#include "midirawin.h"

const int IO_BUFFERSIZE = 128;

//---------------------------------------------------------
//   MidiRawDevice
//---------------------------------------------------------

class MidiRawDevice : public MidiDevice, public MidiRawIn {
      unsigned runState;

      unsigned char iobuffer[IO_BUFFERSIZE];
      unsigned char* rp;
      unsigned char* wp;

      void chnEvent2(int chn, int event, int p1, int p2);
      void chnEvent1(int chn, int event, int p1);
      void put(unsigned char);
      void flush();
      void processInput();

   protected:
      virtual void realtimeSystemInput(int data);
      virtual void mtcInputQuarter(int data);
      virtual void setSongPosition(int data);
      virtual void sysexReceived(const unsigned char* p, int n);
      virtual void eventReceived(int ch, int a, int b);
      virtual int read(unsigned char*, int) = 0;
      virtual int write(const unsigned char*, int) = 0;

   public:
      MidiRawDevice() {}
      MidiRawDevice(const QString& name);
      virtual ~MidiRawDevice() {}

      virtual QString open(int) = 0;
      virtual void close() = 0;
      virtual int selectWfd() = 0;
      virtual int selectRfd() = 0;
      virtual void putEvent(const MidiPlayEvent*);

      virtual void putClock();
      virtual void putStart();
      virtual void putStop();
      virtual void putContinue();
      virtual void putSongpos(int);

      bool bytesToWrite() const         { return rp != wp; }
      };

#endif