www.pudn.com > smstools.rar > SMSOddEvenHarmonicRatioConfigurator.cxx


#include "SMSOddEvenHarmonicRatioConfigurator.hxx" 
#include "Factory.hxx" 
#include  
#include  
#include "Fl_SMS_BPF_Editor.hxx" 
 
namespace CLAMVM 
{ 
	const char* SMSOddEvenHarmonicRatioConfigurator::mHelpText = "

Odd/Even Harmonic Ratio

Usage: Indicate in dB's the gain applied to odd harmonics in relation to even. E.g. A value of 6 means that a 6dB difference will be introduced, thus, odd harmonics will be 3dB higher and even harmonic 3dB lower.(X axis = time)

Explanation: Harmonics are modified according to their harmonic number.

"; SMSOddEvenHarmonicRatioConfigurator::SMSOddEvenHarmonicRatioConfigurator() { mHelpWidget = new Fl_Help_View( 0, 0, 100, 100 ); mHelpWidget->textsize( 12 ); mEditorWidget = new Fl_SMS_BPF_Editor( 0, 0, 100, 100 ); mEditorWidget->SetHorizontalRange( 0.0, 1.0 ); mEditorWidget->SetVerticalRange( -12, 12 ); mEditorWidget->SetGridWidth( 0.1, 3 ); SetHelpWidgetText(); mConfig.AddType(); mConfig.RemoveAmount(); mConfig.AddBPFAmount(); mConfig.UpdateData(); mConfig.SetType( "SMSOddEvenHarmonicRatio" ); mConfig.GetBPFAmount().Insert( 0.0, 0 ); mConfig.GetBPFAmount().Insert( 1.0, 0 ); mEditorWidget->InitPoints( mConfig.GetBPFAmount() ); mEditorWidget->PointsChanged.Connect( UserEditedParameters ); } SMSOddEvenHarmonicRatioConfigurator::~SMSOddEvenHarmonicRatioConfigurator() { if ( mHelpWidget->parent() == NULL ) delete mHelpWidget; if ( mEditorWidget->parent() == NULL ) delete mEditorWidget; } void SMSOddEvenHarmonicRatioConfigurator::SetHelpWidgetText() { mHelpWidget->value( mHelpText); } Fl_Widget* SMSOddEvenHarmonicRatioConfigurator::GetParametersWidget() { return mEditorWidget; } void SMSOddEvenHarmonicRatioConfigurator::Initialize( CLAM::ProcessingConfig& cfg ) { CLAM::SMSTransformationConfig& conCfg = static_cast< CLAM::SMSTransformationConfig& >( cfg ); conCfg.RemoveAmount(); conCfg.RemoveBPFAmount(); conCfg.UpdateData(); conCfg.AddBPFAmount(); conCfg.UpdateData(); mConfig.GetBPFAmount().Insert( 0.0, 0 ); mConfig.GetBPFAmount().Insert( 1.0, 0 ); } void SMSOddEvenHarmonicRatioConfigurator::SetConfig( const CLAM::ProcessingConfig& cfg ) { mConfig = static_cast(cfg); mEditorWidget->Clear(); if ( !mConfig.HasBPFAmount() ) { double value = mConfig.GetAmount(); mConfig.AddBPFAmount(); mConfig.RemoveAmount(); mConfig.UpdateData(); mConfig.GetBPFAmount().Insert( 0, value ); mConfig.GetBPFAmount().Insert( 1, value ); } mEditorWidget->InitPoints( mConfig.GetBPFAmount() ); } const CLAM::ProcessingConfig& SMSOddEvenHarmonicRatioConfigurator::GetConfig() { mEditorWidget->InsertPointsIntoBPF( mConfig.GetBPFAmount() ); return mConfig; } Fl_Widget* SMSOddEvenHarmonicRatioConfigurator::GetHelpWidget() { return mHelpWidget; } static SMSConfiguratorFactory::Registrator regtPitchShiftCfg( "SMSOddEvenHarmonicRatio" ); }