-rw-r--r-- | include/midillo/MThd.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/include/midillo/MThd.h b/include/midillo/MThd.h new file mode 100644 index 0000000..20263cd --- a/dev/null +++ b/include/midillo/MThd.h | |||
@@ -0,0 +1,74 @@ | |||
1 | #ifndef __MIDILLO_MTHD_H | ||
2 | #define __MIDILLO_MTHD_H | ||
3 | |||
4 | #include <istream> | ||
5 | #include <ostream> | ||
6 | #include <midillo/chunk.h> | ||
7 | |||
8 | /** | ||
9 | * @file | ||
10 | * @brief the MThd_t -- MThd header chunk class | ||
11 | */ | ||
12 | |||
13 | namespace midillo { | ||
14 | using std::istream; | ||
15 | using std::ostream; | ||
16 | |||
17 | /** | ||
18 | * MThd header chunk container | ||
19 | */ | ||
20 | class MThd_t : public chunk_t { | ||
21 | public: | ||
22 | enum { | ||
23 | fmt_0 = 0, fmt_1 = 1, fmt_2 = 2, | ||
24 | fmt_singletrack = fmt_0, | ||
25 | fmt_multitrack = fmt_1, | ||
26 | fmt_tracksequence = fmt_2 | ||
27 | }; | ||
28 | /** | ||
29 | * SMF format. 0 for single track, 1 for multitrack, 2 for track | ||
30 | * sequence. | ||
31 | */ | ||
32 | int fmt; | ||
33 | /** | ||
34 | * Number of tracks in the file | ||
35 | */ | ||
36 | int ntracks; | ||
37 | /** | ||
38 | * The number of pulses per quarter note | ||
39 | */ | ||
40 | int division; | ||
41 | |||
42 | /** | ||
43 | * Load MThd chunk from the stream | ||
44 | * @param s input stream | ||
45 | */ | ||
46 | void load(istream& s); | ||
47 | |||
48 | /** | ||
49 | * Read MThd chunk data from the stream. This function assumes that | ||
50 | * header is already read. | ||
51 | * @param s input stream | ||
52 | */ | ||
53 | void load_data(istream& s); | ||
54 | |||
55 | /** | ||
56 | * Save MThd chunk to the stream | ||
57 | * @param s output stream | ||
58 | */ | ||
59 | void save(ostream& s) const; | ||
60 | |||
61 | /** | ||
62 | * Dump textual representation of MThd chunk to stream | ||
63 | * @param s output stream | ||
64 | */ | ||
65 | void dump(ostream& s) const; | ||
66 | }; | ||
67 | |||
68 | inline ostream& operator<<(ostream& s,const MThd_t& mthd) { | ||
69 | mthd.dump(s); return s; | ||
70 | } | ||
71 | |||
72 | } | ||
73 | |||
74 | #endif /* MIDILLO_MTHD_H */ | ||