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