mirror of
https://github.com/LMMS/lmms.git
synced 2026-01-13 17:08:10 -05:00
111 lines
3.4 KiB
C++
111 lines
3.4 KiB
C++
/*
|
|
* PeakControllerEffectControls.cpp - controls for peakController effect
|
|
*
|
|
* Copyright (c) 2008 Paul Giblock <drfaygo/at/gmail/dot/com>
|
|
* Copyright (c) 2009-2011 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
|
*
|
|
* This file is part of LMMS - https://lmms.io
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This program 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
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* License along with this program (see COPYING); if not, write to the
|
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301 USA.
|
|
*
|
|
*/
|
|
|
|
|
|
#include <QDomElement>
|
|
|
|
#include "PeakControllerEffectControls.h"
|
|
#include "PeakControllerEffect.h"
|
|
#include "Song.h"
|
|
|
|
namespace lmms
|
|
{
|
|
|
|
|
|
PeakControllerEffectControls::
|
|
PeakControllerEffectControls( PeakControllerEffect * _eff ) :
|
|
EffectControls( _eff ),
|
|
m_effect( _eff ),
|
|
m_baseModel(0.5f, 0.f, 1.f, 0.001f, this, tr("Base value")),
|
|
m_amountModel(1.f, -1.f, 1.f, 0.005f, this, tr("Modulation amount")),
|
|
m_attackModel(0, 0, 0.999f, 0.001f, this, tr("Attack")),
|
|
m_decayModel(0, 0, 0.999f, 0.001f, this, tr("Release")),
|
|
m_tresholdModel(0, 0, 1.f, 0.001f, this, tr("Treshold")),
|
|
m_muteModel( false, this, tr( "Mute output" ) ),
|
|
m_absModel( true, this, tr("Absolute value") ),
|
|
m_amountMultModel(1.f, 0, 32, 0.2f, this, tr("Amount multiplicator"))
|
|
{
|
|
}
|
|
|
|
|
|
|
|
|
|
void PeakControllerEffectControls::loadSettings( const QDomElement & _this )
|
|
{
|
|
m_baseModel.loadSettings( _this, "base" );
|
|
m_effect->m_lastSample = m_baseModel.value(); //Set initial Peak Controller output to Base
|
|
m_amountModel.loadSettings( _this, "amount" );
|
|
m_muteModel.loadSettings( _this, "mute" );
|
|
|
|
m_attackModel.loadSettings( _this, "attack" );
|
|
m_decayModel.loadSettings( _this, "decay" );
|
|
|
|
m_absModel.loadSettings( _this, "abs" );
|
|
m_amountMultModel.loadSettings( _this, "amountmult" );
|
|
|
|
m_tresholdModel.loadSettings( _this, "treshold" );
|
|
|
|
/*If the peak controller effect is NOT loaded from project,
|
|
* m_effectId stored is useless.
|
|
* Reason to assign a random number to it:
|
|
* If the user clone the instrument, and m_effectId is cloned, and
|
|
* m_effectId is copied, then there would be two instruments
|
|
* having the same id.
|
|
*/
|
|
if( Engine::getSong()->isLoadingProject() == true )
|
|
{
|
|
m_effect->m_effectId = _this.attribute( "effectId" ).toInt();
|
|
}
|
|
else
|
|
{
|
|
// TODO: Fix possible collision
|
|
m_effect->m_effectId = rand();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
void PeakControllerEffectControls::saveSettings( QDomDocument & _doc,
|
|
QDomElement & _this )
|
|
{
|
|
_this.setAttribute( "effectId", m_effect->m_effectId );
|
|
|
|
m_baseModel.saveSettings( _doc, _this, "base" );
|
|
m_amountModel.saveSettings( _doc, _this, "amount" );
|
|
m_muteModel.saveSettings( _doc, _this, "mute" );
|
|
|
|
m_attackModel.saveSettings( _doc, _this, "attack" );
|
|
m_decayModel.saveSettings( _doc, _this, "decay" );
|
|
|
|
m_absModel.saveSettings( _doc, _this, "abs" );
|
|
m_amountMultModel.saveSettings( _doc, _this, "amountmult" );
|
|
|
|
m_tresholdModel.saveSettings( _doc, _this, "treshold" );
|
|
}
|
|
|
|
|
|
} // namespace lmms
|