-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChannelEvent.cpp
146 lines (108 loc) · 3.41 KB
/
ChannelEvent.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//
// Created by madsy on 19.03.17.
//
#include "ChannelEvent.h"
ChannelEvent::ChannelEvent(unsigned int timestamp, int ch) : MidiEvent(timestamp), pChannel(ch){
}
//ChEvtNoteOff
ChEvtNoteOff::ChEvtNoteOff(unsigned int timestamp, int ch, int k, int v) :
ChannelEvent(timestamp, ch), pKey(k), pVelocity(v){
}
//ChEvtNoteOn
ChEvtNoteOn::ChEvtNoteOn(unsigned int timestamp, int ch, int k, int v) :
ChannelEvent(timestamp, ch), pKey(k), pVelocity(v){
}
//ChEvtAfterTouch1
ChEvtAfterTouch1::ChEvtAfterTouch1(unsigned int timestamp, int ch, int k, int p) :
ChannelEvent(timestamp, ch), pKey(k), pPressure(p){
}
//ChEvtControlChange
ChEvtControlChange::ChEvtControlChange(unsigned int timestamp, int ch, int id, int val) :
ChannelEvent(timestamp, ch), pControllerID(id), pValue(val){
}
ChEvtProgramChange::ChEvtProgramChange(unsigned int timestamp, int ch, int patch) :
ChannelEvent(timestamp, ch), pPatch(patch){
}
ChEvtAfterTouch2::ChEvtAfterTouch2(unsigned int timestamp, int ch, int p) :
ChannelEvent(timestamp, ch), pPressure(p){
}
ChEvtPitchWheel::ChEvtPitchWheel(unsigned int timestamp, int ch, int v) :
ChannelEvent(timestamp, ch), pValue(v){
}
const char* notes[] = {
"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "b", "H"
};
static std::string noteToString(unsigned int key){
std::string note = std::string(notes[key % 12]);
char octave = '0' + (key/12u);
note += '-';
note += octave;
return note;
}
void ChannelEvent::print() {
//printf("ChannelEvent, Channel %u\t", this->getChannel() + 1);
}
unsigned int ChannelEvent::pGetChannelIndex() const {
return pChannel + 1;
}
void ChEvtNoteOff::print() {
ChannelEvent::print();
printf("NoteOff Event, Note %s, Velocity %u\n", noteToString(this->getKey()).c_str(), this->getVelocity());
}
void ChEvtNoteOn::print() {
ChannelEvent::print();
printf("NoteOn Event, Note %s, Velocity %u\n", noteToString(this->getKey()).c_str(), this->getVelocity());
}
void ChEvtAfterTouch1::print() {
ChannelEvent::print();
printf("AfterTouch Event, Note %s, Pressure %u\n", noteToString(this->getKey()).c_str(), this->getPressure());
}
void ChEvtControlChange::print() {
ChannelEvent::print();
printf("ControlChange Event, ControllerID %u, Value %u\n", this->getControllerID(), this->getValue());
}
void ChEvtProgramChange::print() {
ChannelEvent::print();
printf("ProgramChange Event, Patch Number %u\n", this->getPatchValue());
}
void ChEvtAfterTouch2::print() {
ChannelEvent::print();
printf("AfterTouch2 Event, Pressure %u\n", this->getPressure());
}
void ChEvtPitchWheel::print() {
ChannelEvent::print();
printf("PitchWheel Event, Position %u\n", this->getValue());
}
int ChEvtNoteOff::getKey() const {
return pKey;
}
int ChEvtNoteOff::getVelocity() const {
return pVelocity;
}
int ChEvtNoteOn::getVelocity() const {
return pVelocity;
}
int ChEvtNoteOn::getKey() const {
return pKey;
}
int ChEvtAfterTouch1::getKey() const {
return pKey;
}
int ChEvtAfterTouch1::getPressure() const {
return pPressure;
}
int ChEvtControlChange::getControllerID() const {
return pControllerID;
}
int ChEvtControlChange::getValue() const {
return pValue;
}
int ChEvtProgramChange::getPatchValue() const {
return pPatch;
}
int ChEvtAfterTouch2::getPressure() const {
return pPressure;
}
int ChEvtPitchWheel::getValue() const {
return pValue;
}