00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef DRUMSTICK_OVE_H
00021 #define DRUMSTICK_OVE_H
00022
00023 #include "macros.h"
00024 #include <QObject>
00025
00026 namespace OVE {
00027 class Track;
00028 class Voice;
00029 class Measure;
00030 class MeasureData;
00031 class NoteContainer;
00032 }
00033
00041 namespace drumstick {
00042
00043 class MeasureToTick;
00044
00051 class DRUMSTICK_EXPORT QOve : public QObject {
00052 Q_OBJECT
00053
00054 public:
00055 QOve(QObject * parent = 0);
00056 virtual ~QOve();
00057
00058 void setTextCodecName(const QString& codec);
00059
00060 void readFromFile(const QString& fileName);
00061
00062 Q_SIGNALS:
00063
00069 void signalOVEError(const QString& errorStr);
00070
00077 void signalOVEHeader(int quarter, int trackCount);
00078
00082 void signalOVEEnd();
00083
00093 void signalOVENoteOn(int track, long tick, int channel, int pitch, int vol);
00094 void signalOVENoteOff(int track, long tick, int channel, int pitch, int vol);
00095
00105 void signalOVECtlChange(int track, long tick, int channel, int ctl, int value);
00106
00116 void signalOVEKeyPress(int track, long tick, int channel, int pitch, int press);
00117
00126 void signalOVEPitchBend(int track, long tick, int channel, int value);
00127
00136 void signalOVEProgram(int track, long tick, int channel, int patch);
00137
00146 void signalOVEChanPress(int track, long tick, int channel, int press);
00147
00155 void signalOVESysexEvent(int track, long tick, int bank);
00156
00166 void signalOVESysex(int bank, const QString& name, bool autosend, int port, const QByteArray& data);
00167
00175 void signalOVEText(int track, long tick, const QString& data);
00176
00185 void signalOVETimeSig(int bar, long tick, int num, int den);
00186
00194 void signalOVEKeySig(int bar, long tick, int alt);
00195
00205 void signalOVETempo(long tick, int tempo);
00206
00220 void signalOVENewTrack(const QString& name, int track, int channel,
00221 int pitch, int velocity, int port, bool selected, bool muted, bool loop);
00222
00230 void signalOVETrackPatch(int track, int channel, int patch);
00231
00239 void signalOVETrackBank(int track, int channel, int bank);
00240
00248 void signalOVETrackVol(int track, int channel, int vol);
00249
00258 void signalOVEChord(int track, long tick, const QString& name, const QByteArray& data);
00259
00268 void signalOVEExpression(int track, long time, int code, const QString& text);
00269
00270 private:
00271 void convertSong();
00272 void convertSignatures();
00273 void convertTrackHeader(OVE::Track* track, int trackNo);
00274 void convertMeasure(
00275 OVE::Track* track,
00276 int trackNo,
00277 const QList<OVE::Voice*>& voices,
00278 OVE::Measure* measure,
00279 OVE::MeasureData* measureData,
00280 int transpose,
00281 int offsetTick);
00282 void convertNotes(int trackNo, int measureTick, OVE::NoteContainer* container, int channel, int pitchShift);
00283
00284 private:
00285 class QOvePrivate;
00286 QOvePrivate* d;
00287 };
00288
00289 }
00290
00293 #endif // DRUMSTICK_OVE_H