From 30940fc11277985fb4ca7de2863f46404ddb3aaa Mon Sep 17 00:00:00 2001 From: Vesa Date: Tue, 11 Feb 2014 10:11:29 +0200 Subject: [PATCH] Initial commit - copied files from bassbooster to modify into new plugin --- plugins/CMakeLists.txt | 1 + plugins/waveshaper/CMakeLists.txt | 3 + plugins/waveshaper/artwork.png | Bin 0 -> 12823 bytes plugins/waveshaper/logo.png | Bin 0 -> 3225 bytes plugins/waveshaper/waveshaper.cpp | 114 ++++++++++++++++++ plugins/waveshaper/waveshaper.h | 64 ++++++++++ .../waveshaper/waveshaper_control_dialog.cpp | 74 ++++++++++++ .../waveshaper/waveshaper_control_dialog.h | 45 +++++++ plugins/waveshaper/waveshaper_controls.cpp | 110 +++++++++++++++++ plugins/waveshaper/waveshaper_controls.h | 80 ++++++++++++ 10 files changed, 491 insertions(+) create mode 100644 plugins/waveshaper/CMakeLists.txt create mode 100644 plugins/waveshaper/artwork.png create mode 100644 plugins/waveshaper/logo.png create mode 100644 plugins/waveshaper/waveshaper.cpp create mode 100644 plugins/waveshaper/waveshaper.h create mode 100644 plugins/waveshaper/waveshaper_control_dialog.cpp create mode 100644 plugins/waveshaper/waveshaper_control_dialog.h create mode 100644 plugins/waveshaper/waveshaper_controls.cpp create mode 100644 plugins/waveshaper/waveshaper_controls.h diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 6f315b792..01aa7868b 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -25,5 +25,6 @@ ADD_SUBDIRECTORY(triple_oscillator) ADD_SUBDIRECTORY(vestige) ADD_SUBDIRECTORY(vst_base) ADD_SUBDIRECTORY(vst_effect) +ADD_SUBDIRECTORY(waveshaper) ADD_SUBDIRECTORY(vibed) ADD_SUBDIRECTORY(zynaddsubfx) diff --git a/plugins/waveshaper/CMakeLists.txt b/plugins/waveshaper/CMakeLists.txt new file mode 100644 index 000000000..f4b4bc952 --- /dev/null +++ b/plugins/waveshaper/CMakeLists.txt @@ -0,0 +1,3 @@ +INCLUDE(BuildPlugin) + +BUILD_PLUGIN(waveshaper waveshaper.cpp waveshaper_controls.cpp waveshaper_control_dialog.cpp MOCFILES waveshaper_controls.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png") diff --git a/plugins/waveshaper/artwork.png b/plugins/waveshaper/artwork.png new file mode 100644 index 0000000000000000000000000000000000000000..23e2be7b34a2762a9d72d1e1e85a1e9aaa43fb5c GIT binary patch literal 12823 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 X&wXgr*p~?W2M3(Iw6avWgrV>MYdPk{ literal 0 HcmV?d00001 diff --git a/plugins/waveshaper/logo.png b/plugins/waveshaper/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..89e9f3680118931dd86f065a8f6bc0b4c631a585 GIT binary patch literal 3225 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 + * Copyright (c) 2006-2009 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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 "bass_booster.h" + +#include "embed.cpp" + + +extern "C" +{ + +Plugin::Descriptor PLUGIN_EXPORT waveshaper_plugin_descriptor = +{ + STRINGIFY( PLUGIN_NAME ), + "BassBooster Effect", + QT_TRANSLATE_NOOP( "pluginBrowser", + "plugin for boosting bass" ), + "Tobias Doerffel ", + 0x0100, + Plugin::Effect, + new PluginPixmapLoader( "logo" ), + NULL, + NULL +} ; + +} + + + +bassBoosterEffect::bassBoosterEffect( Model * _parent, + const Descriptor::SubPluginFeatures::Key * _key ) : + Effect( &waveshaper_plugin_descriptor, _parent, _key ), + m_bbFX( effectLib::fastBassBoost( 70.0f, 1.0f, 2.8f ) ), + m_bbControls( this ) +{ +} + + + + +bassBoosterEffect::~bassBoosterEffect() +{ +} + + + + +bool bassBoosterEffect::processAudioBuffer( sampleFrame * _buf, + const fpp_t _frames ) +{ + if( !isEnabled() || !isRunning () ) + { + return( false ); + } + + double out_sum = 0.0; + const float d = dryLevel(); + const float w = wetLevel(); + for( fpp_t f = 0; f < _frames; ++f ) + { + sample_t s[2] = { _buf[f][0], _buf[f][1] }; + m_bbFX.nextSample( s[0], s[1] ); + + _buf[f][0] = d * _buf[f][0] + w * s[0]; + _buf[f][1] = d * _buf[f][1] + w * s[1]; + + out_sum += _buf[f][0]*_buf[f][0] + _buf[f][1]*_buf[f][1]; + } + + checkGate( out_sum / _frames ); + + return( isRunning() ); +} + + + + + +extern "C" +{ + +// necessary for getting instance out of shared lib +Plugin * PLUGIN_EXPORT lmms_plugin_main( Model * _parent, void * _data ) +{ + return( new bassBoosterEffect( _parent, + static_cast( + _data ) ) ); +} + +} + diff --git a/plugins/waveshaper/waveshaper.h b/plugins/waveshaper/waveshaper.h new file mode 100644 index 000000000..90d8f2a55 --- /dev/null +++ b/plugins/waveshaper/waveshaper.h @@ -0,0 +1,64 @@ +/* + * bass_booster.h - bass-booster-effect-plugin + * + * * Copyright * (c) 2006-2008 Vesa Kivimäki + * Copyright (c) 2006-2008 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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. + * + */ + + +#ifndef _BASS_BOOSTER_H +#define _BASS_BOOSTER_H + +#include "Effect.h" +#include "effect_lib.h" +#include "waveshaper_controls.h" + + + +class bassBoosterEffect : public Effect +{ +public: + bassBoosterEffect( Model * _parent, + const Descriptor::SubPluginFeatures::Key * _key ); + virtual ~bassBoosterEffect(); + virtual bool processAudioBuffer( sampleFrame * _buf, + const fpp_t _frames ); + + virtual EffectControls * controls() + { + return( &m_bbControls ); + } + + +private: + effectLib::monoToStereoAdaptor m_bbFX; + + bassBoosterControls m_bbControls; + + friend class bassBoosterControls; + +} ; + + + + + +#endif diff --git a/plugins/waveshaper/waveshaper_control_dialog.cpp b/plugins/waveshaper/waveshaper_control_dialog.cpp new file mode 100644 index 000000000..d7b16b232 --- /dev/null +++ b/plugins/waveshaper/waveshaper_control_dialog.cpp @@ -0,0 +1,74 @@ +/* + * waveshaper_control_dialog.cpp - control-dialog for waveshaper-effect + * + * Copyright * (c) 2006-2008 Vesa Kivimäki + * Copyright * (c) 2006-2008 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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 + +#include "waveshaper_control_dialog.h" +#include "waveshaper_controls.h" +#include "embed.h" + + + +bassBoosterControlDialog::bassBoosterControlDialog( + bassBoosterControls * _controls ) : + EffectControlDialog( _controls ) +{ + setAutoFillBackground( true ); + QPalette pal; + pal.setBrush( backgroundRole(), + PLUGIN_NAME::getIconPixmap( "artwork" ) ); + setPalette( pal ); + setFixedSize( 120, 104 ); + + QVBoxLayout * tl = new QVBoxLayout( this ); + tl->addSpacing( 30 ); + + QHBoxLayout * l = new QHBoxLayout; + + knob * freqKnob = new knob( knobBright_26, this); + freqKnob->setModel( &_controls->m_freqModel ); + freqKnob->setLabel( tr( "FREQ" ) ); + freqKnob->setHintText( tr( "Frequency:" ) + " ", "Hz" ); + + knob * gainKnob = new knob( knobBright_26, this ); + gainKnob->setModel( &_controls->m_gainModel ); + gainKnob->setLabel( tr( "GAIN" ) ); + gainKnob->setHintText( tr( "Gain:" ) + " ", "" ); + + knob * ratioKnob = new knob( knobBright_26, this ); + ratioKnob->setModel( &_controls->m_ratioModel ); + ratioKnob->setLabel( tr( "RATIO" ) ); + ratioKnob->setHintText( tr( "Ratio:" ) + " ", "" ); + + l->addWidget( freqKnob ); + l->addWidget( gainKnob ); + l->addWidget( ratioKnob ); + + tl->addLayout( l ); + setLayout( tl ); +} + + diff --git a/plugins/waveshaper/waveshaper_control_dialog.h b/plugins/waveshaper/waveshaper_control_dialog.h new file mode 100644 index 000000000..fe11fd5e0 --- /dev/null +++ b/plugins/waveshaper/waveshaper_control_dialog.h @@ -0,0 +1,45 @@ +/* + * waveshaper_control_dialog.h - control-dialog for waveshaper-effect + * + * * Copyright * (c) 2006-2008 Vesa Kivimäki + * Copyright (c) 2006-2008 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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. + * + */ + +#ifndef _WAVESHAPER_CONTROL_DIALOG_H +#define _WAVESHAPER_CONTROL_DIALOG_H + +#include "EffectControlDialog.h" + + +class bassBoosterControls; + + +class bassBoosterControlDialog : public EffectControlDialog +{ +public: + bassBoosterControlDialog( bassBoosterControls * _controls ); + virtual ~bassBoosterControlDialog() + { + } + +} ; + +#endif diff --git a/plugins/waveshaper/waveshaper_controls.cpp b/plugins/waveshaper/waveshaper_controls.cpp new file mode 100644 index 000000000..c675ea044 --- /dev/null +++ b/plugins/waveshaper/waveshaper_controls.cpp @@ -0,0 +1,110 @@ +/* + * waveshaper_controls.cpp - controls for waveshaper-effect + * + * Copyright * (c) 2006-2008 Vesa Kivimäki + * Copyright (c) 2008 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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 + +#include "waveshaper_controls.h" +#include "bass_booster.h" + + + +bassBoosterControls::bassBoosterControls( bassBoosterEffect * _eff ) : + EffectControls( _eff ), + m_effect( _eff ), + m_freqModel( 100.0f, 50.0f, 200.0f, 1.0f, this, tr( "Frequency" ) ), + m_gainModel( 1.0f, 0.1f, 5.0f, 0.05f, this, tr( "Gain" ) ), + m_ratioModel( 2.0f, 0.1f, 10.0f, 0.1f, this, tr( "Ratio" ) ) +{ + connect( &m_freqModel, SIGNAL( dataChanged() ), + this, SLOT( changeFrequency() ) ); + + connect( &m_gainModel, SIGNAL( dataChanged() ), + this, SLOT( changeGain() ) ); + + connect( &m_ratioModel, SIGNAL( dataChanged() ), + this, SLOT( changeRatio() ) ); + + connect( engine::mixer(), SIGNAL( sampleRateChanged() ), + this, SLOT( changeFrequency() ) ); + changeFrequency(); + changeGain(); + changeRatio(); +} + + + + +void bassBoosterControls::changeFrequency() +{ + const sample_t fac = engine::mixer()->processingSampleRate() / + 44100.0f; + m_effect->m_bbFX.leftFX().setFrequency( m_freqModel.value() * fac ); + m_effect->m_bbFX.rightFX().setFrequency( m_freqModel.value() * fac ); +} + + + + +void bassBoosterControls::changeGain() +{ + m_effect->m_bbFX.leftFX().setGain( m_gainModel.value() ); + m_effect->m_bbFX.rightFX().setGain( m_gainModel.value() ); +} + + + + +void bassBoosterControls::changeRatio() +{ + m_effect->m_bbFX.leftFX().setRatio( m_ratioModel.value() ); + m_effect->m_bbFX.rightFX().setRatio( m_ratioModel.value() ); +} + + + + +void bassBoosterControls::loadSettings( const QDomElement & _this ) +{ + m_freqModel.setValue( _this.attribute( "freq" ).toFloat() ); + m_gainModel.setValue( _this.attribute( "gain" ).toFloat() ); + m_ratioModel.setValue( _this.attribute( "ratio" ).toFloat() ); +} + + + + +void bassBoosterControls::saveSettings( QDomDocument & _doc, + QDomElement & _this ) +{ + _this.setAttribute( "freq", m_freqModel.value() ); + _this.setAttribute( "gain", m_gainModel.value() ); + _this.setAttribute( "ratio", m_ratioModel.value() ); +} + + + +#include "moc_waveshaper_controls.cxx" + diff --git a/plugins/waveshaper/waveshaper_controls.h b/plugins/waveshaper/waveshaper_controls.h new file mode 100644 index 000000000..f8b818939 --- /dev/null +++ b/plugins/waveshaper/waveshaper_controls.h @@ -0,0 +1,80 @@ +/* + * waveshaper_controls.h - controls for waveshaper-effect + * + * Copyright * (c) 2006-2008 Vesa Kivimäki + * Copyright (c) 2008 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * 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. + * + */ + +#ifndef _WAVESHAPER_CONTROLS_H +#define _WAVESHAPER_CONTROLS_H + +#include "EffectControls.h" +#include "waveshaper_control_dialog.h" +#include "knob.h" + + +class bassBoosterEffect; + + +class bassBoosterControls : public EffectControls +{ + Q_OBJECT +public: + bassBoosterControls( bassBoosterEffect * _eff ); + virtual ~bassBoosterControls() + { + } + + virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent ); + virtual void loadSettings( const QDomElement & _this ); + inline virtual QString nodeName() const + { + return( "waveshapercontrols" ); + } + + virtual int controlCount() + { + return( 3 ); + } + + virtual EffectControlDialog * createView() + { + return( new bassBoosterControlDialog( this ) ); + } + + +private slots: + void changeFrequency(); + void changeGain(); + void changeRatio(); + + +private: + bassBoosterEffect * m_effect; + FloatModel m_freqModel; + FloatModel m_gainModel; + FloatModel m_ratioModel; + + friend class bassBoosterControlDialog; + +} ; + +#endif