Clean up generateAntiAliasUserWaveTable function

Also, make it so that we actually call this function
when necessary in TripleOscillator.
This commit is contained in:
sakertooth
2023-09-27 07:06:02 -04:00
parent c5f7ccba49
commit 73da2e1fa9
4 changed files with 23 additions and 16 deletions

View File

@@ -26,7 +26,6 @@
#include <QDomElement>
#include "SampleLoader.h"
#include "TripleOscillator.h"
#include "AudioEngine.h"
#include "AutomatableButton.h"
@@ -38,6 +37,7 @@
#include "Oscillator.h"
#include "PixmapButton.h"
#include "SampleBuffer.h"
#include "SampleLoader.h"
#include "embed.h"
#include "plugin_export.h"
@@ -134,20 +134,13 @@ OscillatorObject::OscillatorObject( Model * _parent, int _idx ) :
}
void OscillatorObject::oscUserDefWaveDblClick()
{
QString af = gui::SampleLoader::openWaveformFile();
if (af != "")
auto af = gui::SampleLoader::openWaveformFile();
if( af != "" )
{
m_sampleBuffer = gui::SampleLoader::createBufferFromFile(af);
m_userAntiAliasWaveTable = Oscillator::generateAntiAliasUserWaveTable(m_sampleBuffer.get());
// TODO:
//m_usrWaveBtn->setToolTip(m_sampleBuffer->audioFile());
}
@@ -260,7 +253,8 @@ void TripleOscillator::saveSettings( QDomDocument & _doc, QDomElement & _this )
"modalgo" + QString::number( i+1 ) );
m_osc[i]->m_useWaveTableModel.saveSettings( _doc, _this,
"useWaveTable" + QString::number (i+1 ) );
_this.setAttribute("userwavefile" + is, m_osc[i]->m_sampleBuffer->audioFile());
_this.setAttribute( "userwavefile" + is,
m_osc[i]->m_sampleBuffer->audioFile() );
}
}
@@ -291,6 +285,7 @@ void TripleOscillator::loadSettings( const QDomElement & _this )
if (!_this.attribute("userwavefile" + is).isEmpty())
{
m_osc[i]->m_sampleBuffer = gui::SampleLoader::createBufferFromFile(_this.attribute("userwavefile" + is));
m_osc[i]->m_userAntiAliasWaveTable = Oscillator::generateAntiAliasUserWaveTable(m_osc[i]->m_sampleBuffer.get());
}
}
}
@@ -358,9 +353,11 @@ void TripleOscillator::playNote( NotePlayHandle * _n,
oscs_r[i + 1] );
oscs_r[i]->setUseWaveTable(m_osc[i]->m_useWaveTable);
}
oscs_l[i]->setUserWave(m_osc[i]->m_sampleBuffer);
oscs_r[i]->setUserWave(m_osc[i]->m_sampleBuffer);
oscs_l[i]->setUserWave( m_osc[i]->m_sampleBuffer );
oscs_r[i]->setUserWave( m_osc[i]->m_sampleBuffer );
oscs_l[i]->setUserAntiAliasWaveTable(m_osc[i]->m_userAntiAliasWaveTable);
oscs_r[i]->setUserAntiAliasWaveTable(m_osc[i]->m_userAntiAliasWaveTable);
}
_n->m_pluginData = new oscPtr;

View File

@@ -31,6 +31,7 @@
#include "Instrument.h"
#include "InstrumentView.h"
#include "AutomatableModel.h"
#include "OscillatorConstants.h"
#include "SampleBuffer.h"
namespace lmms
@@ -72,6 +73,7 @@ private:
IntModel m_modulationAlgoModel;
BoolModel m_useWaveTableModel;
std::shared_ptr<const SampleBuffer> m_sampleBuffer;
std::shared_ptr<const OscillatorConstants::waveform_t> m_userAntiAliasWaveTable;
float m_volumeLeft;
float m_volumeRight;