LMMS
Loading...
Searching...
No Matches
MidiFile.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the Water library.
5 Copyright (c) 2016 ROLI Ltd.
6 Copyright (C) 2017-2022 Filipe Coelho <falktx@falktx.com>
7
8 Permission is granted to use this software under the terms of the ISC license
9 http://www.isc.org/downloads/software-support-policy/isc-license/
10
11 Permission to use, copy, modify, and/or distribute this software for any
12 purpose with or without fee is hereby granted, provided that the above
13 copyright notice and this permission notice appear in all copies.
14
15 THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
16 TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
18 OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
19 USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
21 OF THIS SOFTWARE.
22
23 ==============================================================================
24*/
25
26#ifndef WATER_MIDIFILE_H_INCLUDED
27#define WATER_MIDIFILE_H_INCLUDED
28
29#include "MidiMessageSequence.h"
30
31namespace water {
32
33//==============================================================================
43{
44public:
45 //==============================================================================
48 MidiFile();
49
51 ~MidiFile();
52
54 MidiFile (const MidiFile& other);
55
57 MidiFile& operator= (const MidiFile& other);
58
59 //==============================================================================
63 size_t getNumTracks() const noexcept;
64
69 const MidiMessageSequence* getTrack (size_t index) const noexcept;
70
75 void addTrack (const MidiMessageSequence& trackSequence);
76
80 void clear();
81
94 short getTimeFormat() const noexcept;
95
105 void setTicksPerQuarterNote (int ticksPerQuarterNote) noexcept;
106
119 void setSmpteTimeFormat (int framesPerSecond,
120 int subframeResolution) noexcept;
121
122 //==============================================================================
127 void findAllTempoEvents (MidiMessageSequence& tempoChangeEvents) const;
128
133 void findAllTimeSigEvents (MidiMessageSequence& timeSigEvents) const;
134
138 void findAllKeySigEvents (MidiMessageSequence& keySigEvents) const;
139
143 double getLastTimestamp() const;
144
145 //==============================================================================
157 bool readFrom (InputStream& sourceStream);
158
165
166
167private:
168 //==============================================================================
171
172 void readNextTrack (const uint8*, int size);
173};
174
175}
176
177#endif // WATER_MIDIFILE_H_INCLUDED
Definition InputStream.h:42
bool readFrom(InputStream &sourceStream)
Definition MidiFile.cpp:248
void convertTimestampTicksToSeconds()
Definition MidiFile.cpp:333
double getLastTimestamp() const
Definition MidiFile.cpp:237
void clear()
Definition MidiFile.cpp:183
void findAllTimeSigEvents(MidiMessageSequence &timeSigEvents) const
Definition MidiFile.cpp:227
size_t getNumTracks() const noexcept
Definition MidiFile.cpp:189
MidiFile & operator=(const MidiFile &other)
Definition MidiFile.cpp:174
MidiFile()
Definition MidiFile.cpp:159
void readNextTrack(const uint8 *, int size)
Definition MidiFile.cpp:293
const MidiMessageSequence * getTrack(size_t index) const noexcept
Definition MidiFile.cpp:194
void setTicksPerQuarterNote(int ticksPerQuarterNote) noexcept
Definition MidiFile.cpp:210
void findAllKeySigEvents(MidiMessageSequence &keySigEvents) const
Definition MidiFile.cpp:232
void findAllTempoEvents(MidiMessageSequence &tempoChangeEvents) const
Definition MidiFile.cpp:222
short getTimeFormat() const noexcept
Definition MidiFile.cpp:205
void addTrack(const MidiMessageSequence &trackSequence)
Definition MidiFile.cpp:199
short timeFormat
Definition MidiFile.h:170
void setSmpteTimeFormat(int framesPerSecond, int subframeResolution) noexcept
Definition MidiFile.cpp:215
~MidiFile()
Definition MidiFile.cpp:164
OwnedArray< MidiMessageSequence > tracks
Definition MidiFile.h:169
Definition MidiMessageSequence.h:45
Definition OwnedArray.h:57
Definition AudioSampleBuffer.h:33
unsigned char uint8
Definition water.h:90
ulg size
Definition extract.c:2350