blob: 0bce68b83fefe6be03b5a6eec6c6c7f52b130a2f (
plain)
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
|
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
/*
Rosegarden
A MIDI and audio sequencer and musical notation editor.
This program is Copyright 2000-2008
Guillaume Laurent <glaurent@telegraph-road.org>,
Chris Cannam <cannam@all-day-breakfast.com>,
Richard Bown <richard.bown@ferventsoftware.com>
The moral rights of Guillaume Laurent, Chris Cannam, and Richard
Bown to claim authorship of this work have been asserted.
Other copyrights also apply to some parts of this work. Please
see the AUTHORS file and individual file headers for details.
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; either version 2 of the
License, or (at your option) any later version. See the file
COPYING included with this distribution for more information.
*/
#ifndef _RG_HYDROGENXMLHANDLER_H_
#define _RG_HYDROGENXMLHANDLER_H_
#include "HydrogenLoader.h"
#include "base/MidiProgram.h"
#include "base/Track.h"
#include <string>
#include <qstring.h>
#include <vector>
#include <qxml.h>
class QXmlAttributes;
namespace Rosegarden
{
class Segment;
class Composition;
class HydrogenXMLHandler : public QXmlDefaultHandler
{
public:
HydrogenXMLHandler(Composition *comp,
InstrumentId drumInstrument = MidiInstrumentBase + 9);
/**
* Overloaded handler functions
*/
virtual bool startDocument();
virtual bool startElement(const QString& namespaceURI,
const QString& localName,
const QString& qName,
const QXmlAttributes& atts);
virtual bool endElement(const QString& namespaceURI,
const QString& localName,
const QString& qName);
virtual bool characters(const QString& ch);
virtual bool endDocument ();
protected:
Composition *m_composition;
InstrumentId m_drumInstrument;
bool m_inNote;
bool m_inInstrument;
bool m_inPattern;
bool m_inSequence;
// Pattern attributes
//
std::string m_patternName;
int m_patternSize;
// Sequence attributes
//
std::string m_sequenceName;
// Note attributes
//
int m_position;
double m_velocity;
double m_panL;
double m_panR;
double m_pitch;
int m_instrument;
// Instrument attributes
//
int m_id;
bool m_muted;
std::vector<double> m_instrumentVolumes;
std::string m_fileName;
// Global attributes
//
double m_bpm;
double m_volume;
std::string m_name;
std::string m_author;
std::string m_notes;
bool m_songMode; // Song mode or pattern mode?
std::string m_version;
//
QString m_currentProperty;
Segment *m_segment;
TrackId m_currentTrackNb;
bool m_segmentAdded;
int m_currentBar;
bool m_newSegment;
SegmentMap m_segmentMap;
};
}
#endif
|