MuseScore  3.4
Music composition and notation
pianolevelsfilter.h
Go to the documentation of this file.
1 //=============================================================================
2 // MusE Score
3 // Linux Music Score Editor
4 //
5 // Copyright (C) 2009 Werner Schweer and others
6 //
7 // This program is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License version 2.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 //=============================================================================
19 
20 #ifndef __PIANOLEVELSFILTER_H__
21 #define __PIANOLEVELSFILTER_H__
22 
23 #include <QString>
24 
25 namespace Ms {
26 
27 class Note;
28 class NoteEvent;
29 class Staff;
30 
31 
32 //---------------------------------------------------------
33 // PianoLevelsFilter
34 // Manage note/event data for different views when drawing in the PianoLevels window
35 //---------------------------------------------------------
36 
38 {
39 public:
41 
42  virtual QString name() = 0;
43  virtual int maxRange() = 0;
44  virtual int minRange() = 0;
45  virtual int divisionGap() = 0; //Vertical guide line separation gap
46  virtual bool isPerEvent() = 0;
47  virtual int value(Staff* staff, Note* note, NoteEvent* evt) = 0;
48  virtual void setValue(Staff* staff, Note* note, NoteEvent* evt, int value) = 0;
49 };
50 
51 
52 //---------------------------------------------------------
53 // PianoLevelFilterOnTime
54 //---------------------------------------------------------
55 
57 {
58 public:
59  QString name() override { return "On Time"; }
60  int maxRange() override { return 1000; }
61  int minRange() override { return -1000; }
62  int divisionGap() override { return 250; }
63  bool isPerEvent() override { return true; }
64  int value(Staff* staff, Note* note, NoteEvent* evt) override;
65  void setValue(Staff* staff, Note* note, NoteEvent* evt, int value) override;
66 };
67 
68 
69 //---------------------------------------------------------
70 // PianoLevelFilterLen
71 //---------------------------------------------------------
72 
73 
75 {
76 public:
77  QString name() override { return "Length"; }
78  int maxRange() override { return 1000; }
79  int minRange() override { return 0; }
80  int divisionGap() override { return 250; }
81  bool isPerEvent() override { return true; }
82  int value(Staff* staff, Note* note, NoteEvent* evt) override;
83  void setValue(Staff* staff, Note* note, NoteEvent* evt, int value) override;
84 };
85 
86 
87 //---------------------------------------------------------
88 // PianoLevelFilterVeloOffset
89 //---------------------------------------------------------
90 
91 
93 {
94 public:
95  QString name() override { return "Velocity Offset"; }
96  int maxRange() override { return 200; }
97  int minRange() override { return -200; }
98  int divisionGap() override { return 100; }
99  bool isPerEvent() override { return false; }
100  int value(Staff* staff, Note* note, NoteEvent* evt) override;
101  void setValue(Staff* staff, Note* note, NoteEvent* evt, int value) override;
102 };
103 
104 
105 //---------------------------------------------------------
106 // PianoLevelFilterVeloUser
107 //---------------------------------------------------------
108 
109 
111 {
112 public:
113  QString name() override { return "Velocity Absolute"; }
114  int maxRange() override { return 128; }
115  int minRange() override { return 0; }
116  int divisionGap() override { return 32; }
117  bool isPerEvent() override { return false; }
118  int value(Staff* staff, Note* note, NoteEvent* evt) override;
119  void setValue(Staff* staff, Note* note, NoteEvent* evt, int value) override;
120 };
121 
122 }
123 
124 #endif // __PIANOLEVELSFILTER_H__
int divisionGap() override
Definition: pianolevelsfilter.h:80
QString name() override
Definition: pianolevelsfilter.h:113
Global staff data not directly related to drawing.
Definition: staff.h:62
Definition: noteevent.h:25
Definition: pianolevelsfilter.h:110
virtual int divisionGap()=0
int maxRange() override
Definition: pianolevelsfilter.h:78
QString name() override
Definition: pianolevelsfilter.h:95
static PianoLevelsFilter * FILTER_LIST[]
Definition: pianolevelsfilter.h:40
int maxRange() override
Definition: pianolevelsfilter.h:96
bool isPerEvent() override
Definition: pianolevelsfilter.h:63
virtual int value(Staff *staff, Note *note, NoteEvent *evt)=0
int maxRange() override
Definition: pianolevelsfilter.h:114
int divisionGap() override
Definition: pianolevelsfilter.h:116
Definition: pianolevelsfilter.h:92
Definition: pianolevelsfilter.h:74
bool isPerEvent() override
Definition: pianolevelsfilter.h:99
Definition: pianolevelsfilter.h:56
Definition: aeolus.cpp:26
QString name() override
Definition: pianolevelsfilter.h:77
bool isPerEvent() override
Definition: pianolevelsfilter.h:81
int minRange() override
Definition: pianolevelsfilter.h:115
virtual int maxRange()=0
int minRange() override
Definition: pianolevelsfilter.h:61
virtual bool isPerEvent()=0
int divisionGap() override
Definition: pianolevelsfilter.h:98
Graphic representation of a note.
Definition: note.h:212
int minRange() override
Definition: pianolevelsfilter.h:97
int maxRange() override
Definition: pianolevelsfilter.h:60
virtual int minRange()=0
int minRange() override
Definition: pianolevelsfilter.h:79
virtual QString name()=0
bool isPerEvent() override
Definition: pianolevelsfilter.h:117
QString name() override
Definition: pianolevelsfilter.h:59
int divisionGap() override
Definition: pianolevelsfilter.h:62
Definition: pianolevelsfilter.h:37
virtual void setValue(Staff *staff, Note *note, NoteEvent *evt, int value)=0