forked from hselasky/midipp
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmidipp_decode.h
144 lines (116 loc) · 3.6 KB
/
midipp_decode.h
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
/*-
* Copyright (c) 2010-2019 Hans Petter Selasky. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _MIDIPP_DECODE_H_
#define _MIDIPP_DECODE_H_
#include "midipp_chords.h"
class MppDecodeEditor : public QPlainTextEdit
{
public:
MppDecodeEditor(MppMainWindow *_mw) { mw = _mw; };
~MppDecodeEditor() {};
MppMainWindow *mw;
void mouseDoubleClickEvent(QMouseEvent *);
};
class MppDecodeCircle : public QWidget
{
Q_OBJECT;
enum { NMAX = 2 };
public:
MppDecodeCircle(MppDecodeTab *);
~MppDecodeCircle();
MppDecodeTab *ptab;
MppChord_t mask[NMAX];
QRect r_press[NMAX][12];
int r_key[NMAX][12];
MppChord_t r_mask[NMAX][12];
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void paintEvent(QPaintEvent *);
};
class MppDecodeTab : public QWidget
{
Q_OBJECT;
public:
MppDecodeTab(MppMainWindow *);
~MppDecodeTab();
QString getText();
void setText(QString);
uint8_t parseScoreChord(MppChordElement *);
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);
void round(int);
MppMainWindow *mw;
QGridLayout *gl;
/* Chord Selector */
MppGroupBox *gb;
QSplitter *split;
QLineEdit *lin_edit;
QLineEdit *lin_out;
QPushButton *but_rol_up;
QPushButton *but_rol_down;
QPushButton *but_mod_up;
QPushButton *but_mod_down;
QPushButton *but_step_up_half;
QPushButton *but_step_down_half;
QPushButton *but_step_up_one;
QPushButton *but_step_down_one;
QPushButton *but_round_12;
MppButtonMap *but_map_volume;
MppButtonMap *but_map_view;
QPushButton *but_play;
QPushButton *but_insert;
/* Chord Circle */
MppGroupBox *gb_dc;
MppDecodeCircle *wi_dc;
/* Chord Scratch Area */
MppGroupBox *gb_gen;
MppDecodeEditor *editor;
int chord_key;
int chord_bass;
int chord_step;
int chord_sharp;
int delta_v;
MppChord_t chord_mask;
public slots:
void handle_rol_up();
void handle_rol_down();
void handle_mod_up();
void handle_mod_down();
void handle_step_up_half();
void handle_step_down_half();
void handle_step_up_one();
void handle_step_down_one();
void handle_round_12();
void handle_play_press();
void handle_play_release();
void handle_insert();
void handle_parse();
void handle_refresh();
void handle_align(int);
};
extern const QString MppKeyStr(int key);
extern const QString MppKeyStrNoOctave(int key);
extern const QString MppBitsToString(const MppChord_t &, int);
#endif /* _MIDIPP_DECODE_H_ */