Add files via upload
This commit is contained in:
104
UVR.py
104
UVR.py
@@ -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()
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user