20 #ifndef DRUMSTICK_ALSAEVENT_H
21 #define DRUMSTICK_ALSAEVENT_H
40 const QEvent::Type SequencerEventType = QEvent::Type(QEvent::User + 4154);
45 #define CLONE_EVENT_DECLARATION(T) virtual T* clone() { return new T(&m_event); }
63 void setSequencerType(
const snd_seq_event_type_t eventType);
70 void setDestination(
const unsigned char client,
const unsigned char port);
71 void setSource(
const unsigned char port);
89 snd_seq_tick_time_t
getTick()
const {
return m_event.time.tick; }
102 void setSubscribers();
105 void scheduleTick(
const int queue,
const int tick,
const bool relative);
106 void scheduleReal(
const int queue,
const ulong secs,
const ulong nanos,
const bool relative);
107 void setPriority(
const bool high);
113 unsigned char getTag()
const {
return m_event.tag; }
114 void setTag(
const unsigned char aTag);
115 unsigned int getRaw32(
const unsigned int n)
const;
116 void setRaw32(
const unsigned int n,
const unsigned int value);
117 unsigned char getRaw8(
const unsigned int n)
const;
118 void setRaw8(
const unsigned int n,
const unsigned char value);
124 int getEncodedLength();
136 void free() __attribute__((deprecated));
142 snd_seq_event_t m_event;
160 void setChannel(
const MidiByte c) { m_event.data.note.channel = (c & 0xf); }
184 int getKey()
const {
return m_event.data.note.note; }
190 void setKey(
const MidiByte b) { m_event.data.note.note = b; }
202 void setVelocity(
const MidiByte b) { m_event.data.note.velocity = b; }
218 NoteEvent(
const int ch,
const int key,
const int vel,
const int dur);
230 void setDuration(
const ulong d) { m_event.data.note.duration = d; }
245 NoteOnEvent(
const int ch,
const int key,
const int vel);
260 NoteOffEvent(
const int ch,
const int key,
const int vel);
296 uint
getParam()
const {
return m_event.data.control.param; }
302 void setParam(
const uint p ) { m_event.data.control.param = p; }
308 int getValue()
const {
return m_event.data.control.value; }
314 void setValue(
const int v ) { m_event.data.control.value = v; }
331 int getValue()
const {
return m_event.data.control.value; }
333 void setValue(
const int v ) { m_event.data.control.value = v; }
350 int getValue()
const {
return m_event.data.control.value; }
352 void setValue(
const int v ) { m_event.data.control.value = v; }
369 int getValue()
const {
return m_event.data.control.value; }
371 void setValue(
const int v ) { m_event.data.control.value = v; }
389 unsigned int getLength()
const {
return m_event.data.ext.len; }
391 const char*
getData()
const {
return static_cast<const char*
>(m_event.data.ext.ptr); }
408 SysExEvent(
const unsigned int datalen,
char* dataptr);
424 explicit TextEvent(
const QString& text,
const int textType = 1);
426 TextEvent(
const unsigned int datalen,
char* dataptr);
427 QString getText()
const;
428 int getTextType()
const;
462 QueueControlEvent(
const snd_seq_event_type_t type,
const int queue,
const int value);
464 int getQueue()
const {
return m_event.data.queue.queue; }
466 void setQueue(
const uchar q) { m_event.data.queue.queue = q; }
468 int getValue()
const {
return m_event.data.queue.param.value; }
470 void setValue(
const int val) { m_event.data.queue.param.value = val; }
472 uint
getPosition()
const {
return m_event.data.queue.param.position; }
474 void setPosition(
const uint pos) { m_event.data.queue.param.position = pos; }
476 snd_seq_tick_time_t
getTickTime()
const {
return m_event.data.queue.param.time.tick; }
478 void setTickTime(
const snd_seq_tick_time_t t) { m_event.data.queue.param.time.tick = t; }
480 uint
getSkewBase()
const {
return m_event.data.queue.param.skew.base; }
482 void setSkewBase(
const uint base) { m_event.data.queue.param.skew.base = base; }
484 uint
getSkewValue()
const {
return m_event.data.queue.param.skew.value; }
486 void setSkewValue(
const uint val) {m_event.data.queue.param.skew.value = val; }
501 ValueEvent(
const snd_seq_event_type_t type,
const int val);
503 int getValue()
const {
return m_event.data.control.value; }
505 void setValue(
const int v ) { m_event.data.control.value = v; }
536 bool subscribed()
const {
return (m_event.type == SND_SEQ_EVENT_PORT_SUBSCRIBED); }
538 bool unsubscribed()
const {
return (m_event.type == SND_SEQ_EVENT_PORT_UNSUBSCRIBED); }
546 int getDestPort()
const {
return m_event.data.connect.dest.port; }
561 int getClient()
const {
return m_event.data.addr.client; }
577 int getPort()
const {
return m_event.data.addr.port; }
599 int getSizeOfInfo()
const;
602 unsigned int getCondition();
603 const snd_seq_addr_t* getDest();
607 const snd_seq_timestamp_t* getTime();
608 void setChannel(
int chan);
609 void setCondition(
unsigned int cond);
610 void setDest(
const snd_seq_addr_t* dest);
611 void setEventType(
int type);
612 void setQueue(
int queue);
613 void setTag(
int tag);
614 void setTime(
const snd_seq_timestamp_t* time);
617 snd_seq_remove_events_t* m_Info;
631 long decode(
unsigned char *buf,
633 const snd_seq_event_t *ev);
634 long encode(
const unsigned char *buf,
636 snd_seq_event_t *ev);
638 snd_seq_event_t *ev);
639 void enableRunningStatus(
bool enable);
642 void resizeBuffer(
int bufsize);
644 snd_midi_event_t* m_Info;
651 #endif //DRUMSTICK_ALSAEVENT_H