fix(standalone): bundle pedalboard.midi_utils + pyfluidsynth dll path
- engine.spec hiddenimports: pedalboard.midi_utils (C++ ExternalPlugin.h import dong, PyInstaller khong phat hien duoc -> midi-render 500) - engine.spec hiddenimports: fluidsynth (pyfluidsynth cffi) cho /soundfont-render native - vst_engine.py: _ensure_fluidsynth_dll_on_path() - frozen app them exe_dir vao PATH de ctypes.util.find_library tim thay libfluidsynth-3.dll dat ke exe
This commit is contained in:
@@ -5,6 +5,22 @@ import numpy as np
|
|||||||
import functools
|
import functools
|
||||||
from ctypes import c_char_p
|
from ctypes import c_char_p
|
||||||
|
|
||||||
|
|
||||||
|
def _ensure_fluidsynth_dll_on_path():
|
||||||
|
"""Frozen (PyInstaller): pyfluidsynth tim dll qua ctypes.util.find_library
|
||||||
|
(chi quet PATH). Dat libfluidsynth-3.dll ke exe roi them exe_dir vao PATH
|
||||||
|
truoc khi import fluidsynth - nguoc lai: 'Couldn't find the FluidSynth
|
||||||
|
library' -> /soundfont-render tra 501."""
|
||||||
|
import sys
|
||||||
|
if getattr(sys, 'frozen', False):
|
||||||
|
exe_dir = os.path.dirname(os.path.abspath(sys.executable))
|
||||||
|
if exe_dir and exe_dir not in os.environ.get('PATH', '').split(os.pathsep):
|
||||||
|
os.environ['PATH'] = exe_dir + os.pathsep + os.environ.get('PATH', '')
|
||||||
|
|
||||||
|
|
||||||
|
_ensure_fluidsynth_dll_on_path()
|
||||||
|
|
||||||
|
|
||||||
def midi_note_to_freq(note_number: int) -> float:
|
def midi_note_to_freq(note_number: int) -> float:
|
||||||
return 440.0 * (2.0 ** ((note_number - 69) / 12.0))
|
return 440.0 * (2.0 ** ((note_number - 69) / 12.0))
|
||||||
|
|
||||||
|
|||||||
@@ -90,8 +90,16 @@ _hidden = [
|
|||||||
'uvicorn.protocols.websockets',
|
'uvicorn.protocols.websockets',
|
||||||
'uvicorn.protocols.websockets.auto',
|
'uvicorn.protocols.websockets.auto',
|
||||||
'pedalboard',
|
'pedalboard',
|
||||||
|
# C++ ExternalPlugin.h import pedalboard.midi_utils khi tao VST3Plugin
|
||||||
|
# (py::module_::import) - PyInstaller khong thay duoc import tu C++, phai
|
||||||
|
# khai bao hiddenimport thu cong (thieu -> "No module named
|
||||||
|
# 'pedalboard.midi_utils'" khi /midi-render).
|
||||||
|
'pedalboard.midi_utils',
|
||||||
'soundfile',
|
'soundfile',
|
||||||
'sf2utils',
|
'sf2utils',
|
||||||
|
# pyfluidsynth (fluidsynth.py cffi) - render soundfont native cho
|
||||||
|
# /soundfont-render (browser client). Can libfluidsynth-3.dll ke exe.
|
||||||
|
'fluidsynth',
|
||||||
'mido.backends.rtmidi',
|
'mido.backends.rtmidi',
|
||||||
] + _scipy_signal_hidden
|
] + _scipy_signal_hidden
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user