drumstick 0.5.0
|
00001 /* 00002 Overture OVE File component 00003 Copyright (C) 2006-2010, Rui Fan <vanferry@gmail.com> 00004 00005 This library is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License along 00016 with this program; if not, write to the Free Software Foundation, Inc., 00017 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 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 } // namespace drumstick 00290 00293 #endif // DRUMSTICK_OVE_H