@@ -326,6 +326,30 @@ void NeuralAmpModeler::ProcessBlock(iplug::sample** inputs, iplug::sample** outp
326326 sample** toneStackOutPointers = gateGainOutput;
327327 if (toneStackActive)
328328 {
329+ // Translate params from knob 0-10 to dB.
330+ // Tuned ranges based on my ear. E.g. seems treble doesn't need nearly as
331+ // much swing as bass can use.
332+ const double bassGainDB = 4.0 * (GetParam (kToneBass )->Value () - 5.0 ); // +/- 20
333+ const double midGainDB = 3.0 * (GetParam (kToneMid )->Value () - 5.0 ); // +/- 15
334+ const double trebleGainDB = 2.0 * (GetParam (kToneTreble )->Value () - 5.0 ); // +/- 10
335+
336+ const double bassFrequency = 150.0 ;
337+ const double midFrequency = 425.0 ;
338+ const double trebleFrequency = 1800.0 ;
339+ const double bassQuality = 0.707 ;
340+ // Wider EQ on mid bump up to sound less honky.
341+ const double midQuality = midGainDB < 0.0 ? 1.5 : 0.7 ;
342+ const double trebleQuality = 0.707 ;
343+
344+ // Define filter parameters
345+ recursive_linear_filter::BiquadParams bassParams (sampleRate, bassFrequency, bassQuality, bassGainDB);
346+ recursive_linear_filter::BiquadParams midParams (sampleRate, midFrequency, midQuality, midGainDB);
347+ recursive_linear_filter::BiquadParams trebleParams (sampleRate, trebleFrequency, trebleQuality, trebleGainDB);
348+ // Apply tone stack
349+ // Set parameters
350+ mToneBass .SetParams (bassParams);
351+ mToneMid .SetParams (midParams);
352+ mToneTreble .SetParams (trebleParams);
329353 sample** bassPointers = mToneBass .Process (gateGainOutput, numChannelsInternal, numFrames);
330354 sample** midPointers = mToneMid .Process (bassPointers, numChannelsInternal, numFrames);
331355 sample** treblePointers = mToneTreble .Process (midPointers, numChannelsInternal, numFrames);
@@ -438,46 +462,6 @@ void NeuralAmpModeler::OnUIOpen()
438462 mCheckSampleRateWarning = true ;
439463}
440464
441- void NeuralAmpModeler::OnParamChange (int paramIdx)
442- {
443- switch (paramIdx)
444- {
445- case kToneBass :
446- {
447- const double sampleRate = GetSampleRate ();
448- const double bassGainDB = 4.0 * (GetParam (kToneBass )->Value () - 5.0 ); // +/- 20
449- const double bassFrequency = 150.0 ;
450- const double bassQuality = 0.707 ;
451- recursive_linear_filter::BiquadParams bassParams (sampleRate, bassFrequency, bassQuality, bassGainDB);
452- mToneBass .SetParams (bassParams);
453- }
454-
455- break ;
456- case kToneMid :
457- {
458- const double sampleRate = GetSampleRate ();
459- const double midGainDB = 3.0 * (GetParam (kToneMid )->Value () - 5.0 ); // +/- 15
460- const double midFrequency = 425.0 ;
461- // Wider EQ on mid bump up to sound less honky.
462- const double midQuality = midGainDB < 0.0 ? 1.5 : 0.7 ;
463- recursive_linear_filter::BiquadParams midParams (sampleRate, midFrequency, midQuality, midGainDB);
464- mToneMid .SetParams (midParams);
465- }
466- break ;
467- case kToneTreble :
468- {
469- const double sampleRate = GetSampleRate ();
470- const double trebleGainDB = 2.0 * (GetParam (kToneTreble )->Value () - 5.0 ); // +/- 10
471- const double trebleFrequency = 1800.0 ;
472- const double trebleQuality = 0.707 ;
473- recursive_linear_filter::BiquadParams trebleParams (sampleRate, trebleFrequency, trebleQuality, trebleGainDB);
474- mToneTreble .SetParams (trebleParams);
475- }
476- break ;
477- default : break ;
478- }
479- }
480-
481465void NeuralAmpModeler::OnParamChangeUI (int paramIdx, EParamSource source)
482466{
483467 if (auto pGraphics = GetUI ())
0 commit comments