fix: nut Synth tren TCP khong hien danh sach VSTi da scan (ban 1.1.5)
- Nut Synth TCP goi openInstrumentSelector (modal 'Select Instrument') nhung modal chi co category SoundFont + GM - khong co muc VST (muc VST chi ton tai o dropdown MixerStrip). Them 'VST Instruments' vao sidebar trai modal: list instrumentSelectorData.vst_instruments (listPlugins), click -> setTrackInstrumentWithUndo(trackId, v.id, v.name) + dong modal. - _scan_vst_in_dirs + /scan: phat hien ca FOLDER ten X.vst3 (Windows VST3 = folder chua X.vst3.dll) - truoc day chi scan file. - Ghi chu: pedalboard (engine VST) la headless - KHONG mo duoc GUI goc cua plugin; danh sach + chon la co che chon nhac cu kha thi. Verify engine frozen: /plugins/available tra ['PadMachine','UltraSynth'] (ca file va folder .vst3); /scan dong bo; test_plugin_api 3 passed.
This commit is contained in:
+20
-3
@@ -111,7 +111,14 @@ async def scan_plugin_dirs(background_tasks: BackgroundTasks = None,
|
||||
for d in plugin_dirs:
|
||||
if not os.path.isdir(d):
|
||||
continue
|
||||
for root, _dirs, files in os.walk(d):
|
||||
for root, dirs, files in os.walk(d):
|
||||
# Windows: VST3 là FOLDER tên X.vst3 (chứa X.vst3.dll bên trong)
|
||||
for sub in list(dirs):
|
||||
if sub.lower().endswith(".vst3"):
|
||||
vst_found.append({"name": os.path.splitext(sub)[0],
|
||||
"path": os.path.join(root, sub),
|
||||
"dir": d,
|
||||
"type": "VST3"})
|
||||
for f in files:
|
||||
low = f.lower()
|
||||
if low.endswith(".vst3") or low.endswith(".dll") or low.endswith(".so"):
|
||||
@@ -170,12 +177,22 @@ async def list_plugins(current_user: dict = Depends(get_current_user)):
|
||||
|
||||
def _scan_vst_in_dirs(dirs: list) -> list:
|
||||
"""Walk các thư mục (plugin_dirs user) → danh sách VST giống /scan:
|
||||
file .vst3/.dll/.so (VST3 folder Windows = .vst3.dll bên trong)."""
|
||||
file .vst3/.dll/.so + FOLDER tên X.vst3 (Windows VST3 = folder chứa
|
||||
X.vst3.dll bên trong)."""
|
||||
found = {}
|
||||
for d in dirs:
|
||||
if not d or not os.path.isdir(d):
|
||||
continue
|
||||
for root, _dirs, files in os.walk(d):
|
||||
for root, dirs, files in os.walk(d):
|
||||
# Windows: VST3 là FOLDER tên X.vst3
|
||||
for sub in list(dirs):
|
||||
if sub.lower().endswith(".vst3"):
|
||||
name = os.path.splitext(sub)[0]
|
||||
if name not in found:
|
||||
found[name] = {
|
||||
"id": name, "name": name, "type": "VST3",
|
||||
"path": os.path.join(root, sub),
|
||||
}
|
||||
for f in files:
|
||||
low = f.lower()
|
||||
if low.endswith(".vst3") or low.endswith(".dll") or low.endswith(".so"):
|
||||
|
||||
Reference in New Issue
Block a user