CLAM-Development
1.4.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
Data
Descriptors
Melody
MIDITypes.hxx
Go to the documentation of this file.
1
#ifndef __MIDITYPES__
2
#define __MIDITYPES__
3
4
#include <string>
5
#include "
DynamicType.hxx
"
6
#include "
DataTypes.hxx
"
7
#include "
List.hxx
"
8
#include "
Array.hxx
"
9
#include "
MIDIMelody.hxx
"
10
#include "
ProcessingData.hxx
"
11
12
namespace
CLAM
13
{
14
class
MIDIEvent
:
public
ProcessingData
15
{
16
public
:
17
DYNAMIC_TYPE_USING_INTERFACE
(
MIDIEvent
, 4,
ProcessingData
);
18
/* Event name */
19
DYN_ATTRIBUTE
(0,
public
, std::string, Name);
20
/* Time in seconds */
21
DYN_ATTRIBUTE
(1,
public
,
TTime
, Time);
22
/* flag to indicate that this is the last event */
23
DYN_ATTRIBUTE
(2,
public
,
bool
, Last);
24
/* Message */
25
DYN_ATTRIBUTE
(3,
public
,
Array<TMIDIByte>
, Message);
26
27
unsigned
Ticks
()
const
;
28
unsigned
TicksFromDuration
()
const
;
29
int
Length
()
const
;
30
31
bool
operator==
(
const
MIDIEvent
& ev) {
return
Ticks
()==ev.
Ticks
();}
32
bool
operator<
(
const
MIDIEvent
& ev) {
return
Ticks
()<ev.
Ticks
();}
33
bool
operator>
(
const
MIDIEvent
& ev) {
return
Ticks
()>ev.
Ticks
();}
34
bool
operator==
(
const
MIDIEvent
& ev)
const
{
return
Ticks
()==ev.
Ticks
();}
35
bool
operator<
(
const
MIDIEvent
& ev)
const
{
return
Ticks
()<ev.
Ticks
();}
36
bool
operator>
(
const
MIDIEvent
& ev)
const
{
return
Ticks
()>ev.
Ticks
();}
37
38
private
:
39
void
DefaultInit();
40
};
41
42
class
MIDITrack
:
public
ProcessingData
43
{
44
public
:
45
DYNAMIC_TYPE_USING_INTERFACE
(
MIDITrack
, 4,
ProcessingData
);
46
/* Track name */
47
DYN_ATTRIBUTE
(0,
public
, std::string, Name);
48
/* MIDI channels for notes in the melody */
49
DYN_ATTRIBUTE
(1,
public
,
List<int>
, Channels);
50
/* Event info list */
51
DYN_ATTRIBUTE
(2,
public
,
List<MIDIEvent>
, EventInfo);
52
/* Track melody */
53
DYN_ATTRIBUTE
(3,
public
,
MIDIMelody
, TrackMelody);
54
55
private
:
56
void
DefaultInit();
57
};
58
59
class
MIDISong
:
public
ProcessingData
60
{
61
public
:
62
DYNAMIC_TYPE_USING_INTERFACE
(
MIDISong
, 3,
ProcessingData
);
63
/* Song name */
64
DYN_ATTRIBUTE
(0,
public
, std::string, Name);
65
/* Song tracks */
66
DYN_ATTRIBUTE
(1,
public
,
Array<MIDITrack>
, Tracks);
67
/* Number of tracks */
68
DYN_ATTRIBUTE
(2,
public
,
int
, NumberOfTracks);
69
70
private
:
71
void
DefaultInit();
72
};
73
}
74
75
#endif
76
Generated by
1.8.1