diff options
Diffstat (limited to 'src/domloader.cc')
-rw-r--r-- | src/domloader.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/domloader.cc b/src/domloader.cc new file mode 100644 index 0000000..aa7d1e2 --- /dev/null +++ b/src/domloader.cc @@ -0,0 +1,68 @@ +/* -*- Mode: c++ -*- */ +/*************************************************************************** + * domloader.cc + * + * Sun Jun 10 17:39:01 CEST 2018 + * Copyright 2018 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DrumGizmo 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "domloader.h" + +#include "DGDOM.h" +#include "drumkit.h" + +#include "cpp11fix.h" + +DOMLoader::DOMLoader(Settings& settings, Random& random) + : settings(settings) + , random(random) +{ +} + +bool DOMLoader::loadDom(const DrumkitDOM& dom, + const std::vector<InstrumentDOM>& instrumentdoms, + DrumKit& drumkit) +{ + drumkit._name = dom.name; + drumkit._description = dom.description; + drumkit._samplerate = dom.samplerate; + + for(const auto& channel: dom.channels) + { + drumkit.channels.emplace_back(); + drumkit.channels.back().name = channel.name; + drumkit.channels.back().num = drumkit.channels.size() - 1; + } + + for(const auto& instrumentref : dom.instruments) + { + auto ptr = std::make_unique<Instrument>(settings, random); + ptr->setGroup(instrumentref.group); + + //InstrumentParser parser(*ptr, settings); + //parser.parseFile(path + "/" + instr_file); + + // Transfer ownership to the DrumKit object. + drumkit.instruments.emplace_back(std::move(ptr)); + } + + return true; +} |