Add files via upload

This commit is contained in:
Anjok07
2022-12-29 21:07:23 -06:00
committed by GitHub
parent 00ae0157ff
commit f968803f89
2 changed files with 59 additions and 54 deletions

104
UVR.py
View File

@@ -18,7 +18,6 @@ import base64
import queue import queue
import re import re
import shutil import shutil
import string
import subprocess import subprocess
import sys import sys
import soundfile as sf import soundfile as sf
@@ -34,8 +33,7 @@ import urllib.request
import webbrowser import webbrowser
import wget import wget
import traceback import traceback
#import multiprocessing as KThread from __version__ import VERSION, PATCH, PATCH_MAC, PATCH_LINUX
from __version__ import VERSION, PATCH
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
@@ -61,20 +59,28 @@ logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.INFO)
logging.info('UVR BEGIN') logging.info('UVR BEGIN')
is_dnd_compatible = True is_dnd_compatible = True
banner_placement = -2
if OPERATING_SYSTEM=="Darwin": if OPERATING_SYSTEM=="Darwin":
OPEN_FILE_func = lambda input_string:subprocess.Popen(["open", input_string]) OPEN_FILE_func = lambda input_string:subprocess.Popen(["open", input_string])
is_dnd_compatible = False if SYSTEM_PROC == ARM or ARM in SYSTEM_ARCH else True is_dnd_compatible = False if SYSTEM_PROC == ARM or ARM in SYSTEM_ARCH else True
dnd_path_check = MAC_DND_CHECK
banner_placement = -8
current_patch = PATCH_MAC
is_windows = False is_windows = False
right_click_button = '<Button-2>' right_click_button = '<Button-2>'
application_extension = "_arm_build.dmg" if SYSTEM_PROC == ARM or ARM in SYSTEM_ARCH else "_x86_64_build.dmg" application_extension = ".dmg"
elif OPERATING_SYSTEM=="Linux": elif OPERATING_SYSTEM=="Linux":
OPEN_FILE_func = lambda input_string:subprocess.Popen(["open", input_string]) OPEN_FILE_func = lambda input_string:subprocess.Popen(["open", input_string])
dnd_path_check = LINUX_DND_CHECK
current_patch = PATCH_LINUX
is_windows = False is_windows = False
right_click_button = '<Button-3>' right_click_button = '<Button-3>'
application_extension = ".zip" application_extension = ".zip"
elif OPERATING_SYSTEM=="Windows": elif OPERATING_SYSTEM=="Windows":
OPEN_FILE_func = lambda input_string:os.startfile(input_string) OPEN_FILE_func = lambda input_string:os.startfile(input_string)
dnd_path_check = WINDOWS_DND_CHECK
current_patch = PATCH
is_windows = True is_windows = True
right_click_button = '<Button-3>' right_click_button = '<Button-3>'
application_extension = ".exe" application_extension = ".exe"
@@ -193,7 +199,6 @@ def drop(event, accept_mode: str = 'files'):
"""Drag & Drop verification process""" """Drag & Drop verification process"""
path = event.data path = event.data
if accept_mode == 'folder': if accept_mode == 'folder':
path = path.replace('{', '').replace('}', '') path = path.replace('{', '').replace('}', '')
if not os.path.isdir(path): if not os.path.isdir(path):
@@ -206,8 +211,8 @@ def drop(event, accept_mode: str = 'files'):
elif accept_mode == 'files': elif accept_mode == 'files':
# Clean path text and set path to the list of paths # Clean path text and set path to the list of paths
path = path.replace("{", "").replace("}", "") path = path.replace("{", "").replace("}", "")
for drive_letter in list(string.ascii_lowercase.upper()): for dnd_file in dnd_path_check:
path = path.replace(f" {drive_letter}:", f";{drive_letter}:") path = path.replace(f" {dnd_file}", f";{dnd_file}")
path = path.split(';') path = path.split(';')
path[-1] = path[-1].replace(';', '') path[-1] = path[-1].replace(';', '')
# Set Variables # Set Variables
@@ -844,8 +849,7 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
# --Widgets-- # --Widgets--
self.fill_main_frame() self.fill_main_frame()
self.bind_widgets() self.bind_widgets()
self.online_data_refresh(user_refresh=False)
# --Update Widgets-- # --Update Widgets--
self.update_available_models() self.update_available_models()
self.update_main_widget_states() self.update_main_widget_states()
@@ -856,9 +860,9 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.ensemble_listbox_Option.configure(state=tk.DISABLED) self.ensemble_listbox_Option.configure(state=tk.DISABLED)
self.command_Text.write(f'Ultimate Vocal Remover {VERSION} [{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}]') self.command_Text.write(f'Ultimate Vocal Remover {VERSION} [{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}]')
self.new_update_notify = lambda latest_version:self.command_Text.write(f"\n\nNew Update Found: {latest_version}\n\nClick the update button in the \"Settings\" menu to download and install!")
self.update_checkbox_text = lambda:self.selection_action_process_method(self.chosen_process_method_var.get()) self.update_checkbox_text = lambda:self.selection_action_process_method(self.chosen_process_method_var.get())
self.online_data_refresh(user_refresh=False)
# Menu Functions # Menu Functions
def main_window_LABEL_SET(self, master, text):return ttk.Label(master=master, text=text, background='#0e0e0f', font=self.font_smaller, foreground='#13849f', anchor=tk.CENTER) def main_window_LABEL_SET(self, master, text):return ttk.Label(master=master, text=text, background='#0e0e0f', font=self.font_smaller, foreground='#13849f', anchor=tk.CENTER)
def menu_title_LABEL_SET(self, frame, text, width=35):return ttk.Label(master=frame, text=text, font=(MAIN_FONT_NAME, f"{FONT_SIZE_5}", "underline"), justify="center", foreground="#13849f", width=width, anchor=tk.CENTER) def menu_title_LABEL_SET(self, frame, text, width=35):return ttk.Label(master=frame, text=text, font=(MAIN_FONT_NAME, f"{FONT_SIZE_5}", "underline"), justify="center", foreground="#13849f", width=width, anchor=tk.CENTER)
@@ -996,7 +1000,7 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
"""Creates root window widgets""" """Creates root window widgets"""
self.title_Label = tk.Label(master=self, image=self.logo_img, compound=tk.TOP) self.title_Label = tk.Label(master=self, image=self.logo_img, compound=tk.TOP)
self.title_Label.place(x=-2, y=-2) self.title_Label.place(x=-2, y=banner_placement)
button_y = self.IMAGE_HEIGHT + self.FILEPATHS_HEIGHT + self.OPTIONS_HEIGHT - 8 + self.PADDING*2 button_y = self.IMAGE_HEIGHT + self.FILEPATHS_HEIGHT + self.OPTIONS_HEIGHT - 8 + self.PADDING*2
@@ -1242,14 +1246,14 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.time_stretch_rate_Label_place = lambda:self.time_stretch_rate_Label.place(x=MAIN_ROW_X[0], y=MAIN_ROW_Y[0], width=0, height=LABEL_HEIGHT, relx=1/3, rely=2/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) self.time_stretch_rate_Label_place = lambda:self.time_stretch_rate_Label.place(x=MAIN_ROW_X[0], y=MAIN_ROW_Y[0], width=0, height=LABEL_HEIGHT, relx=1/3, rely=2/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS)
self.time_stretch_rate_Option = ttk.Combobox(self.options_Frame, value=TIME_PITCH, textvariable=self.time_stretch_rate_var) self.time_stretch_rate_Option = ttk.Combobox(self.options_Frame, value=TIME_PITCH, textvariable=self.time_stretch_rate_var)
self.time_stretch_rate_Option_place = lambda:self.time_stretch_rate_Option.place(x=MAIN_ROW_X[1], y=MAIN_ROW_Y[1], width=MAIN_ROW_WIDTH, height=OPTION_HEIGHT, relx=1/3, rely=3/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) self.time_stretch_rate_Option_place = lambda:self.time_stretch_rate_Option.place(x=MAIN_ROW_X[1], y=MAIN_ROW_Y[1], width=MAIN_ROW_WIDTH, height=OPTION_HEIGHT, relx=1/3, rely=3/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS)
self.combobox_entry_validation(self.time_stretch_rate_Option, self.time_stretch_rate_var, REG_TIME_PITCH, TIME_PITCH) self.combobox_entry_validation(self.time_stretch_rate_Option, self.time_stretch_rate_var, REG_TIME, TIME_PITCH)
# Pitch Rate # Pitch Rate
self.pitch_rate_Label = self.main_window_LABEL_SET(self.options_Frame, CHOOSE_SEMITONES_MAIN_LABEL) self.pitch_rate_Label = self.main_window_LABEL_SET(self.options_Frame, CHOOSE_SEMITONES_MAIN_LABEL)
self.pitch_rate_Label_place = lambda:self.pitch_rate_Label.place(x=MAIN_ROW_X[0], y=MAIN_ROW_Y[0], width=0, height=LABEL_HEIGHT, relx=1/3, rely=2/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) self.pitch_rate_Label_place = lambda:self.pitch_rate_Label.place(x=MAIN_ROW_X[0], y=MAIN_ROW_Y[0], width=0, height=LABEL_HEIGHT, relx=1/3, rely=2/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS)
self.pitch_rate_Option = ttk.Combobox(self.options_Frame, value=TIME_PITCH, textvariable=self.pitch_rate_var) self.pitch_rate_Option = ttk.Combobox(self.options_Frame, value=TIME_PITCH, textvariable=self.pitch_rate_var)
self.pitch_rate_Option_place = lambda:self.pitch_rate_Option.place(x=MAIN_ROW_X[1], y=MAIN_ROW_Y[1], width=MAIN_ROW_WIDTH, height=OPTION_HEIGHT, relx=1/3, rely=3/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) self.pitch_rate_Option_place = lambda:self.pitch_rate_Option.place(x=MAIN_ROW_X[1], y=MAIN_ROW_Y[1], width=MAIN_ROW_WIDTH, height=OPTION_HEIGHT, relx=1/3, rely=3/self.COL1_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS)
self.combobox_entry_validation(self.pitch_rate_Option, self.pitch_rate_var, REG_TIME_PITCH, TIME_PITCH) self.combobox_entry_validation(self.pitch_rate_Option, self.pitch_rate_var, REG_PITCH, TIME_PITCH)
### SHARED SETTINGS ### ### SHARED SETTINGS ###
@@ -1450,8 +1454,8 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
EXTENSIONS = (('.aes', '.txt', '.tmp')) EXTENSIONS = (('.aes', '.txt', '.tmp'))
try: try:
if os.path.isfile(f"{PATCH}{application_extension}"): if os.path.isfile(f"{current_patch}{application_extension}"):
os.remove(f"{PATCH}{application_extension}") os.remove(f"{current_patch}{application_extension}")
if os.path.isfile(SPLASH_DOC): if os.path.isfile(SPLASH_DOC):
os.remove(SPLASH_DOC) os.remove(SPLASH_DOC)
@@ -1633,8 +1637,6 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for i in model.secondary_model_4_stem_model_names_list: for i in model.secondary_model_4_stem_model_names_list:
self.demucs_secondary_model_names.append(i) self.demucs_secondary_model_names.append(i)
print('self.demucs_pre_proc_model_name: ', self.demucs_pre_proc_model_name)
self.all_models = self.vr_primary_model_names + self.mdx_primary_model_names + self.demucs_primary_model_names + self.vr_secondary_model_names + self.mdx_secondary_model_names + self.demucs_secondary_model_names + self.demucs_pre_proc_model_name self.all_models = self.vr_primary_model_names + self.mdx_primary_model_names + self.demucs_primary_model_names + self.vr_secondary_model_names + self.mdx_secondary_model_names + self.demucs_secondary_model_names + self.demucs_pre_proc_model_name
def verify_audio(self, audio_file, is_process=True, sample_path=None): def verify_audio(self, audio_file, is_process=True, sample_path=None):
@@ -2275,6 +2277,9 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.download_key_Button = ttk.Button(settings_menu_download_center_Frame, image=self.key_img, command=lambda:self.pop_up_user_code_input()) self.download_key_Button = ttk.Button(settings_menu_download_center_Frame, image=self.key_img, command=lambda:self.pop_up_user_code_input())
self.download_key_Button.grid(row=15,column=0,padx=0,pady=5) self.download_key_Button.grid(row=15,column=0,padx=0,pady=5)
self.manual_download_Button = ttk.Button(settings_menu_download_center_Frame, text='Try Manual Download', command=self.menu_manual_downloads)
self.manual_download_Button.grid(row=16,column=0,padx=0,pady=5)
self.download_center_Buttons = (self.model_download_vr_Button, self.download_center_Buttons = (self.model_download_vr_Button,
self.model_download_mdx_Button, self.model_download_mdx_Button,
self.model_download_demucs_Button, self.model_download_demucs_Button,
@@ -2292,17 +2297,10 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.online_data_refresh() self.online_data_refresh()
self.download_list_state() self.download_list_state()
def load_manual_download_button():
manual_download_Button = ttk.Button(settings_menu_download_center_Frame, text='Try Manual Download', command=self.menu_manual_downloads)
manual_download_Button.grid(row=16,column=0,padx=0,pady=5)
settings_menu_download_center_Frame.update()
self.menu_placement(settings_menu, "Settings Guide", is_help_hints=True, close_function=lambda:close_window()) self.menu_placement(settings_menu, "Settings Guide", is_help_hints=True, close_function=lambda:close_window())
if self.is_online: if self.is_online:
self.download_list_fill() self.download_list_fill()
else:
load_manual_download_button()
if select_tab_2: if select_tab_2:
tabControl.select(tab2) tabControl.select(tab2)
@@ -2315,7 +2313,6 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.is_menu_settings_open = False self.is_menu_settings_open = False
settings_menu.destroy() settings_menu.destroy()
settings_menu.bind("<m>", lambda e:load_manual_download_button())
settings_menu.protocol("WM_DELETE_WINDOW", close_window) settings_menu.protocol("WM_DELETE_WINDOW", close_window)
def menu_advanced_vr_options(self): def menu_advanced_vr_options(self):
@@ -2806,7 +2803,7 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
appplication_license_Text_scroll.configure(command=appplication_license_Text.yview) appplication_license_Text_scroll.configure(command=appplication_license_Text.yview)
appplication_license_Text.grid(row=4,sticky=W) appplication_license_Text.grid(row=4,sticky=W)
appplication_license_Text_scroll.grid(row=4, column=1, sticky=NS) appplication_license_Text_scroll.grid(row=4, column=1, sticky=NS)
appplication_license_Text.insert("insert", LICENSE_TEXT(VERSION, PATCH)) appplication_license_Text.insert("insert", LICENSE_TEXT(VERSION, current_patch))
appplication_license_Text.configure(state=tk.DISABLED) appplication_license_Text.configure(state=tk.DISABLED)
application_change_log_tab_Frame = Frame(tab4) application_change_log_tab_Frame = Frame(tab4)
@@ -2818,6 +2815,8 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
else: else:
change_log_text = 'Change log unavailable.' change_log_text = 'Change log unavailable.'
change_log_text = f"{CHANGE_LOG_HEADER(current_patch)}\n\n{change_log_text}".replace("~", "")
application_change_log_Label = tk.Label(application_change_log_tab_Frame, text='UVR Change Log', font=(MAIN_FONT_NAME, f"{FONT_SIZE_6}", "bold"), justify="center", fg="#f4f4f4") application_change_log_Label = tk.Label(application_change_log_tab_Frame, text='UVR Change Log', font=(MAIN_FONT_NAME, f"{FONT_SIZE_6}", "bold"), justify="center", fg="#f4f4f4")
application_change_log_Label.grid(row=0,column=0,padx=0,pady=25) application_change_log_Label.grid(row=0,column=0,padx=0,pady=25)
@@ -3463,9 +3462,23 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
try: try:
self.online_data = json.load(urllib.request.urlopen(DOWNLOAD_CHECKS)) self.online_data = json.load(urllib.request.urlopen(DOWNLOAD_CHECKS))
self.is_online = True self.is_online = True
self.lastest_version = self.online_data["current_version"]
if user_refresh:
if self.lastest_version == PATCH: self.download_list_state()
self.download_list_fill()
for widget in self.download_center_Buttons:widget.configure(state=tk.NORMAL)
if refresh_list_Button:
self.download_progress_info_var.set('Download List Refreshed!')
if OPERATING_SYSTEM=="Darwin":
self.lastest_version = self.online_data["current_version_mac"]
elif OPERATING_SYSTEM=="Linux":
self.lastest_version = self.online_data["current_version_linux"]
else:
self.lastest_version = self.online_data["current_version"]
if self.lastest_version == current_patch:
self.app_update_status_Text_var.set('UVR Version Current') self.app_update_status_Text_var.set('UVR Version Current')
else: else:
is_new_update = True is_new_update = True
@@ -3475,18 +3488,10 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
self.download_update_path_var.set(os.path.join(BASE_PATH, f'{self.lastest_version}{application_extension}')) self.download_update_path_var.set(os.path.join(BASE_PATH, f'{self.lastest_version}{application_extension}'))
if not user_refresh: if not user_refresh:
self.new_update_notify(self.lastest_version) self.command_Text.write(f"\n\nNew Update Found: {self.lastest_version}\n\nClick the update button in the \"Settings\" menu to download and install!")
if user_refresh:
self.download_list_state()
self.download_list_fill()
for widget in self.download_center_Buttons:widget.configure(state=tk.NORMAL)
if refresh_list_Button:
self.download_progress_info_var.set('Download List Refreshed!')
self.download_model_settings() self.download_model_settings()
except Exception as e: except Exception as e:
self.error_log_var.set(error_text('Online Data Refresh', e)) self.error_log_var.set(error_text('Online Data Refresh', e))
self.offline_state_set() self.offline_state_set()
@@ -3667,6 +3672,7 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for widget in self.download_center_Buttons:widget.configure(state=tk.DISABLED) for widget in self.download_center_Buttons:widget.configure(state=tk.DISABLED)
self.refresh_list_Button.configure(state=tk.DISABLED) self.refresh_list_Button.configure(state=tk.DISABLED)
self.manual_download_Button.configure(state=tk.DISABLED)
is_demucs_newer = [True for x in DEMUCS_NEWER_ARCH_TYPES if x in self.selected_download_var.get()] is_demucs_newer = [True for x in DEMUCS_NEWER_ARCH_TYPES if x in self.selected_download_var.get()]
@@ -3725,6 +3731,7 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for widget in self.download_center_Buttons:widget.configure(state=tk.NORMAL) for widget in self.download_center_Buttons:widget.configure(state=tk.NORMAL)
self.refresh_list_Button.configure(state=tk.NORMAL) self.refresh_list_Button.configure(state=tk.NORMAL)
self.manual_download_Button.configure(state=tk.NORMAL)
self.enable_tabs() self.enable_tabs()
self.stop_download_Button_DISABLE() self.stop_download_Button_DISABLE()
@@ -4493,7 +4500,6 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
inputPaths = self.inputPaths inputPaths = self.inputPaths
inputPath_total_len = len(inputPaths) inputPath_total_len = len(inputPaths)
is_model_sample_mode = self.model_sample_mode_var.get() is_model_sample_mode = self.model_sample_mode_var.get()
try: try:
if self.chosen_process_method_var.get() == ENSEMBLE_MODE: if self.chosen_process_method_var.get() == ENSEMBLE_MODE:
model, ensemble = self.assemble_model_data(), Ensembler() model, ensemble = self.assemble_model_data(), Ensembler()
@@ -4528,19 +4534,19 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for current_model_num, current_model in enumerate(model, start=1): for current_model_num, current_model in enumerate(model, start=1):
self.iteration += 1 self.iteration += 1
if is_ensemble: if is_ensemble:
self.command_Text.write(f'Ensemble Mode - {current_model.model_basename} - Model {current_model_num}/{len(model)}{NEW_LINES}') self.command_Text.write(f'Ensemble Mode - {current_model.model_basename} - Model {current_model_num}/{len(model)}{NEW_LINES}')
model_name_text = f'({current_model.model_basename})' if not is_ensemble else '' model_name_text = f'({current_model.model_basename})' if not is_ensemble else ''
self.command_Text.write(base_text + f'Loading model {model_name_text}...') self.command_Text.write(base_text + f'Loading model {model_name_text}...')
progress_kwargs = {'model_count': true_model_count, progress_kwargs = {'model_count': true_model_count,
'total_files': inputPath_total_len} 'total_files': inputPath_total_len}
set_progress_bar = lambda step, inference_iterations=0:self.process_update_progress(**progress_kwargs, step=(step + (inference_iterations))) set_progress_bar = lambda step, inference_iterations=0:self.process_update_progress(**progress_kwargs, step=(step + (inference_iterations)))
write_to_console = lambda progress_text, base_text=base_text:self.command_Text.write(base_text + progress_text) write_to_console = lambda progress_text, base_text=base_text:self.command_Text.write(base_text + progress_text)
audio_file_base = f"{file_num}_{os.path.splitext(os.path.basename(audio_file))[0]}" audio_file_base = f"{file_num}_{os.path.splitext(os.path.basename(audio_file))[0]}"
audio_file_base = audio_file_base if not self.is_testing_audio_var.get() or is_ensemble else f"{round(time.time())}_{audio_file_base}" audio_file_base = audio_file_base if not self.is_testing_audio_var.get() or is_ensemble else f"{round(time.time())}_{audio_file_base}"
audio_file_base = audio_file_base if not is_ensemble else f"{audio_file_base}_{current_model.model_basename}" audio_file_base = audio_file_base if not is_ensemble else f"{audio_file_base}_{current_model.model_basename}"
@@ -4563,14 +4569,12 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
'list_all_models': self.all_models, 'list_all_models': self.all_models,
'is_ensemble_master': is_ensemble, 'is_ensemble_master': is_ensemble,
'is_4_stem_ensemble': True if self.ensemble_main_stem_var.get() == FOUR_STEM_ENSEMBLE and is_ensemble else False} 'is_4_stem_ensemble': True if self.ensemble_main_stem_var.get() == FOUR_STEM_ENSEMBLE and is_ensemble else False}
if current_model.process_method == VR_ARCH_TYPE: if current_model.process_method == VR_ARCH_TYPE:
seperator = SeperateVR(current_model, process_data) seperator = SeperateVR(current_model, process_data)
if current_model.process_method == MDX_ARCH_TYPE: if current_model.process_method == MDX_ARCH_TYPE:
seperator = SeperateMDX(current_model, process_data) seperator = SeperateMDX(current_model, process_data)
if current_model.process_method == DEMUCS_ARCH_TYPE: if current_model.process_method == DEMUCS_ARCH_TYPE:
seperator = SeperateDemucs(current_model, process_data) seperator = SeperateDemucs(current_model, process_data)
seperator.seperate() seperator.seperate()
if is_ensemble: if is_ensemble:
@@ -4640,7 +4644,6 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for key, value in DEFAULT_DATA.items(): for key, value in DEFAULT_DATA.items():
if not key in data.keys(): if not key in data.keys():
data = {**data, **{key:value}} data = {**data, **{key:value}}
print('missing setting: ', key)
## ADD_BUTTON ## ADD_BUTTON
self.chosen_process_method_var = tk.StringVar(value=data['chosen_process_method']) self.chosen_process_method_var = tk.StringVar(value=data['chosen_process_method'])
@@ -4748,7 +4751,6 @@ class MainWindow(TkinterDnD.Tk if is_dnd_compatible else tk.Tk):
for key, value in DEFAULT_DATA.items(): for key, value in DEFAULT_DATA.items():
if not key in loaded_setting.keys(): if not key in loaded_setting.keys():
loaded_setting = {**loaded_setting, **{key:value}} loaded_setting = {**loaded_setting, **{key:value}}
print('missing setting: ', key)
if not process_method or process_method == VR_ARCH_PM: if not process_method or process_method == VR_ARCH_PM:
self.vr_model_var.set(loaded_setting['vr_model']) self.vr_model_var.set(loaded_setting['vr_model'])
@@ -4986,7 +4988,8 @@ def vip_downloads(password, link_type=VIP_REPO):
length=32, length=32,
salt=link_type[0], salt=link_type[0],
iterations=390000,) iterations=390000,)
key = base64.urlsafe_b64encode(kdf.derive(bytes(password, 'utf-8'))) key = base64.urlsafe_b64encode(kdf.derive(bytes(password, 'utf-8')))
f = Fernet(key) f = Fernet(key)
@@ -5000,7 +5003,8 @@ if __name__ == "__main__":
from ctypes import windll, wintypes from ctypes import windll, wintypes
windll.user32.SetThreadDpiAwarenessContext(wintypes.HANDLE(-1)) windll.user32.SetThreadDpiAwarenessContext(wintypes.HANDLE(-1))
except Exception as e: except Exception as e:
print(e) if OPERATING_SYSTEM == 'Windows':
print(e)
root = MainWindow() root = MainWindow()
root.update_checkbox_text() root.update_checkbox_text()

