MuseScore  3.4
Music composition and notation
instrtemplate.h
Go to the documentation of this file.
1 //=============================================================================
2 // MuseScore
3 // Music Composition & Notation
4 //
5 // Copyright (C) 2002-2011 Werner Schweer
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 // as published by the Free Software Foundation and appearing in
10 // the file LICENCE.GPL
11 //=============================================================================
12 
13 #ifndef __INSTRTEMPLATE_H__
14 #define __INSTRTEMPLATE_H__
15 
16 #include "mscore.h"
17 #include "instrument.h"
18 #include "clef.h"
19 #include "stringdata.h"
20 
21 namespace Ms {
22 
23 class XmlWriter;
24 class Part;
25 class Staff;
26 class StringData;
27 class StaffType;
28 
29 //---------------------------------------------------------
30 // InstrumentGenre
31 //---------------------------------------------------------
32 
34  public:
35  QString id;
36  QString name;
37 
39  void write(XmlWriter& xml) const;
40  void write1(XmlWriter& xml) const;
41  void read(XmlReader&);
42  };
43 
44 //---------------------------------------------------------
45 // InstrumentTemplate
46 //---------------------------------------------------------
47 
49  int staves; // 1 <= MAX_STAVES
50 
51  public:
52  QString id;
53  QString trackName;
56  QString musicXMLid;
57  QString description;
58 
59  char minPitchA; // pitch range playable by an amateur
60  char maxPitchA;
61  char minPitchP; // pitch range playable by professional
62  char maxPitchP;
63 
64  Interval transpose; // for transposing instruments
65 
68  bool useDrumset;
70 
72 
73  QList<NamedEventList> midiActions;
74  QList<MidiArticulation> articulation;
75  QList<Channel> channel;
76  QList<InstrumentGenre*> genres; //; list of genres this instrument belongs to
77 
78  ClefTypeList clefTypes[MAX_STAVES];
79  int staffLines[MAX_STAVES];
80  BracketType bracket[MAX_STAVES]; // bracket type (NO_BRACKET)
81  int bracketSpan[MAX_STAVES];
82  int barlineSpan[MAX_STAVES];
83  bool smallStaff[MAX_STAVES];
84 
85  bool extended; // belongs to extended instrument set if true
86 
88 
92  void init(const InstrumentTemplate&);
93  void linkGenre(const QString &);
94  void addGenre(QList<InstrumentGenre *>);
95  bool genreMember(const QString &);
96 
97  void setPitchRange(const QString& s, char* a, char* b) const;
98  void write(XmlWriter& xml) const;
99  void write1(XmlWriter& xml) const;
100  void read(XmlReader&);
101  int nstaves() const { return staves; }
102  void setStaves(int val) { staves = val; }
103  ClefTypeList clefType(int staffIdx) const;
104  };
105 
106 //---------------------------------------------------------
107 // InstrumentGroup
108 //---------------------------------------------------------
109 
111  QString id;
112  QString name;
113  bool extended; // belongs to extended instruments set if true
114  QList<InstrumentTemplate*> instrumentTemplates;
115  void read(XmlReader&);
116  void clear();
117 
118  InstrumentGroup() { extended = false; }
119  };
120 
121 extern QList<InstrumentGenre *> instrumentGenres;
122 extern QList<MidiArticulation> articulation;
123 extern QList<InstrumentGroup*> instrumentGroups;
124 extern void clearInstrumentTemplates();
125 extern bool loadInstrumentTemplates(const QString& instrTemplates);
126 extern bool saveInstrumentTemplates(const QString& instrTemplates);
127 extern InstrumentTemplate* searchTemplate(const QString& name);
128 extern InstrumentTemplate* searchTemplateForMusicXmlId(const QString& mxmlId);
129 extern ClefType defaultClef(int patch);
130 
131 } // namespace Ms
132 #endif
133 
void read(XmlReader &)
Definition: instrtemplate.cpp:760
Definition: xml.h:67
bool extended
Definition: instrtemplate.h:113
void clearInstrumentTemplates()
Definition: instrtemplate.cpp:625
Definition: instrtemplate.h:33
int nstaves() const
Definition: instrtemplate.h:101
QString musicXMLid
used in MusicXML 3.0
Definition: instrtemplate.h:56
char minPitchA
Definition: instrtemplate.h:59
void write(XmlWriter &xml) const
Definition: instrtemplate.cpp:748
StringData stringData
Definition: instrtemplate.h:71
QList< Channel > channel
Definition: instrtemplate.h:75
const StaffType * staffTypePreset
Definition: instrtemplate.h:67
void setStaves(int val)
Definition: instrtemplate.h:102
bool extended
Definition: instrtemplate.h:85
QString id
Definition: instrtemplate.h:35
QString name
Definition: instrtemplate.h:112
QList< InstrumentGenre * > genres
Definition: instrtemplate.h:76
StaffGroup
Definition: mscore.h:177
char minPitchP
Definition: instrtemplate.h:61
QList< InstrumentTemplate * > instrumentTemplates
Definition: instrtemplate.h:114
QString name
Definition: instrtemplate.h:36
Definition: clef.h:81
Definition: instrtemplate.h:110
Definition of classes Clef.
QString trackName
Definition: instrtemplate.h:53
Definition: stringdata.h:35
bool singleNoteDynamics
Definition: instrtemplate.h:87
Definition: drumset.h:68
InstrumentTemplate * searchTemplate(const QString &name)
Definition: instrtemplate.cpp:691
QList< InstrumentGroup * > instrumentGroups
Definition: instrtemplate.cpp:25
QString id
Definition: instrtemplate.h:52
StaffNameList longNames
shown on first system
Definition: instrtemplate.h:54
char maxPitchP
Definition: instrtemplate.h:62
QList< InstrumentGenre * > instrumentGenres
Definition: instrtemplate.cpp:27
bool useDrumset
Definition: instrtemplate.h:68
QString id
Definition: instrtemplate.h:111
Definition: interval.h:22
InstrumentTemplate * searchTemplateForMusicXmlId(const QString &mxmlId)
Definition: instrtemplate.cpp:706
InstrumentGroup()
Definition: instrtemplate.h:118
Definition: aeolus.cpp:26
StaffGroup staffGroup
Definition: instrtemplate.h:66
Definition: stafftype.h:173
int staves
Definition: instrtemplate.h:49
Definition: xml.h:218
QList< MidiArticulation > articulation
Definition: instrtemplate.h:74
Definition: xmlwriter.h:26
InstrumentGenre()
Definition: instrtemplate.h:38
QString description
a longer description of the instrument
Definition: instrtemplate.h:57
BracketType
Definition: mscore.h:107
Drumset * drumset
Definition: instrtemplate.h:69
bool saveInstrumentTemplates(const QString &instrTemplates)
Definition: instrtemplate.cpp:557
void write1(XmlWriter &xml) const
Definition: instrtemplate.cpp:755
StaffNameList shortNames
shown on followup systems
Definition: instrtemplate.h:55
char maxPitchA
Definition: instrtemplate.h:60
QList< NamedEventList > midiActions
Definition: instrtemplate.h:73
QList< MidiArticulation > articulation
Definition: instrtemplate.cpp:26
ClefType
Definition: clef.h:37
Definition: instrtemplate.h:48
Interval transpose
Definition: instrtemplate.h:64
Definition: instrument.h:59
ClefType defaultClef(int program)
Definition: instrtemplate.cpp:791
bool loadInstrumentTemplates(const QString &instrTemplates)
Definition: instrtemplate.cpp:640