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
|
//=========================================================
// MusE
// Linux Music Editor
// $Id: midieditor.h,v 1.3.2.2 2009/02/02 21:38:00 terminator356 Exp $
// (C) Copyright 1999 Werner Schweer (ws@seh.de)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; version 2 of
// the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//=========================================================
#ifndef __MIDIEDITOR_H__
#define __MIDIEDITOR_H__
///#include "sig.h"
#include "al/sig.h"
#include "cobject.h"
#include <set>
class QGridLayout;
class QWidget;
namespace MusECore {
class Part;
class PartList;
class WavePart;
class Xml;
}
namespace MusEGui {
class CtrlEdit;
class EventCanvas;
class MTScale;
class ScrollScale;
class WaveView;
//---------------------------------------------------------
// MidiEditor
//---------------------------------------------------------
class MidiEditor : public TopWin {
Q_OBJECT
MusECore::PartList* _pl;
std::set<int> _parts;
int _curDrumInstrument; // currently selected instrument if drum
// editor
protected:
MusEGui::ScrollScale* hscroll;
MusEGui::ScrollScale* vscroll;
MusEGui::MTScale* time;
EventCanvas* canvas;
WaveView* wview;
std::list<CtrlEdit*> ctrlEditList;
int _raster;
QGridLayout* mainGrid;
QWidget* mainw;
virtual void readStatus(MusECore::Xml&);
virtual void writeStatus(int, MusECore::Xml&) const;
void writePartList(int, MusECore::Xml&) const;
void genPartlist();
private slots:
void addNewParts(const std::map< MusECore::Part*, std::set<MusECore::Part*> >&);
public slots:
void songChanged(int type);
void setCurDrumInstrument(int instr);
void horizontalZoomIn();
void horizontalZoomOut();
virtual void updateHScrollRange() { };
signals:
void curDrumInstrumentChanged(int);
public:
MidiEditor(ToplevelType t, int, MusECore::PartList*,
QWidget* parent = 0, const char* name = 0);
~MidiEditor();
///int rasterStep(unsigned tick) const { return sigmap.rasterStep(tick, _raster); }
///unsigned rasterVal(unsigned v) const { return sigmap.raster(v, _raster); }
///unsigned rasterVal1(unsigned v) const { return sigmap.raster1(v, _raster); }
///unsigned rasterVal2(unsigned v) const { return sigmap.raster2(v, _raster); }
int rasterStep(unsigned tick) const { return AL::sigmap.rasterStep(tick, _raster); }
unsigned rasterVal(unsigned v) const { return AL::sigmap.raster(v, _raster); }
unsigned rasterVal1(unsigned v) const { return AL::sigmap.raster1(v, _raster); }
unsigned rasterVal2(unsigned v) const { return AL::sigmap.raster2(v, _raster); }
int raster() const { return _raster; }
void setRaster(int val) { _raster = val; }
MusECore::PartList* parts() { return _pl; }
int curDrumInstrument() const { return _curDrumInstrument; }
MusECore::Part* curCanvasPart();
MusECore::WavePart* curWavePart();
void setCurCanvasPart(MusECore::Part*);
void addPart(MusECore::Part*);
};
} // namespace MusEGui
#endif
|