drumstick  2.1.0
alsaevent.h
Go to the documentation of this file.
1 /*
2  MIDI Sequencer C++ library
3  Copyright (C) 2006-2021, Pedro Lopez-Cabanillas <plcl@users.sf.net>
4 
5  This library is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 3 of the License, or
8  (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef DRUMSTICK_ALSAEVENT_H
20 #define DRUMSTICK_ALSAEVENT_H
21 
22 extern "C" {
23  #include <alsa/asoundlib.h>
24 }
25 
26 #include <QObject>
27 #include <QEvent>
28 #include "macros.h"
29 
30 namespace drumstick { namespace ALSA {
31 
43 typedef quint8 MidiByte;
44 
49 const QEvent::Type SequencerEventType = QEvent::Type(QEvent::User + 4154); // :-)
50 
57 class DRUMSTICK_EXPORT SequencerEvent : public QEvent
58 {
59 public:
61  SequencerEvent(const SequencerEvent& other);
62  explicit SequencerEvent(const snd_seq_event_t* event);
63 
64  SequencerEvent& operator=(const SequencerEvent& other);
65  void setSequencerType(const snd_seq_event_type_t eventType);
71  snd_seq_event_type_t getSequencerType() const { return m_event.type; }
72  void setDestination(const unsigned char client, const unsigned char port);
73  void setSource(const unsigned char port);
79  unsigned char getSourceClient() const { return m_event.source.client; }
85  unsigned char getSourcePort() const { return m_event.source.port; }
91  snd_seq_tick_time_t getTick() const { return m_event.time.tick; }
97  unsigned int getRealTimeSecs() const { return m_event.time.time.tv_sec; }
103  unsigned int getRealTimeNanos() const { return m_event.time.time.tv_nsec; }
104  void setSubscribers();
105  void setBroadcast();
106  void setDirect();
107  void scheduleTick(const int queue, const int tick, const bool relative);
108  void scheduleReal(const int queue, const ulong secs, const ulong nanos, const bool relative);
109  void setPriority(const bool high);
115  unsigned char getTag() const { return m_event.tag; }
116  void setTag(const unsigned char aTag);
117  unsigned int getRaw32(const unsigned int n) const;
118  void setRaw32(const unsigned int n, const unsigned int value);
119  unsigned char getRaw8(const unsigned int n) const;
120  void setRaw8(const unsigned int n, const unsigned char value);
125  snd_seq_event_t* getHandle() { return &m_event; }
126  int getEncodedLength();
127 
128  static bool isSubscription(const SequencerEvent* event);
129  static bool isPort(const SequencerEvent* event);
130  static bool isClient(const SequencerEvent* event);
131  static bool isConnectionChange(const SequencerEvent* event);
132  static bool isChannel(const SequencerEvent* event);
133  virtual SequencerEvent* clone() const;
134 
135 protected:
136  void free() __attribute__((deprecated));
137 
142  snd_seq_event_t m_event;
143 };
144 
148 class DRUMSTICK_EXPORT ChannelEvent : public SequencerEvent
149 {
150 public:
157  explicit ChannelEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
163  void setChannel(const MidiByte c) { m_event.data.note.channel = (c & 0xf); }
169  int getChannel() const { return m_event.data.note.channel; }
170 
171  virtual ChannelEvent* clone() const override;
172 };
173 
177 class DRUMSTICK_EXPORT KeyEvent : public ChannelEvent
178 {
179 public:
186  explicit KeyEvent(const snd_seq_event_t* event) : ChannelEvent(event) {}
192  int getKey() const { return m_event.data.note.note; }
198  void setKey(const MidiByte b) { m_event.data.note.note = b; }
204  int getVelocity() const { return m_event.data.note.velocity; }
210  void setVelocity(const MidiByte b) { m_event.data.note.velocity = b; }
211 
212  virtual KeyEvent* clone() const override;
213 };
214 
221 class DRUMSTICK_EXPORT NoteEvent : public KeyEvent
222 {
223 public:
225  NoteEvent() : KeyEvent() { m_event.type = SND_SEQ_EVENT_NOTE; }
230  explicit NoteEvent(const snd_seq_event_t* event) : KeyEvent(event) {}
238  NoteEvent(const int ch, const int key, const int vel, const int dur);
244  ulong getDuration() const { return m_event.data.note.duration; }
250  void setDuration(const ulong d) { m_event.data.note.duration = d; }
251 
252  virtual NoteEvent* clone() const override;
253 };
254 
258 class DRUMSTICK_EXPORT NoteOnEvent : public KeyEvent
259 {
260 public:
262  NoteOnEvent() : KeyEvent() { m_event.type = SND_SEQ_EVENT_NOTEON; }
267  explicit NoteOnEvent(const snd_seq_event_t* event) : KeyEvent(event) {}
274  NoteOnEvent(const int ch, const int key, const int vel);
275  virtual NoteOnEvent* clone() const override;
276 };
277 
281 class DRUMSTICK_EXPORT NoteOffEvent : public KeyEvent
282 {
283 public:
285  NoteOffEvent() : KeyEvent() { m_event.type = SND_SEQ_EVENT_NOTEOFF; }
290  explicit NoteOffEvent(const snd_seq_event_t* event) : KeyEvent(event) {}
297  NoteOffEvent(const int ch, const int key, const int vel);
298  virtual NoteOffEvent* clone() const override;
299 };
300 
304 class DRUMSTICK_EXPORT KeyPressEvent : public KeyEvent
305 {
306 public:
308  KeyPressEvent() : KeyEvent() { m_event.type = SND_SEQ_EVENT_KEYPRESS; }
313  explicit KeyPressEvent(const snd_seq_event_t* event) : KeyEvent(event) {}
320  KeyPressEvent(const int ch, const int key, const int vel);
321  virtual KeyPressEvent* clone() const override;
322 };
323 
327 class DRUMSTICK_EXPORT ControllerEvent : public ChannelEvent
328 {
329 public:
336  explicit ControllerEvent(const snd_seq_event_t* event) : ChannelEvent(event) {}
343  ControllerEvent(const int ch, const int cc, const int val);
349  uint getParam() const { return m_event.data.control.param; }
355  void setParam( const uint p ) { m_event.data.control.param = p; }
361  int getValue() const { return m_event.data.control.value; }
367  void setValue( const int v ) { m_event.data.control.value = v; }
368  virtual ControllerEvent* clone() const override;
369 };
370 
374 class DRUMSTICK_EXPORT ProgramChangeEvent : public ChannelEvent
375 {
376 public:
378  ProgramChangeEvent() : ChannelEvent() { m_event.type = SND_SEQ_EVENT_PGMCHANGE; }
383  explicit ProgramChangeEvent(const snd_seq_event_t* event) : ChannelEvent(event) {}
389  ProgramChangeEvent(const int ch, const int val);
394  int getValue() const { return m_event.data.control.value; }
399  void setValue( const int v ) { m_event.data.control.value = v; }
400  virtual ProgramChangeEvent* clone() const override;
401 };
402 
406 class DRUMSTICK_EXPORT PitchBendEvent : public ChannelEvent
407 {
408 public:
410  PitchBendEvent() : ChannelEvent() { m_event.type = SND_SEQ_EVENT_PITCHBEND; }
415  explicit PitchBendEvent(const snd_seq_event_t* event) : ChannelEvent(event) {}
421  PitchBendEvent(const int ch, const int val);
426  int getValue() const { return m_event.data.control.value; }
431  void setValue( const int v ) { m_event.data.control.value = v; }
432  virtual PitchBendEvent* clone() const override;
433 };
434 
438 class DRUMSTICK_EXPORT ChanPressEvent : public ChannelEvent
439 {
440 public:
442  ChanPressEvent() : ChannelEvent() { m_event.type = SND_SEQ_EVENT_CHANPRESS; }
447  explicit ChanPressEvent( const snd_seq_event_t* event ) : ChannelEvent(event) {}
453  ChanPressEvent( const int ch, const int val );
458  int getValue() const { return m_event.data.control.value; }
463  void setValue( const int v ) { m_event.data.control.value = v; }
464  virtual ChanPressEvent* clone() const override;
465 };
466 
470 class DRUMSTICK_EXPORT VariableEvent : public SequencerEvent
471 {
472 public:
473  VariableEvent();
474  explicit VariableEvent(const snd_seq_event_t* event);
475  explicit VariableEvent(const QByteArray& data);
476  VariableEvent(const VariableEvent& other);
477  VariableEvent(const unsigned int datalen, char* dataptr);
478  VariableEvent& operator=(const VariableEvent& other);
483  unsigned int getLength() const { return m_event.data.ext.len; }
488  const char* getData() const { return static_cast<const char*>(m_event.data.ext.ptr); }
489  virtual VariableEvent* clone() const override;
490 protected:
491  QByteArray m_data;
492 };
493 
497 class DRUMSTICK_EXPORT SysExEvent : public VariableEvent
498 {
499 public:
500  SysExEvent();
501  explicit SysExEvent(const snd_seq_event_t* event);
502  explicit SysExEvent(const QByteArray& data);
503  SysExEvent(const SysExEvent& other);
504  SysExEvent(const unsigned int datalen, char* dataptr);
505  virtual SysExEvent* clone() const override;
506 };
507 
514 class DRUMSTICK_EXPORT TextEvent : public VariableEvent
515 {
516 public:
517  TextEvent();
518  explicit TextEvent(const snd_seq_event_t* event);
519  explicit TextEvent(const QString& text, const int textType = 1);
520  TextEvent(const TextEvent& other);
521  TextEvent(const unsigned int datalen, char* dataptr);
522  QString getText() const;
523  int getTextType() const;
524  virtual TextEvent* clone() const override;
525 protected:
526  int m_textType;
527 };
528 
532 class DRUMSTICK_EXPORT SystemEvent : public SequencerEvent
533 {
534 public:
541  explicit SystemEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
542  explicit SystemEvent(const snd_seq_event_type_t type);
543  virtual SystemEvent* clone() const override;
544 };
545 
551 class DRUMSTICK_EXPORT QueueControlEvent : public SequencerEvent
552 {
553 public:
560  explicit QueueControlEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
561  QueueControlEvent(const snd_seq_event_type_t type, const int queue, const int value);
566  int getQueue() const { return m_event.data.queue.queue; }
571  void setQueue(const uchar q) { m_event.data.queue.queue = q; }
576  int getValue() const { return m_event.data.queue.param.value; }
581  void setValue(const int val) { m_event.data.queue.param.value = val; }
586  uint getPosition() const { return m_event.data.queue.param.position; }
591  void setPosition(const uint pos) { m_event.data.queue.param.position = pos; }
596  snd_seq_tick_time_t getTickTime() const { return m_event.data.queue.param.time.tick; }
601  void setTickTime(const snd_seq_tick_time_t t) { m_event.data.queue.param.time.tick = t; }
606  uint getSkewBase() const { return m_event.data.queue.param.skew.base; }
611  void setSkewBase(const uint base) { m_event.data.queue.param.skew.base = base; }
616  uint getSkewValue() const { return m_event.data.queue.param.skew.value; }
621  void setSkewValue(const uint val) {m_event.data.queue.param.skew.value = val; }
622  virtual QueueControlEvent* clone() const override;
623 };
624 
628 class DRUMSTICK_EXPORT ValueEvent : public SequencerEvent
629 {
630 public:
637  explicit ValueEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
638  ValueEvent(const snd_seq_event_type_t type, const int val);
643  int getValue() const { return m_event.data.control.value; }
648  void setValue( const int v ) { m_event.data.control.value = v; }
649  virtual ValueEvent* clone() const override;
650 };
651 
655 class DRUMSTICK_EXPORT TempoEvent : public QueueControlEvent
656 {
657 public:
664  explicit TempoEvent(const snd_seq_event_t* event) : QueueControlEvent(event) {}
665  TempoEvent(const int queue, const int tempo);
666  virtual TempoEvent* clone() const override;
667 };
668 
672 class DRUMSTICK_EXPORT SubscriptionEvent : public SequencerEvent
673 {
674 public:
681  explicit SubscriptionEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
686  bool subscribed() const { return (m_event.type == SND_SEQ_EVENT_PORT_SUBSCRIBED); }
691  bool unsubscribed() const { return (m_event.type == SND_SEQ_EVENT_PORT_UNSUBSCRIBED); }
696  int getSenderClient() const { return m_event.data.connect.sender.client; }
701  int getSenderPort() const { return m_event.data.connect.sender.port; }
706  int getDestClient() const { return m_event.data.connect.dest.client; }
711  int getDestPort() const { return m_event.data.connect.dest.port; }
712  virtual SubscriptionEvent* clone() const override;
713 };
714 
718 class DRUMSTICK_EXPORT ClientEvent : public SequencerEvent
719 {
720 public:
727  explicit ClientEvent(const snd_seq_event_t* event) : SequencerEvent(event) {}
732  int getClient() const { return m_event.data.addr.client; }
733  virtual ClientEvent* clone() const override;
734 };
735 
739 class DRUMSTICK_EXPORT PortEvent : public ClientEvent
740 {
741 public:
748  explicit PortEvent(const snd_seq_event_t* event) : ClientEvent(event) {}
753  int getPort() const { return m_event.data.addr.port; }
754  virtual PortEvent* clone() const override;
755 };
756 
761 class DRUMSTICK_EXPORT RemoveEvents
762 {
763 public:
764  friend class MidiClient;
765 
766 public:
767  RemoveEvents();
768  RemoveEvents(const RemoveEvents& other);
769  explicit RemoveEvents(snd_seq_remove_events_t* other);
770  virtual ~RemoveEvents();
771  RemoveEvents* clone();
772  RemoveEvents& operator=(const RemoveEvents& other);
773  int getSizeOfInfo() const;
774 
775  int getChannel();
776  unsigned int getCondition();
777  const snd_seq_addr_t* getDest();
778  int getEventType();
779  int getQueue();
780  int getTag();
781  const snd_seq_timestamp_t* getTime();
782  void setChannel(int chan);
783  void setCondition(unsigned int cond);
784  void setDest(const snd_seq_addr_t* dest);
785  void setEventType(int type);
786  void setQueue(int queue);
787  void setTag(int tag);
788  void setTime(const snd_seq_timestamp_t* time);
789 
790 private:
791  snd_seq_remove_events_t* m_Info;
792 };
793 
797 class DRUMSTICK_EXPORT MidiCodec : public QObject
798 {
799  Q_OBJECT
800 public:
801  explicit MidiCodec(int bufsize, QObject* parent = nullptr);
802  ~MidiCodec();
803 
804  void init();
805  long decode(unsigned char *buf,
806  long count,
807  const snd_seq_event_t *ev);
808  long encode(const unsigned char *buf,
809  long count,
810  snd_seq_event_t *ev);
811  long encode(int c,
812  snd_seq_event_t *ev);
813  void enableRunningStatus(bool enable);
814  void resetEncoder();
815  void resetDecoder();
816  void resizeBuffer(int bufsize);
817 private:
818  snd_midi_event_t* m_Info;
819 };
820 
823 }} /* namespace drumstick::ALSA */
824 
825 #endif //DRUMSTICK_ALSAEVENT_H
The QEvent class is the base class of all event classes.
The QObject class is the base class of all Qt objects.
Event representing a MIDI channel pressure or after-touch event.
Definition: alsaevent.h:439
ChanPressEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:447
void setValue(const int v)
Sets the channel aftertouch value.
Definition: alsaevent.h:463
int getValue() const
Gets the channel aftertouch value.
Definition: alsaevent.h:458
ChanPressEvent()
Default constructor.
Definition: alsaevent.h:442
Base class for the events having a Channel property.
Definition: alsaevent.h:149
void setChannel(const MidiByte c)
Sets the channel of the event.
Definition: alsaevent.h:163
ChannelEvent()
Default constructor.
Definition: alsaevent.h:152
ChannelEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:157
int getChannel() const
Gets the event's channel.
Definition: alsaevent.h:169
ALSA Event representing a change on some ALSA sequencer client on the system.
Definition: alsaevent.h:719
ClientEvent()
Default constructor.
Definition: alsaevent.h:722
int getClient() const
Gets the client number.
Definition: alsaevent.h:732
ClientEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:727
Event representing a MIDI control change event.
Definition: alsaevent.h:328
uint getParam() const
Gets the controller event's parameter.
Definition: alsaevent.h:349
ControllerEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:336
void setParam(const uint p)
Sets the controller event's parameter.
Definition: alsaevent.h:355
void setValue(const int v)
Sets the controller event's value.
Definition: alsaevent.h:367
ControllerEvent()
Default constructor.
Definition: alsaevent.h:331
int getValue() const
Gets the controller event's value.
Definition: alsaevent.h:361
Base class for the events having Key and Velocity properties.
Definition: alsaevent.h:178
int getKey() const
Gets the MIDI note of this event.
Definition: alsaevent.h:192
KeyEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:186
void setKey(const MidiByte b)
Sets the MIDI note of this event.
Definition: alsaevent.h:198
KeyEvent()
Default constructor.
Definition: alsaevent.h:181
void setVelocity(const MidiByte b)
Sets the note velocity of this event.
Definition: alsaevent.h:210
int getVelocity() const
Gets the note velocity of this event.
Definition: alsaevent.h:204
Event representing a MIDI key pressure, or polyphonic after-touch event.
Definition: alsaevent.h:305
KeyPressEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:313
KeyPressEvent()
Default constructor.
Definition: alsaevent.h:308
Client management.
Definition: alsaclient.h:209
Auxiliary class to translate between raw MIDI streams and ALSA events.
Definition: alsaevent.h:798
Class representing a note event with duration.
Definition: alsaevent.h:222
NoteEvent()
Default constructor.
Definition: alsaevent.h:225
void setDuration(const ulong d)
Sets the note's duration.
Definition: alsaevent.h:250
ulong getDuration() const
Gets the note's duration.
Definition: alsaevent.h:244
NoteEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:230
Event representing a note-off MIDI event.
Definition: alsaevent.h:282
NoteOffEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:290
NoteOffEvent()
Default constructor.
Definition: alsaevent.h:285
Event representing a note-on MIDI event.
Definition: alsaevent.h:259
NoteOnEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:267
NoteOnEvent()
Default constructor.
Definition: alsaevent.h:262
Event representing a MIDI bender, or pitch wheel event.
Definition: alsaevent.h:407
PitchBendEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:415
void setValue(const int v)
Sets the MIDI pitch bend value, zero centered from -8192 to 8191.
Definition: alsaevent.h:431
int getValue() const
Gets the MIDI pitch bend value, zero centered from -8192 to 8191.
Definition: alsaevent.h:426
PitchBendEvent()
Default constructor.
Definition: alsaevent.h:410
ALSA Event representing a change on some ALSA sequencer port on the system.
Definition: alsaevent.h:740
PortEvent()
Default constructor.
Definition: alsaevent.h:743
PortEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:748
int getPort() const
Gets the port number.
Definition: alsaevent.h:753
Event representing a MIDI program change event.
Definition: alsaevent.h:375
void setValue(const int v)
Sets the MIDI program number.
Definition: alsaevent.h:399
ProgramChangeEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:383
ProgramChangeEvent()
Default constructor.
Definition: alsaevent.h:378
int getValue() const
Gets the MIDI program number.
Definition: alsaevent.h:394
ALSA Event representing a queue control command.
Definition: alsaevent.h:552
QueueControlEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:560
void setSkewValue(const uint val)
Sets the skew value.
Definition: alsaevent.h:621
void setTickTime(const snd_seq_tick_time_t t)
Sets the musical time in ticks.
Definition: alsaevent.h:601
uint getPosition() const
Gets the queue position.
Definition: alsaevent.h:586
uint getSkewBase() const
Gets the skew base.
Definition: alsaevent.h:606
void setSkewBase(const uint base)
Sets the skew base, should be 65536.
Definition: alsaevent.h:611
snd_seq_tick_time_t getTickTime() const
Gets the musical time in ticks.
Definition: alsaevent.h:596
int getQueue() const
Gets the queue number.
Definition: alsaevent.h:566
void setQueue(const uchar q)
Sets the queue number.
Definition: alsaevent.h:571
uint getSkewValue() const
Gets the skew value.
Definition: alsaevent.h:616
int getValue() const
Gets the event's value.
Definition: alsaevent.h:576
void setPosition(const uint pos)
Sets the queue position.
Definition: alsaevent.h:591
QueueControlEvent()
Default constructor.
Definition: alsaevent.h:555
void setValue(const int val)
Sets the event's value.
Definition: alsaevent.h:581
Auxiliary class to remove events from an ALSA queue.
Definition: alsaevent.h:762
Base class for the event's hierarchy.
Definition: alsaevent.h:58
unsigned char getSourceClient() const
Gets the source client id.
Definition: alsaevent.h:79
unsigned int getRealTimeSecs() const
Gets the seconds of the event's real time.
Definition: alsaevent.h:97
unsigned char getTag() const
Gets the tag of the event.
Definition: alsaevent.h:115
snd_seq_tick_time_t getTick() const
Gets the tick time of the event.
Definition: alsaevent.h:91
unsigned char getSourcePort() const
Gets the source port id.
Definition: alsaevent.h:85
snd_seq_event_t * getHandle()
Gets the handle of the event.
Definition: alsaevent.h:125
snd_seq_event_type_t getSequencerType() const
Gets the sequencer event type.
Definition: alsaevent.h:71
unsigned int getRealTimeNanos() const
Gets the nanoseconds of the event's real time.
Definition: alsaevent.h:103
ALSA Event representing a subscription between two ALSA clients and ports.
Definition: alsaevent.h:673
bool subscribed() const
Returns true if the event was a subscribed port.
Definition: alsaevent.h:686
SubscriptionEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:681
int getDestClient() const
Gets the destination client number.
Definition: alsaevent.h:706
int getDestPort() const
Gets the destination port number.
Definition: alsaevent.h:711
SubscriptionEvent()
Default constructor.
Definition: alsaevent.h:676
int getSenderClient() const
Gets the sender client number.
Definition: alsaevent.h:696
int getSenderPort() const
Gets the sender port number.
Definition: alsaevent.h:701
bool unsubscribed() const
Returns true if the event was an unsubscribed port.
Definition: alsaevent.h:691
Event representing a MIDI system exclusive event.
Definition: alsaevent.h:498
SystemEvent()
Default constructor.
Definition: alsaevent.h:536
SystemEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:541
ALSA Event representing a tempo change for an ALSA queue.
Definition: alsaevent.h:656
TempoEvent()
Default constructor.
Definition: alsaevent.h:659
TempoEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:664
Event representing a SMF text event.
Definition: alsaevent.h:515
Generic event having a value property.
Definition: alsaevent.h:629
ValueEvent(const snd_seq_event_t *event)
Constructor from an ALSA event record.
Definition: alsaevent.h:637
void setValue(const int v)
Sets the event's value.
Definition: alsaevent.h:648
ValueEvent()
Default constructor.
Definition: alsaevent.h:632
int getValue() const
Gets the event's value.
Definition: alsaevent.h:643
Base class for variable length events.
Definition: alsaevent.h:471
unsigned int getLength() const
Gets the data length.
Definition: alsaevent.h:483
const char * getData() const
Gets the data pointer.
Definition: alsaevent.h:488
quint8 MidiByte
8-bit unsigned number to be used as a MIDI message parameter
Definition: alsaevent.h:43
const QEvent::Type SequencerEventType
Constant SequencerEventType is the QEvent::type() of any SequencerEvent object to be used to check th...
Definition: alsaevent.h:49
Drumstick visibility macros.
Drumstick common.
Definition: alsaclient.cpp:68