apply method
Implementation
double apply({
required double carrierFreq,
required int sampleRate,
}) {
if (!enabled || type == NeomModulationType.none) return carrierFreq;
final double twoPi = 2 * pi;
_phase += twoPi * modFrequency / sampleRate;
if (_phase > twoPi) _phase -= twoPi;
switch (type) {
case NeomModulationType.am:
// AM afecta amplitud (se maneja fuera)
return carrierFreq;
case NeomModulationType.fm:
// FM altera la frecuencia portadora
return carrierFreq + (sin(_phase) * carrierFreq * depth);
case NeomModulationType.phase:
// Phase se aplica directamente en el oscilador
return carrierFreq;
default:
return carrierFreq;
}
}