View File

@@ -224,13 +224,14 @@ class SeperateAttributes:
class SeperateMDX(SeperateAttributes): class SeperateMDX(SeperateAttributes):
def seperate(self): def seperate(self):
samplerate = 44100 samplerate = 44100
if self.primary_model_name == self.model_basename and self.primary_sources: if self.primary_model_name == self.model_basename and self.primary_sources:
self.primary_source, self.secondary_source = self.load_cached_sources() self.primary_source, self.secondary_source = self.load_cached_sources()
else: else:
self.start_inference() self.start_inference()
if self.is_gpu_conversion >= 0: if self.is_gpu_conversion >= 0:
self.device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') self.device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
run_type = ['CUDAExecutionProvider'] if torch.cuda.is_available() else ['CPUExecutionProvider'] run_type = ['CUDAExecutionProvider'] if torch.cuda.is_available() else ['CPUExecutionProvider']
@@ -668,10 +669,10 @@ class SeperateVR(SeperateAttributes):
for d in range(bands_n, 0, -1): for d in range(bands_n, 0, -1):
bp = self.mp.param['band'][d] bp = self.mp.param['band'][d]
if OPERATING_SYSTEM == 'Windows': if OPERATING_SYSTEM == 'Darwin':
wav_resolution = bp['res_type'] wav_resolution = 'polyphase' if SYSTEM_PROC == ARM or ARM in SYSTEM_ARCH else bp['res_type']
else: else:
wav_resolution = 'polyphase' wav_resolution = bp['res_type']
if d == bands_n: # high-end band if d == bands_n: # high-end band
X_wave[d], _ = librosa.load( X_wave[d], _ = librosa.load(