NAM model integration: rewrite nam_host.py with full inference pipeline
- NAMHost: process(), warm_up(), avg_inference_ms, model cache, crossfade - ModelSwitchMode enum (INSTANT/CROSSFADE/PAUSE) with pipeline wiring - list_available_models(), available_models(), process_with_model() - Fixed pipeline.py type typo (NAMIHost -> NAMHost) - Crossfade support wired through pipeline NAM_AMP route - 25/25 NAM tests + 41/41 integration tests pass - download_models.sh generates 10 verified Linear .nam models
This commit is contained in:
+5
-2
@@ -21,7 +21,7 @@ from typing import Optional
|
||||
import numpy as np
|
||||
from scipy.signal import lfilter
|
||||
|
||||
from .nam_host import NAMHost, NAMModel
|
||||
from .nam_host import NAMHost, NAMModel, ModelSwitchMode
|
||||
from .ir_loader import IRLoader, IRFile
|
||||
from ..presets.types import FXBlock, FXType, Preset
|
||||
|
||||
@@ -230,7 +230,7 @@ class AudioPipeline:
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
nam_host: Optional[NAMIHost] = None,
|
||||
nam_host: Optional[NAMHost] = None,
|
||||
ir_loader: Optional[IRLoader] = None,
|
||||
):
|
||||
self.nam = nam_host or NAMHost()
|
||||
@@ -336,6 +336,9 @@ class AudioPipeline:
|
||||
case FXType.NAM_AMP:
|
||||
if self.nam.is_loaded:
|
||||
buf = self.nam.process(buf)
|
||||
# Apply crossfade if a model switch is in progress
|
||||
if self.nam._crossfade_buf is not None:
|
||||
buf = self.nam.apply_crossfade(buf)
|
||||
case FXType.IR_CAB:
|
||||
if self.ir.is_loaded:
|
||||
buf = self._apply_ir_cab(buf, params, fx_state)
|
||||
|
||||
Reference in New Issue
Block a user