G3 deploy: mac dinh dung JUCE bridge + bundle juce_fx_bridge vao engine
This commit is contained in:
@@ -26,7 +26,7 @@ import uuid
|
||||
import numpy as np
|
||||
|
||||
from app.config import settings
|
||||
from app.core.native_render import find_fx_bridge_exe
|
||||
from app.core.native_render import find_fx_bridge_exe, find_juce_fx_bridge_exe
|
||||
|
||||
FXRT_MAGIC = 0x46585254
|
||||
FXRT_BLOCK = 256
|
||||
@@ -164,9 +164,11 @@ class FxRealtimeSession:
|
||||
|
||||
def _spawn(self):
|
||||
juce_exe = os.getenv("SF_JUCE_FX_BRIDGE_PATH", "").strip()
|
||||
exe = juce_exe or find_fx_bridge_exe()
|
||||
# G3: mặc định dùng JUCE bridge (latency graph thật + processed samples);
|
||||
# fallback bridge cũ khi không có exe JUCE (regression an toàn).
|
||||
exe = juce_exe or find_juce_fx_bridge_exe() or find_fx_bridge_exe()
|
||||
if not exe:
|
||||
raise RuntimeError("Không tìm thấy fx_vst_bridge.exe")
|
||||
raise RuntimeError("Không tìm thấy bridge exe (juce_fx_bridge / fx_vst_bridge)")
|
||||
job = {
|
||||
"sample_rate": self.sample_rate,
|
||||
"block_size": self.block_size,
|
||||
@@ -176,7 +178,7 @@ class FxRealtimeSession:
|
||||
fd, self._job_path = tempfile.mkstemp(suffix=".json", prefix="fxrt_")
|
||||
with os.fdopen(fd, "w", encoding="utf-8") as f:
|
||||
json.dump(job, f)
|
||||
if juce_exe:
|
||||
if os.path.basename(exe).lower().startswith("juce_fx_bridge"):
|
||||
cmd = [exe, "--juce-fx", self._job_path, "--shm", self.name,
|
||||
"--parent", str(os.getpid())]
|
||||
else:
|
||||
|
||||
@@ -20,6 +20,7 @@ from app.config import settings
|
||||
|
||||
BRIDGE_EXE = "daw_vst_bridge.exe" if os.name == "nt" else "daw_vst_bridge"
|
||||
FX_BRIDGE_EXE = "fx_vst_bridge.exe" if os.name == "nt" else "fx_vst_bridge"
|
||||
JUCE_FX_BRIDGE_EXE = "juce_fx_bridge.exe" if os.name == "nt" else "juce_fx_bridge"
|
||||
|
||||
|
||||
def find_bridge_exe(exe_name=BRIDGE_EXE, env_key="SF_BRIDGE_PATH") -> str:
|
||||
@@ -60,6 +61,10 @@ def find_bridge_exe(exe_name=BRIDGE_EXE, env_key="SF_BRIDGE_PATH") -> str:
|
||||
def find_fx_bridge_exe() -> str:
|
||||
"""Đường dẫn FX bridge (fx_vst_bridge.exe): SF_FX_BRIDGE_PATH → bundle → install/."""
|
||||
return find_bridge_exe(FX_BRIDGE_EXE, "SF_FX_BRIDGE_PATH")
|
||||
|
||||
def find_juce_fx_bridge_exe() -> str:
|
||||
"""Đường dẫn FX bridge JUCE (juce_fx_bridge.exe): SF_JUCE_FX_BRIDGE_PATH → bundle → install/."""
|
||||
return find_bridge_exe(JUCE_FX_BRIDGE_EXE, "SF_JUCE_FX_BRIDGE_PATH")
|
||||
def normalize_audio_peak(audio, target_db=0.0):
|
||||
"""Scale audio (numpy array, peak) về target_db nếu vượt; giữ nguyên nếu dưới.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user