12 void Notes::addNote(uint8_t pitch, uint8_t velocity)
15 for(
auto ¬e : notes) {
16 if(note.getPitch() == pitch) {
23 Note note(pitch, velocity);
24 notes.push_back(note);
26 for(
auto &observer : observers) {
27 observer->notify(PNoteObservable(
this));
28 observer->noteAdded(note);
33 void Notes::removeNote(uint8_t pitch)
38 auto notifyingPredicate = [
this, pitch](
Note note) {
39 if(note.getPitch() == pitch) {
40 for(
auto &observer : this->observers) {
41 observer->notify(PNoteObservable(
this));
42 observer->noteRemoved(note);
50 notes.erase(std::remove_if(notes.begin(), notes.end(), notifyingPredicate),
54 const std::vector<Note> Notes::getNotes()
const
59 void Notes::registerObserver(PNoteObserver &observer)
61 observers.push_back(observer);
64 void Notes::removeObserver(PNoteObserver &observer)
66 observers.erase(std::remove(observers.begin(), observers.end(), observer),