Mercurial > hg > svcore
comparison data/fileio/MIDIFileWriter.h @ 852:d6bd5751b8f6 tonioni_multi_transform
Add NoteExportable base class, use it in MIDI export (and also elsewhere in playback)
author | Chris Cannam |
---|---|
date | Mon, 02 Dec 2013 17:11:20 +0000 |
parents | 73537d900d4b |
children | c7e9afcbf070 |
comparison
equal
deleted
inserted
replaced
850:dba8a02b0413 | 852:d6bd5751b8f6 |
---|---|
30 #include <vector> | 30 #include <vector> |
31 #include <map> | 31 #include <map> |
32 #include <fstream> | 32 #include <fstream> |
33 | 33 |
34 class MIDIEvent; | 34 class MIDIEvent; |
35 class NoteModel; | 35 class NoteExportable; |
36 | 36 |
37 /** | 37 /** |
38 * Write a MIDI file. This includes file write code for generic | 38 * Write a MIDI file. This includes file write code for generic |
39 * simultaneous-track MIDI files, but the conversion stage only | 39 * simultaneous-track MIDI files, but the conversion stage only |
40 * supports a single-track MIDI file with fixed tempo, time signature | 40 * supports a single-track MIDI file with fixed tempo, time signature |
41 * and timing division. | 41 * and timing division. |
42 */ | 42 */ |
43 class MIDIFileWriter | 43 class MIDIFileWriter |
44 { | 44 { |
45 public: | 45 public: |
46 MIDIFileWriter(QString path, NoteModel *model, float tempo = 120.f); | 46 MIDIFileWriter(QString path, |
47 const NoteExportable *exportable, | |
48 int sampleRate, // used to convert exportable sample timings | |
49 float tempo = 120.f); | |
47 virtual ~MIDIFileWriter(); | 50 virtual ~MIDIFileWriter(); |
48 | 51 |
49 virtual bool isOK() const; | 52 virtual bool isOK() const; |
50 virtual QString getError() const; | 53 virtual QString getError() const; |
51 | 54 |
72 bool writeTrack(int track); | 75 bool writeTrack(int track); |
73 bool writeComposition(); | 76 bool writeComposition(); |
74 | 77 |
75 bool convert(); | 78 bool convert(); |
76 | 79 |
77 QString m_path; | 80 QString m_path; |
78 NoteModel *m_model; | 81 const NoteExportable *m_exportable; |
79 bool m_modelUsesHz; | 82 int m_sampleRate; |
80 float m_tempo; | 83 float m_tempo; |
81 int m_timingDivision; // pulses per quarter note | 84 int m_timingDivision; // pulses per quarter note |
82 MIDIFileFormatType m_format; | 85 MIDIFileFormatType m_format; |
83 unsigned int m_numberOfTracks; | 86 unsigned int m_numberOfTracks; |
84 | 87 |
85 MIDIComposition m_midiComposition; | 88 MIDIComposition m_midiComposition; |
86 | 89 |
87 std::ofstream *m_midiFile; | 90 std::ofstream *m_midiFile; |
88 QString m_error; | 91 QString m_error; |
89 }; | 92 }; |
90 | 93 |
91 #endif | 94 #endif |