//============================================================================= // MuseScore // Music Composition & Notation // // Copyright (C) 2012 Werner Schweer // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 // as published by the Free Software Foundation and appearing in // the file LICENCE.GPL //============================================================================= #ifndef __SYNTHESIZERSTATE_H__ #define __SYNTHESIZERSTATE_H__ #include namespace Ms { class XmlWriter; class XmlReader; class SynthesizerState; //--------------------------------------------------------- // IdValue //--------------------------------------------------------- struct IdValue { int id; QString data; IdValue() {} IdValue(int _id, const QString& _data) : id(_id), data(_data) {} }; //--------------------------------------------------------- // SynthesizerGroup //--------------------------------------------------------- class SynthesizerGroup : public std::list { QString _name; public: const QString& name() const { return _name; } void setName(const QString& s) { _name = s; } SynthesizerGroup() : std::list() {} SynthesizerGroup(const char* n, std::list l) : std::list(l), _name(n) {} }; //--------------------------------------------------------- // SynthesizerState //--------------------------------------------------------- class SynthesizerState : public std::list { public: SynthesizerState(std::initializer_list l) { insert(end(), l.begin(), l.end()); } SynthesizerState() : std::list() {} void write(XmlWriter&) const; void read(XmlReader&); SynthesizerGroup group(const QString& name) const; bool isDefaultSynthSoundfont(); }; //--------------------------------------------------------- // default buildin SynthesizerState // used if synthesizer.xml does not exist or is not // readable //--------------------------------------------------------- static SynthesizerState defaultState = { { "master", { { 0, "Zita1" }, { 2, "0.1" }, { 3, "440" } }, }, { "Fluid", { { 0, "MuseScore_General.sf3" }, }, }, // { "Zerberus", { // { 0, "SalamanderGrandPiano.sfz" }, // }, // }, }; } // namespace Ms #endif