1 /***************************************************************************
2 ** **
3 ** Polyphone, a soundfont editor **
4 ** Copyright (C) 2013-2020 Davy Triponney **
5 ** **
6 ** This program is free software: you can redistribute it and/or modify **
7 ** it under the terms of the GNU General Public License as published by **
8 ** the Free Software Foundation, either version 3 of the License, or **
9 ** (at your option) any later version. **
10 ** **
11 ** This program is distributed in the hope that it will be useful, **
12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of **
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
14 ** GNU General Public License for more details. **
15 ** **
16 ** You should have received a copy of the GNU General Public License **
17 ** along with this program. If not, see http://www.gnu.org/licenses/. **
18 ** **
19 ****************************************************************************
20 ** Author: Davy Triponney **
21 ** Website/Contact: https://www.polyphone-soundfonts.com **
22 ** Date: 01.01.2013 **
23 ***************************************************************************/
24
25 #include "tooldefaultmod.h"
26 #include "tooldefaultmod_gui.h"
27 #include "tooldefaultmod_parameters.h"
28 #include "soundfontmanager.h"
29
ToolDefaultMod()30 ToolDefaultMod::ToolDefaultMod() : AbstractToolIterating (elementInst, new ToolDefaultMod_parameters(), new ToolDefaultMod_gui())
31 {
32
33 }
34
process(SoundfontManager * sm,EltID id,AbstractToolParameters * parameters)35 void ToolDefaultMod::process(SoundfontManager * sm, EltID id, AbstractToolParameters * parameters)
36 {
37 // Get the parameters
38 ToolDefaultMod_parameters * params = dynamic_cast<ToolDefaultMod_parameters *>(parameters);
39 QList<ModulatorData> mods = params->getModulators();
40
41 // For each element
42 id.typeElement = elementInstMod;
43 AttributeValue value;
44 foreach (ModulatorData mod, mods)
45 {
46 // Create a modulator
47 id.indexMod = sm->add(id);
48
49 // Configure it
50 value.sfModValue = mod.srcOper;
51 sm->set(id, champ_sfModSrcOper, value);
52
53 value.sfModValue = mod.amtSrcOper;
54 sm->set(id, champ_sfModAmtSrcOper, value);
55
56 value.shValue = mod.amount;
57 sm->set(id, champ_modAmount, value);
58
59 value.sfTransValue = mod.transOper;
60 sm->set(id, champ_sfModTransOper, value);
61
62 value.wValue = mod.destOper;
63 sm->set(id, champ_sfModDestOper, value);
64 }
65 }
66