22#ifndef DRUMSTICK_QSMF_H
23#define DRUMSTICK_QSMF_H
39#define MThd 0x4d546864
40#define MTrk 0x4d54726b
43#define meta_event 0xff
44#define sequence_number 0x00
45#define text_event 0x01
46#define copyright_notice 0x02
47#define sequence_name 0x03
48#define instrument_name 0x04
52#define forced_channel 0x20
53#define forced_port 0x21
54#define end_of_track 0x2f
56#define smpte_offset 0x54
57#define time_signature 0x58
58#define key_signature 0x59
59#define sequencer_specific 0x7f
64#define poly_aftertouch 0xa0
65#define control_change 0xb0
66#define program_chng 0xc0
67#define channel_aftertouch 0xd0
68#define pitch_wheel 0xe0
69#define system_exclusive 0xf0
70#define end_of_sysex 0xf7
72#define midi_command_mask 0xf0
73#define midi_channel_mask 0x0f
96 void writeMetaEvent(
long deltaTime,
int type,
const QByteArray& data);
97 void writeMetaEvent(
long deltaTime,
int type,
const QString& data);
102 void writeMidiEvent(
long deltaTime,
int type,
int chan,
int b1,
int b2);
103 void writeMidiEvent(
long deltaTime,
int type,
int chan,
const QByteArray& data);
104 void writeMidiEvent(
long deltaTime,
int type,
long len,
char* data);
295 void putByte(quint8 value);
298 quint16 to16bit(quint8 c1, quint8 c2);
299 quint32 to32bit(quint8 c1, quint8 c2, quint8 c3, quint8 c4);
302 void write16bit(quint16 data);
303 void write32bit(quint32 data);
304 void writeVarLen(quint64 value);
305 double ticksToSecs(quint64 ticks, quint16 division, quint64 tempo);
307 void readExpected(
const QString& s);
308 void addTempo(quint64 tempo, quint64 time);
310 void SMFError(
const QString& s);
311 void channelMessage(quint8 status, quint8 c1, quint8 c2);
313 void msgAdd(quint8 b);
314 void metaEvent(quint8 b);
316 void badByte(quint8 b,
int p);
317 quint8 lowerByte(quint16 x);
318 quint8 upperByte(quint16 x);
320 void writeHeaderChunk(
int format,
int ntracks,
int division);
321 void writeTrackChunk(
int track);
The QObject class is the base class of all Qt objects.
int getTracks()
Gets the number of tracks.
void signalSMFKeyPress(int chan, int pitch, int press)
Emitted after reading a Polyphonic Aftertouch message.
void setTextCodec(QTextCodec *codec)
Sets the text codec for text meta-events.
long getRealTime()
Gets the real time in seconds.
long getCurrentTempo()
Gets the current tempo.
void signalSMFforcedChannel(int channel)
Emitted after reading a Forced channel message.
void setDivision(int division)
Sets the resolution.
long getFilePos()
Gets the position in the SMF stream.
void signalSMFforcedPort(int port)
Emitted after reading a Forced port message.
void signalSMFTimeSig(int b0, int b1, int b2, int b3)
Emitted after reading a SMF Time signature message.
void signalSMFText(int typ, const QString &data)
Emitted after reading a SMF text message.
void signalSMFKeySig(int b0, int b1)
Emitted after reading a SMF Key Signature smessage.
long getCurrentTime()
Gets the current time in ticks.
void signalSMFChanPress(int chan, int press)
Emitted after reading a Channel Aftertouch message.
void setTracks(int tracks)
Sets the number of tracks.
void writeTimeSignature(long deltaTime, int num, int den, int cc, int bb)
Writes a Time Signature message.
void signalSMFTrackEnd()
Emitted after a track has finished.
void signalSMFNoteOn(int chan, int pitch, int vol)
Emitted after reading a Note On message.
void signalSMFTempo(int tempo)
Emitted after reading a Tempo Change message.
void signalSMFWriteTrack(int track)
Emitted to request the user to write a track.
QSmf(QObject *parent=0)
Constructor.
void signalSMFTrackStart()
Emitted after reading a track prefix.
void signalSMFError(const QString &errorStr)
Emitted for a SMF read or write error.
int getDivision()
Gets the resolution.
void writeToFile(const QString &fileName)
Writes a SMF stream to a disk file.
void signalSMFSeqSpecific(const QByteArray &data)
Emitted after reading a Sequencer specific message.
void signalSMFWriteTempoTrack()
Emitted to request the user to write the tempo track.
void signalSMFendOfTrack()
Emitted after reading a End-Of-Track message.
void writeSequenceNumber(long deltaTime, int seqnum)
Writes a MIDI Sequence number.
void signalSMFHeader(int format, int ntrks, int division)
Emitted after reading a SMF header.
void readFromStream(QDataStream *stream)
Reads a SMF stream.
void signalSMFProgram(int chan, int patch)
Emitted after reading a Program change message.
void signalSMFNoteOff(int chan, int pitch, int vol)
Emitted after reading a Note Off message.
void writeMetaEvent(long deltaTime, int type, const QByteArray &data)
Writes a variable length Meta Event.
void signalSMFSequenceNum(int seq)
Emitted after reading a Sequence number message.
void signalSMFMetaMisc(int typ, const QByteArray &data)
Emitted after reading any SMF Meta message.
QTextCodec * getTextCodec()
Gets the text codec used for text meta-events I/O.
void writeBpmTempo(long deltaTime, int tempo)
Writes a Tempo change message.
void readFromFile(const QString &fileName)
Reads a SMF stream from a disk file.
void signalSMFSysex(const QByteArray &data)
Emitted after reading a System Exclusive message.
void writeToStream(QDataStream *stream)
Writes a SMF stream.
void writeTempo(long deltaTime, long tempo)
Writes a Tempo change message.
void signalSMFCtlChange(int chan, int ctl, int value)
Emitted after reading a Control Change message.
void writeKeySignature(long deltaTime, int tone, int mode)
Writes a key Signature message.
void setFileFormat(int fileFormat)
Sets the SMF file format.
void signalSMFPitchBend(int chan, int value)
Emitted after reading a Bender message.
int getFileFormat()
Gets the SMF file format.
void writeMidiEvent(long deltaTime, int type, int chan, int b1)
Writes a MIDI message with a single parameter.
void signalSMFMetaUnregistered(int typ, const QByteArray &data)
Emitted after reading an unregistered SMF Meta message.
void signalSMFSmpte(int b0, int b1, int b2, int b3, int b4)
Emitted after reading a SMPT offset message.
Drumstick visibility macros.