Commit
·
2809163
1
Parent(s):
dfc1efe
Upload 152 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- gui_data/app_size_values.py +121 -0
- gui_data/change_log.txt +93 -0
- gui_data/complete_chime.wav +0 -0
- gui_data/constants.py +1147 -0
- gui_data/error_handling.py +106 -0
- gui_data/fail_chime.wav +0 -0
- gui_data/fonts/centurygothic/GOTHIC.TTF +0 -0
- gui_data/fonts/centurygothic/GOTHICB.TTF +0 -0
- gui_data/fonts/centurygothic/GOTHICBI.TTF +0 -0
- gui_data/fonts/centurygothic/GOTHICI.TTF +0 -0
- gui_data/img/File.png +0 -0
- gui_data/img/GUI-Icon.ico +0 -0
- gui_data/img/GUI-Icon.png +0 -0
- gui_data/img/UVR-banner.png +0 -0
- gui_data/img/UVR_5_5_0.png +0 -0
- gui_data/img/UVR_5_5_1.png +0 -0
- gui_data/img/UVR_v5_5_MacOS.png +0 -0
- gui_data/img/credits.png +0 -0
- gui_data/img/donate.png +0 -0
- gui_data/img/download.png +0 -0
- gui_data/img/help.png +0 -0
- gui_data/img/key.png +0 -0
- gui_data/img/pause.png +0 -0
- gui_data/img/play.png +0 -0
- gui_data/img/splash.bmp +0 -0
- gui_data/img/stop.png +0 -0
- gui_data/img/stop_player.png +0 -0
- gui_data/old_data_check.py +27 -0
- gui_data/saved_ensembles/saved_ensembles_go_here.txt +1 -0
- gui_data/saved_settings/saved_settings_go_here.txt +1 -0
- gui_data/sv_ttk/__init__.py +67 -0
- gui_data/sv_ttk/sun-valley.tcl +49 -0
- gui_data/sv_ttk/sun-valley_darwin.tcl +49 -0
- gui_data/sv_ttk/theme/dark.tcl +540 -0
- gui_data/sv_ttk/theme/dark/arrow-down.png +0 -0
- gui_data/sv_ttk/theme/dark/arrow-right.png +0 -0
- gui_data/sv_ttk/theme/dark/arrow-up.png +0 -0
- gui_data/sv_ttk/theme/dark/button-accent-disabled.png +0 -0
- gui_data/sv_ttk/theme/dark/button-accent-hover.png +0 -0
- gui_data/sv_ttk/theme/dark/button-accent-pressed.png +0 -0
- gui_data/sv_ttk/theme/dark/button-accent-rest.png +0 -0
- gui_data/sv_ttk/theme/dark/button-close-hover.png +0 -0
- gui_data/sv_ttk/theme/dark/button-close-pressed.png +0 -0
- gui_data/sv_ttk/theme/dark/button-disabled.png +0 -0
- gui_data/sv_ttk/theme/dark/button-hover.png +0 -0
- gui_data/sv_ttk/theme/dark/button-pressed.png +0 -0
- gui_data/sv_ttk/theme/dark/button-rest.png +0 -0
- gui_data/sv_ttk/theme/dark/button-titlebar-hover.png +0 -0
- gui_data/sv_ttk/theme/dark/button-titlebar-pressed.png +0 -0
- gui_data/sv_ttk/theme/dark/card.png +0 -0
gui_data/app_size_values.py
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from screeninfo import get_monitors
|
| 3 |
+
from PIL import Image
|
| 4 |
+
from PIL import ImageTk
|
| 5 |
+
|
| 6 |
+
def get_screen_height():
|
| 7 |
+
monitors = get_monitors()
|
| 8 |
+
if len(monitors) == 0:
|
| 9 |
+
raise Exception("Failed to get screen height")
|
| 10 |
+
return monitors[0].height
|
| 11 |
+
|
| 12 |
+
SCREEN_SIZE_VALUES = {
|
| 13 |
+
"normal": {
|
| 14 |
+
"credits_img":(100, 100),
|
| 15 |
+
## App Size
|
| 16 |
+
'IMAGE_HEIGHT': 140,
|
| 17 |
+
'FILEPATHS_HEIGHT': 75,
|
| 18 |
+
'OPTIONS_HEIGHT': 262,
|
| 19 |
+
'CONVERSIONBUTTON_HEIGHT': 30,
|
| 20 |
+
'COMMAND_HEIGHT': 141,
|
| 21 |
+
'PROGRESS_HEIGHT': 25,
|
| 22 |
+
'PADDING': 7,
|
| 23 |
+
},
|
| 24 |
+
"small": {
|
| 25 |
+
"credits_img":(50, 50),
|
| 26 |
+
## App Size
|
| 27 |
+
'IMAGE_HEIGHT': 135,
|
| 28 |
+
'FILEPATHS_HEIGHT': 85,
|
| 29 |
+
'OPTIONS_HEIGHT': 274,
|
| 30 |
+
'CONVERSIONBUTTON_HEIGHT': 35,
|
| 31 |
+
'COMMAND_HEIGHT': 80,
|
| 32 |
+
'PROGRESS_HEIGHT': 6,
|
| 33 |
+
'PADDING': 5,
|
| 34 |
+
},
|
| 35 |
+
"medium": {
|
| 36 |
+
"credits_img":(50, 50),
|
| 37 |
+
## App Size
|
| 38 |
+
'IMAGE_HEIGHT': 135,
|
| 39 |
+
'FILEPATHS_HEIGHT': 85,
|
| 40 |
+
'OPTIONS_HEIGHT': 274,
|
| 41 |
+
'CONVERSIONBUTTON_HEIGHT': 20,
|
| 42 |
+
'COMMAND_HEIGHT': 115,
|
| 43 |
+
'PROGRESS_HEIGHT': 9,
|
| 44 |
+
'PADDING': 7,
|
| 45 |
+
},
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
try:
|
| 50 |
+
if get_screen_height() >= 900:
|
| 51 |
+
determined_size = SCREEN_SIZE_VALUES["normal"]
|
| 52 |
+
elif get_screen_height() <= 720:
|
| 53 |
+
determined_size = SCREEN_SIZE_VALUES["small"]
|
| 54 |
+
else:
|
| 55 |
+
determined_size = SCREEN_SIZE_VALUES["medium"]
|
| 56 |
+
except:
|
| 57 |
+
determined_size = SCREEN_SIZE_VALUES["normal"]
|
| 58 |
+
|
| 59 |
+
class ImagePath():
|
| 60 |
+
def __init__(self, base_path):
|
| 61 |
+
|
| 62 |
+
img_path = os.path.join(base_path, 'gui_data', 'img')
|
| 63 |
+
credits_path = os.path.join(img_path, 'credits.png')
|
| 64 |
+
donate_path = os.path.join(img_path, 'donate.png')
|
| 65 |
+
download_path = os.path.join(img_path, 'download.png')
|
| 66 |
+
efile_path = os.path.join(img_path, 'File.png')
|
| 67 |
+
help_path = os.path.join(img_path, 'help.png')
|
| 68 |
+
key_path = os.path.join(img_path, 'key.png')
|
| 69 |
+
stop_path = os.path.join(img_path, 'stop.png')
|
| 70 |
+
play_path = os.path.join(img_path, 'play.png')
|
| 71 |
+
pause_path = os.path.join(img_path, 'pause.png')
|
| 72 |
+
self.banner_path = os.path.join(img_path, 'UVR-banner.png')
|
| 73 |
+
|
| 74 |
+
self.efile_img = self.open_image(path=efile_path,size=(20, 20))
|
| 75 |
+
self.stop_img = self.open_image(path=stop_path, size=(20, 20))
|
| 76 |
+
self.play_img = self.open_image(path=play_path, size=(20, 20))
|
| 77 |
+
self.pause_img = self.open_image(path=pause_path, size=(20, 20))
|
| 78 |
+
self.help_img = self.open_image(path=help_path, size=(20, 20))
|
| 79 |
+
self.download_img = self.open_image(path=download_path, size=(30, 30))
|
| 80 |
+
self.donate_img = self.open_image(path=donate_path, size=(30, 30))
|
| 81 |
+
self.key_img = self.open_image(path=key_path, size=(30, 30))
|
| 82 |
+
self.credits_img = self.open_image(path=credits_path, size=determined_size["credits_img"])
|
| 83 |
+
|
| 84 |
+
def open_image(self, path: str, size: tuple = None, keep_aspect: bool = True, rotate: int = 0) -> ImageTk.PhotoImage:
|
| 85 |
+
"""
|
| 86 |
+
Open the image on the path and apply given settings\n
|
| 87 |
+
Paramaters:
|
| 88 |
+
path(str):
|
| 89 |
+
Absolute path of the image
|
| 90 |
+
size(tuple):
|
| 91 |
+
first value - width
|
| 92 |
+
second value - height
|
| 93 |
+
keep_aspect(bool):
|
| 94 |
+
keep aspect ratio of image and resize
|
| 95 |
+
to maximum possible width and height
|
| 96 |
+
(maxima are given by size)
|
| 97 |
+
rotate(int):
|
| 98 |
+
clockwise rotation of image
|
| 99 |
+
Returns(ImageTk.PhotoImage):
|
| 100 |
+
Image of path
|
| 101 |
+
"""
|
| 102 |
+
img = Image.open(path).convert(mode='RGBA')
|
| 103 |
+
ratio = img.height/img.width
|
| 104 |
+
img = img.rotate(angle=-rotate)
|
| 105 |
+
if size is not None:
|
| 106 |
+
size = (int(size[0]), int(size[1]))
|
| 107 |
+
if keep_aspect:
|
| 108 |
+
img = img.resize((size[0], int(size[0] * ratio)), Image.ANTIALIAS)
|
| 109 |
+
else:
|
| 110 |
+
img = img.resize(size, Image.ANTIALIAS)
|
| 111 |
+
|
| 112 |
+
return ImageTk.PhotoImage(img)
|
| 113 |
+
|
| 114 |
+
class AdjustedValues():
|
| 115 |
+
IMAGE_HEIGHT = determined_size["IMAGE_HEIGHT"]
|
| 116 |
+
FILEPATHS_HEIGHT = determined_size["FILEPATHS_HEIGHT"]
|
| 117 |
+
OPTIONS_HEIGHT = determined_size["OPTIONS_HEIGHT"]
|
| 118 |
+
CONVERSIONBUTTON_HEIGHT = determined_size["CONVERSIONBUTTON_HEIGHT"]
|
| 119 |
+
COMMAND_HEIGHT = determined_size["COMMAND_HEIGHT"]
|
| 120 |
+
PROGRESS_HEIGHT = determined_size["PROGRESS_HEIGHT"]
|
| 121 |
+
PADDING = determined_size["PADDING"]
|
gui_data/change_log.txt
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Most Recent Changes:
|
| 2 |
+
|
| 3 |
+
~ Fixed Download Center model list issue.
|
| 4 |
+
~ Fixed audio clip in ensemble mode.
|
| 5 |
+
~ Fixed output model name issue in ensemble mode.
|
| 6 |
+
~ Added "Batch Mode" for MDX-Net to increase performance.
|
| 7 |
+
~ Batch Mode is more memory efficient.
|
| 8 |
+
~ Batch Mode produces the best output, regardless of batch size.
|
| 9 |
+
~ Added Batch Mode for VR Architecture.
|
| 10 |
+
~ Added Mixer Mode for Demucs.
|
| 11 |
+
~ This option may improve separation for some 4-stem models.
|
| 12 |
+
|
| 13 |
+
Fixes & Changes going from UVR v5.4 to v5.5:
|
| 14 |
+
|
| 15 |
+
~ The progress bar is now fully synced up with every process in the application.
|
| 16 |
+
~ Fixed low-resolution icon.
|
| 17 |
+
~ Added the ability to download models manually if the application can't connect
|
| 18 |
+
to the internet.
|
| 19 |
+
~ Drag-n-drop is functional across all os platforms.
|
| 20 |
+
~ Resolved mp3 tag issue in MacOS version.
|
| 21 |
+
|
| 22 |
+
Performance:
|
| 23 |
+
|
| 24 |
+
~ Model load times are faster.
|
| 25 |
+
~ Importing/exporting audio files is faster.
|
| 26 |
+
|
| 27 |
+
MacOS M1 Notes:
|
| 28 |
+
|
| 29 |
+
~ The GPU Conversion checkbox will enable MPS for GPU acceleration. However,
|
| 30 |
+
only the VR Architecture models are currently compatible with it.
|
| 31 |
+
|
| 32 |
+
New Options:
|
| 33 |
+
|
| 34 |
+
~ Select Saved Settings option - Allows the user to save the current settings
|
| 35 |
+
of the whole application. You can also load a saved setting or reset them to
|
| 36 |
+
the default.
|
| 37 |
+
~ Right-click menu - Allows for quick access to important options.
|
| 38 |
+
~ Help Hints option - When enabled, users can hover over options to see a pop-up
|
| 39 |
+
text that describes that option. The right-clicking option also allows copying
|
| 40 |
+
the "Help Hint" text.
|
| 41 |
+
~ Secondary Model Mode - This option is an expanded version of the "Demucs Model"
|
| 42 |
+
option that was only available to MDX-Net. Except now, this option is available
|
| 43 |
+
in all three AI Networks and for any stem. Any model can now be Secondary, and
|
| 44 |
+
the user can choose the amount of influence it has on the final result.
|
| 45 |
+
~ Robust caching for ensemble mode, allowing for much faster processing times.
|
| 46 |
+
~ Clicking the "Input" field will pop up a window allowing the user to review the selected audio inputs. Within this menu, users can:
|
| 47 |
+
~ Remove inputs.
|
| 48 |
+
~ Verify inputs.
|
| 49 |
+
~ Create samples of chosen inputs.
|
| 50 |
+
~ "Sample Mode" option - Allows the user to process only part of a track to sample
|
| 51 |
+
settings or a model without running a full conversion.
|
| 52 |
+
~ The number in the parentheses is the current number of seconds the generated
|
| 53 |
+
sample will be.
|
| 54 |
+
~ You can choose the number of seconds to extract from the track in the "Additional
|
| 55 |
+
Settings" menu.
|
| 56 |
+
|
| 57 |
+
VR Architecture:
|
| 58 |
+
|
| 59 |
+
~ Ability to toggle "High-End Processing."
|
| 60 |
+
~ Ability to change the post-processing threshold.
|
| 61 |
+
~ Support for the latest VR architecture
|
| 62 |
+
~ Crop Size and Batch Size are specifically for models using the latest
|
| 63 |
+
architecture only.
|
| 64 |
+
|
| 65 |
+
MDX-NET:
|
| 66 |
+
|
| 67 |
+
~ Denoise Output option results in cleaner results,
|
| 68 |
+
but the processing time will be longer. This option has replaced Noise Reduction.
|
| 69 |
+
~ Spectral Inversion option uses spectral inversion techniques for a
|
| 70 |
+
cleaner secondary stem result. This option may slow down the audio export process.
|
| 71 |
+
~ Secondary stem now has the same frequency cut-off as the main stem.
|
| 72 |
+
|
| 73 |
+
Demucs:
|
| 74 |
+
|
| 75 |
+
~ Demucs v4 models are now supported, including the 6-stem model.
|
| 76 |
+
~ Ability to combine remaining stems instead of inverting selected stem with the
|
| 77 |
+
mixture only when a user does not select "All Stems".
|
| 78 |
+
~ A Pre-process model that allows the user to run an inference through a robust
|
| 79 |
+
vocal or instrumental model and separate the remaining stems from its generated
|
| 80 |
+
instrumental mix. This option can significantly reduce vocal bleed in other
|
| 81 |
+
Demucs-generated non-vocal stems.
|
| 82 |
+
~ The Pre-process model is intended for Demucs separations for all stems except
|
| 83 |
+
vocals and instrumentals.
|
| 84 |
+
|
| 85 |
+
Ensemble Mode:
|
| 86 |
+
|
| 87 |
+
~ Ensemble Mode has been extended to include the following:
|
| 88 |
+
~ Averaging is a new algorithm that averages the final results.
|
| 89 |
+
~ Unlimited models in the ensemble.
|
| 90 |
+
~ Ability to save different ensembles.
|
| 91 |
+
~ Ability to ensemble outputs for all individual stem types.
|
| 92 |
+
~ Ability to choose unique ensemble algorithms.
|
| 93 |
+
~ Ability to ensemble all 4 Demucs stems at once.
|
gui_data/complete_chime.wav
ADDED
|
Binary file (357 kB). View file
|
|
|
gui_data/constants.py
ADDED
|
@@ -0,0 +1,1147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import platform
|
| 2 |
+
|
| 3 |
+
#Platform Details
|
| 4 |
+
OPERATING_SYSTEM = platform.system()
|
| 5 |
+
SYSTEM_ARCH = platform.platform()
|
| 6 |
+
SYSTEM_PROC = platform.processor()
|
| 7 |
+
ARM = 'arm'
|
| 8 |
+
|
| 9 |
+
#Main Font
|
| 10 |
+
MAIN_FONT_NAME = "Century Gothic"
|
| 11 |
+
|
| 12 |
+
#Model Types
|
| 13 |
+
VR_ARCH_TYPE = 'VR Arc'
|
| 14 |
+
MDX_ARCH_TYPE = 'MDX-Net'
|
| 15 |
+
DEMUCS_ARCH_TYPE = 'Demucs'
|
| 16 |
+
VR_ARCH_PM = 'VR Architecture'
|
| 17 |
+
ENSEMBLE_MODE = 'Ensemble Mode'
|
| 18 |
+
ENSEMBLE_STEM_CHECK = 'Ensemble Stem'
|
| 19 |
+
SECONDARY_MODEL = 'Secondary Model'
|
| 20 |
+
DEMUCS_6_STEM_MODEL = 'htdemucs_6s'
|
| 21 |
+
|
| 22 |
+
DEMUCS_V3_ARCH_TYPE = 'Demucs v3'
|
| 23 |
+
DEMUCS_V4_ARCH_TYPE = 'Demucs v4'
|
| 24 |
+
DEMUCS_NEWER_ARCH_TYPES = [DEMUCS_V3_ARCH_TYPE, DEMUCS_V4_ARCH_TYPE]
|
| 25 |
+
|
| 26 |
+
DEMUCS_V1 = 'v1'
|
| 27 |
+
DEMUCS_V2 = 'v2'
|
| 28 |
+
DEMUCS_V3 = 'v3'
|
| 29 |
+
DEMUCS_V4 = 'v4'
|
| 30 |
+
|
| 31 |
+
DEMUCS_V1_TAG = 'v1 | '
|
| 32 |
+
DEMUCS_V2_TAG = 'v2 | '
|
| 33 |
+
DEMUCS_V3_TAG = 'v3 | '
|
| 34 |
+
DEMUCS_V4_TAG = 'v4 | '
|
| 35 |
+
DEMUCS_NEWER_TAGS = [DEMUCS_V3_TAG, DEMUCS_V4_TAG]
|
| 36 |
+
|
| 37 |
+
DEMUCS_VERSION_MAPPER = {
|
| 38 |
+
DEMUCS_V1:DEMUCS_V1_TAG,
|
| 39 |
+
DEMUCS_V2:DEMUCS_V2_TAG,
|
| 40 |
+
DEMUCS_V3:DEMUCS_V3_TAG,
|
| 41 |
+
DEMUCS_V4:DEMUCS_V4_TAG}
|
| 42 |
+
|
| 43 |
+
#Download Center
|
| 44 |
+
DOWNLOAD_FAILED = 'Download Failed'
|
| 45 |
+
DOWNLOAD_STOPPED = 'Download Stopped'
|
| 46 |
+
DOWNLOAD_COMPLETE = 'Download Complete'
|
| 47 |
+
DOWNLOAD_UPDATE_COMPLETE = 'Update Download Complete'
|
| 48 |
+
SETTINGS_MENU_EXIT = 'exit'
|
| 49 |
+
NO_CONNECTION = 'No Internet Connection'
|
| 50 |
+
VIP_SELECTION = 'VIP:'
|
| 51 |
+
DEVELOPER_SELECTION = 'VIP:'
|
| 52 |
+
NO_NEW_MODELS = 'All Available Models Downloaded'
|
| 53 |
+
ENSEMBLE_PARTITION = ': '
|
| 54 |
+
NO_MODEL = 'No Model Selected'
|
| 55 |
+
CHOOSE_MODEL = 'Choose Model'
|
| 56 |
+
SINGLE_DOWNLOAD = 'Downloading Item 1/1...'
|
| 57 |
+
DOWNLOADING_ITEM = 'Downloading Item'
|
| 58 |
+
FILE_EXISTS = 'File already exists!'
|
| 59 |
+
DOWNLOADING_UPDATE = 'Downloading Update...'
|
| 60 |
+
DOWNLOAD_MORE = 'Download More Models'
|
| 61 |
+
|
| 62 |
+
#Menu Options
|
| 63 |
+
|
| 64 |
+
AUTO_SELECT = 'Auto'
|
| 65 |
+
|
| 66 |
+
#LINKS
|
| 67 |
+
DOWNLOAD_CHECKS = "https://raw.githubusercontent.com/TRvlvr/application_data/main/filelists/download_checks.json"
|
| 68 |
+
MDX_MODEL_DATA_LINK = "https://raw.githubusercontent.com/TRvlvr/application_data/main/mdx_model_data/model_data.json"
|
| 69 |
+
VR_MODEL_DATA_LINK = "https://raw.githubusercontent.com/TRvlvr/application_data/main/vr_model_data/model_data.json"
|
| 70 |
+
|
| 71 |
+
DEMUCS_MODEL_NAME_DATA_LINK = "https://raw.githubusercontent.com/TRvlvr/application_data/main/demucs_model_data/model_name_mapper.json"
|
| 72 |
+
MDX_MODEL_NAME_DATA_LINK = "https://raw.githubusercontent.com/TRvlvr/application_data/main/mdx_model_data/model_name_mapper.json"
|
| 73 |
+
|
| 74 |
+
DONATE_LINK_BMAC = "https://www.buymeacoffee.com/uvr5"
|
| 75 |
+
DONATE_LINK_PATREON = "https://www.patreon.com/uvr"
|
| 76 |
+
|
| 77 |
+
#DOWNLOAD REPOS
|
| 78 |
+
NORMAL_REPO = "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/"
|
| 79 |
+
UPDATE_REPO = "https://github.com/TRvlvr/model_repo/releases/download/uvr_update_patches/"
|
| 80 |
+
|
| 81 |
+
UPDATE_MAC_ARM_REPO = "https://github.com/Anjok07/ultimatevocalremovergui/releases/download/v5.5.0/Ultimate_Vocal_Remover_v5_5_MacOS_arm64.dmg"
|
| 82 |
+
UPDATE_MAC_X86_64_REPO = "https://github.com/Anjok07/ultimatevocalremovergui/releases/download/v5.5.0/Ultimate_Vocal_Remover_v5_5_MacOS_x86_64.dmg"
|
| 83 |
+
UPDATE_LINUX_REPO = "https://github.com/Anjok07/ultimatevocalremovergui#linux-installation"
|
| 84 |
+
UPDATE_REPO = "https://github.com/TRvlvr/model_repo/releases/download/uvr_update_patches/"
|
| 85 |
+
|
| 86 |
+
ISSUE_LINK = 'https://github.com/Anjok07/ultimatevocalremovergui/issues/new'
|
| 87 |
+
VIP_REPO = b'\xf3\xc2W\x19\x1foI)\xc2\xa9\xcc\xb67(Z\xf5',\
|
| 88 |
+
b'gAAAAABjQAIQ-NpNMMxMedpKHHb7ze_nqB05hw0YhbOy3pFzuzDrfqumn8_qvraxEoUpZC5ZXC0gGvfDxFMqyq9VWbYKlA67SUFI_wZB6QoVyGI581vs7kaGfUqlXHIdDS6tQ_U-BfjbEAK9EU_74-R2zXjz8Xzekw=='
|
| 89 |
+
NO_CODE = 'incorrect_code'
|
| 90 |
+
|
| 91 |
+
#Extensions
|
| 92 |
+
|
| 93 |
+
ONNX = '.onnx'
|
| 94 |
+
CKPT = '.ckpt'
|
| 95 |
+
YAML = '.yaml'
|
| 96 |
+
PTH = '.pth'
|
| 97 |
+
TH_EXT = '.th'
|
| 98 |
+
JSON = '.json'
|
| 99 |
+
|
| 100 |
+
#GUI Buttons
|
| 101 |
+
|
| 102 |
+
START_PROCESSING = 'Start Processing'
|
| 103 |
+
WAIT_PROCESSING = 'Please wait...'
|
| 104 |
+
STOP_PROCESSING = 'Halting process, please wait...'
|
| 105 |
+
LOADING_MODELS = 'Loading models...'
|
| 106 |
+
|
| 107 |
+
#---Messages and Logs----
|
| 108 |
+
|
| 109 |
+
MISSING_MODEL = 'missing'
|
| 110 |
+
MODEL_PRESENT = 'present'
|
| 111 |
+
|
| 112 |
+
UNRECOGNIZED_MODEL = 'Unrecognized Model Detected', ' is an unrecognized model.\n\n' + \
|
| 113 |
+
'Would you like to select the correct parameters before continuing?'
|
| 114 |
+
|
| 115 |
+
STOP_PROCESS_CONFIRM = 'Confirmation', 'You are about to stop all active processes.\n\nAre you sure you wish to continue?'
|
| 116 |
+
NO_ENSEMBLE_SELECTED = 'No Models Selected', 'Please select ensemble and try again.'
|
| 117 |
+
PICKLE_CORRU = 'File Corrupted', 'Unable to load this ensemble.\n\n' + \
|
| 118 |
+
'Would you like to remove this ensemble from your list?'
|
| 119 |
+
DELETE_ENS_ENTRY = 'Confirm Removal', 'Are you sure you want to remove this entry?'
|
| 120 |
+
|
| 121 |
+
ALL_STEMS = 'All Stems'
|
| 122 |
+
VOCAL_STEM = 'Vocals'
|
| 123 |
+
INST_STEM = 'Instrumental'
|
| 124 |
+
OTHER_STEM = 'Other'
|
| 125 |
+
BASS_STEM = 'Bass'
|
| 126 |
+
DRUM_STEM = 'Drums'
|
| 127 |
+
GUITAR_STEM = 'Guitar'
|
| 128 |
+
PIANO_STEM = 'Piano'
|
| 129 |
+
SYNTH_STEM = 'Synthesizer'
|
| 130 |
+
STRINGS_STEM = 'Strings'
|
| 131 |
+
WOODWINDS_STEM = 'Woodwinds'
|
| 132 |
+
BRASS_STEM = 'Brass'
|
| 133 |
+
WIND_INST_STEM = 'Wind Inst'
|
| 134 |
+
NO_OTHER_STEM = 'No Other'
|
| 135 |
+
NO_BASS_STEM = 'No Bass'
|
| 136 |
+
NO_DRUM_STEM = 'No Drums'
|
| 137 |
+
NO_GUITAR_STEM = 'No Guitar'
|
| 138 |
+
NO_PIANO_STEM = 'No Piano'
|
| 139 |
+
NO_SYNTH_STEM = 'No Synthesizer'
|
| 140 |
+
NO_STRINGS_STEM = 'No Strings'
|
| 141 |
+
NO_WOODWINDS_STEM = 'No Woodwinds'
|
| 142 |
+
NO_WIND_INST_STEM = 'No Wind Inst'
|
| 143 |
+
NO_BRASS_STEM = 'No Brass'
|
| 144 |
+
PRIMARY_STEM = 'Primary Stem'
|
| 145 |
+
SECONDARY_STEM = 'Secondary Stem'
|
| 146 |
+
|
| 147 |
+
#Other Constants
|
| 148 |
+
DEMUCS_2_SOURCE = ["instrumental", "vocals"]
|
| 149 |
+
DEMUCS_4_SOURCE = ["drums", "bass", "other", "vocals"]
|
| 150 |
+
|
| 151 |
+
DEMUCS_2_SOURCE_MAPPER = {
|
| 152 |
+
INST_STEM: 0,
|
| 153 |
+
VOCAL_STEM: 1}
|
| 154 |
+
|
| 155 |
+
DEMUCS_4_SOURCE_MAPPER = {
|
| 156 |
+
BASS_STEM: 0,
|
| 157 |
+
DRUM_STEM: 1,
|
| 158 |
+
OTHER_STEM: 2,
|
| 159 |
+
VOCAL_STEM: 3}
|
| 160 |
+
|
| 161 |
+
DEMUCS_6_SOURCE_MAPPER = {
|
| 162 |
+
BASS_STEM: 0,
|
| 163 |
+
DRUM_STEM: 1,
|
| 164 |
+
OTHER_STEM: 2,
|
| 165 |
+
VOCAL_STEM: 3,
|
| 166 |
+
GUITAR_STEM:4,
|
| 167 |
+
PIANO_STEM:5}
|
| 168 |
+
|
| 169 |
+
DEMUCS_4_SOURCE_LIST = [BASS_STEM, DRUM_STEM, OTHER_STEM, VOCAL_STEM]
|
| 170 |
+
DEMUCS_6_SOURCE_LIST = [BASS_STEM, DRUM_STEM, OTHER_STEM, VOCAL_STEM, GUITAR_STEM, PIANO_STEM]
|
| 171 |
+
|
| 172 |
+
DEMUCS_UVR_MODEL = 'UVR_Model'
|
| 173 |
+
|
| 174 |
+
CHOOSE_STEM_PAIR = 'Choose Stem Pair'
|
| 175 |
+
|
| 176 |
+
STEM_SET_MENU = (VOCAL_STEM,
|
| 177 |
+
INST_STEM,
|
| 178 |
+
OTHER_STEM,
|
| 179 |
+
BASS_STEM,
|
| 180 |
+
DRUM_STEM,
|
| 181 |
+
GUITAR_STEM,
|
| 182 |
+
PIANO_STEM,
|
| 183 |
+
SYNTH_STEM,
|
| 184 |
+
STRINGS_STEM,
|
| 185 |
+
WOODWINDS_STEM,
|
| 186 |
+
BRASS_STEM,
|
| 187 |
+
WIND_INST_STEM,
|
| 188 |
+
NO_OTHER_STEM,
|
| 189 |
+
NO_BASS_STEM,
|
| 190 |
+
NO_DRUM_STEM,
|
| 191 |
+
NO_GUITAR_STEM,
|
| 192 |
+
NO_PIANO_STEM,
|
| 193 |
+
NO_SYNTH_STEM,
|
| 194 |
+
NO_STRINGS_STEM,
|
| 195 |
+
NO_WOODWINDS_STEM,
|
| 196 |
+
NO_BRASS_STEM,
|
| 197 |
+
NO_WIND_INST_STEM)
|
| 198 |
+
|
| 199 |
+
STEM_PAIR_MAPPER = {
|
| 200 |
+
VOCAL_STEM: INST_STEM,
|
| 201 |
+
INST_STEM: VOCAL_STEM,
|
| 202 |
+
OTHER_STEM: NO_OTHER_STEM,
|
| 203 |
+
BASS_STEM: NO_BASS_STEM,
|
| 204 |
+
DRUM_STEM: NO_DRUM_STEM,
|
| 205 |
+
GUITAR_STEM: NO_GUITAR_STEM,
|
| 206 |
+
PIANO_STEM: NO_PIANO_STEM,
|
| 207 |
+
SYNTH_STEM: NO_SYNTH_STEM,
|
| 208 |
+
STRINGS_STEM: NO_STRINGS_STEM,
|
| 209 |
+
WOODWINDS_STEM: NO_WOODWINDS_STEM,
|
| 210 |
+
BRASS_STEM: NO_BRASS_STEM,
|
| 211 |
+
WIND_INST_STEM: NO_WIND_INST_STEM,
|
| 212 |
+
NO_OTHER_STEM: OTHER_STEM,
|
| 213 |
+
NO_BASS_STEM: BASS_STEM,
|
| 214 |
+
NO_DRUM_STEM: DRUM_STEM,
|
| 215 |
+
NO_GUITAR_STEM: GUITAR_STEM,
|
| 216 |
+
NO_PIANO_STEM: PIANO_STEM,
|
| 217 |
+
NO_SYNTH_STEM: SYNTH_STEM,
|
| 218 |
+
NO_STRINGS_STEM: STRINGS_STEM,
|
| 219 |
+
NO_WOODWINDS_STEM: WOODWINDS_STEM,
|
| 220 |
+
NO_BRASS_STEM: BRASS_STEM,
|
| 221 |
+
NO_WIND_INST_STEM: WIND_INST_STEM,
|
| 222 |
+
PRIMARY_STEM: SECONDARY_STEM}
|
| 223 |
+
|
| 224 |
+
NON_ACCOM_STEMS = (
|
| 225 |
+
VOCAL_STEM,
|
| 226 |
+
OTHER_STEM,
|
| 227 |
+
BASS_STEM,
|
| 228 |
+
DRUM_STEM,
|
| 229 |
+
GUITAR_STEM,
|
| 230 |
+
PIANO_STEM,
|
| 231 |
+
SYNTH_STEM,
|
| 232 |
+
STRINGS_STEM,
|
| 233 |
+
WOODWINDS_STEM,
|
| 234 |
+
BRASS_STEM,
|
| 235 |
+
WIND_INST_STEM)
|
| 236 |
+
|
| 237 |
+
MDX_NET_FREQ_CUT = [VOCAL_STEM, INST_STEM]
|
| 238 |
+
|
| 239 |
+
DEMUCS_4_STEM_OPTIONS = (ALL_STEMS, VOCAL_STEM, OTHER_STEM, BASS_STEM, DRUM_STEM)
|
| 240 |
+
DEMUCS_6_STEM_OPTIONS = (ALL_STEMS, VOCAL_STEM, OTHER_STEM, BASS_STEM, DRUM_STEM, GUITAR_STEM, PIANO_STEM)
|
| 241 |
+
DEMUCS_2_STEM_OPTIONS = (VOCAL_STEM, INST_STEM)
|
| 242 |
+
DEMUCS_4_STEM_CHECK = (OTHER_STEM, BASS_STEM, DRUM_STEM)
|
| 243 |
+
|
| 244 |
+
#Menu Dropdowns
|
| 245 |
+
|
| 246 |
+
VOCAL_PAIR = f'{VOCAL_STEM}/{INST_STEM}'
|
| 247 |
+
INST_PAIR = f'{INST_STEM}/{VOCAL_STEM}'
|
| 248 |
+
OTHER_PAIR = f'{OTHER_STEM}/{NO_OTHER_STEM}'
|
| 249 |
+
DRUM_PAIR = f'{DRUM_STEM}/{NO_DRUM_STEM}'
|
| 250 |
+
BASS_PAIR = f'{BASS_STEM}/{NO_BASS_STEM}'
|
| 251 |
+
FOUR_STEM_ENSEMBLE = '4 Stem Ensemble'
|
| 252 |
+
|
| 253 |
+
ENSEMBLE_MAIN_STEM = (CHOOSE_STEM_PAIR, VOCAL_PAIR, OTHER_PAIR, DRUM_PAIR, BASS_PAIR, FOUR_STEM_ENSEMBLE)
|
| 254 |
+
|
| 255 |
+
MIN_SPEC = 'Min Spec'
|
| 256 |
+
MAX_SPEC = 'Max Spec'
|
| 257 |
+
AUDIO_AVERAGE = 'Average'
|
| 258 |
+
|
| 259 |
+
MAX_MIN = f'{MAX_SPEC}/{MIN_SPEC}'
|
| 260 |
+
MAX_MAX = f'{MAX_SPEC}/{MAX_SPEC}'
|
| 261 |
+
MAX_AVE = f'{MAX_SPEC}/{AUDIO_AVERAGE}'
|
| 262 |
+
MIN_MAX = f'{MIN_SPEC}/{MAX_SPEC}'
|
| 263 |
+
MIN_MIX = f'{MIN_SPEC}/{MIN_SPEC}'
|
| 264 |
+
MIN_AVE = f'{MIN_SPEC}/{AUDIO_AVERAGE}'
|
| 265 |
+
AVE_MAX = f'{AUDIO_AVERAGE}/{MAX_SPEC}'
|
| 266 |
+
AVE_MIN = f'{AUDIO_AVERAGE}/{MIN_SPEC}'
|
| 267 |
+
AVE_AVE = f'{AUDIO_AVERAGE}/{AUDIO_AVERAGE}'
|
| 268 |
+
|
| 269 |
+
ENSEMBLE_TYPE = (MAX_MIN, MAX_MAX, MAX_AVE, MIN_MAX, MIN_MIX, MIN_AVE, AVE_MAX, AVE_MIN, AVE_AVE)
|
| 270 |
+
ENSEMBLE_TYPE_4_STEM = (MAX_SPEC, MIN_SPEC, AUDIO_AVERAGE)
|
| 271 |
+
|
| 272 |
+
BATCH_MODE = 'Batch Mode'
|
| 273 |
+
BETA_VERSION = 'BETA'
|
| 274 |
+
DEF_OPT = 'Default'
|
| 275 |
+
|
| 276 |
+
CHUNKS = (AUTO_SELECT, '1', '5', '10', '15', '20',
|
| 277 |
+
'25', '30', '35', '40', '45', '50',
|
| 278 |
+
'55', '60', '65', '70', '75', '80',
|
| 279 |
+
'85', '90', '95', 'Full')
|
| 280 |
+
|
| 281 |
+
BATCH_SIZE = (DEF_OPT, '2', '3', '4', '5',
|
| 282 |
+
'6', '7', '8', '9', '10')
|
| 283 |
+
|
| 284 |
+
VOL_COMPENSATION = (AUTO_SELECT, '1.035', '1.08')
|
| 285 |
+
|
| 286 |
+
MARGIN_SIZE = ('44100', '22050', '11025')
|
| 287 |
+
|
| 288 |
+
AUDIO_TOOLS = 'Audio Tools'
|
| 289 |
+
|
| 290 |
+
MANUAL_ENSEMBLE = 'Manual Ensemble'
|
| 291 |
+
TIME_STRETCH = 'Time Stretch'
|
| 292 |
+
CHANGE_PITCH = 'Change Pitch'
|
| 293 |
+
ALIGN_INPUTS = 'Align Inputs'
|
| 294 |
+
|
| 295 |
+
if OPERATING_SYSTEM == 'Windows' or OPERATING_SYSTEM == 'Darwin':
|
| 296 |
+
AUDIO_TOOL_OPTIONS = (MANUAL_ENSEMBLE, TIME_STRETCH, CHANGE_PITCH, ALIGN_INPUTS)
|
| 297 |
+
else:
|
| 298 |
+
AUDIO_TOOL_OPTIONS = (MANUAL_ENSEMBLE, ALIGN_INPUTS)
|
| 299 |
+
|
| 300 |
+
MANUAL_ENSEMBLE_OPTIONS = (MIN_SPEC, MAX_SPEC, AUDIO_AVERAGE)
|
| 301 |
+
|
| 302 |
+
PROCESS_METHODS = (VR_ARCH_PM, MDX_ARCH_TYPE, DEMUCS_ARCH_TYPE, ENSEMBLE_MODE, AUDIO_TOOLS)
|
| 303 |
+
|
| 304 |
+
DEMUCS_SEGMENTS = ('Default', '1', '5', '10', '15', '20',
|
| 305 |
+
'25', '30', '35', '40', '45', '50',
|
| 306 |
+
'55', '60', '65', '70', '75', '80',
|
| 307 |
+
'85', '90', '95', '100')
|
| 308 |
+
|
| 309 |
+
DEMUCS_SHIFTS = (0, 1, 2, 3, 4, 5,
|
| 310 |
+
6, 7, 8, 9, 10, 11,
|
| 311 |
+
12, 13, 14, 15, 16, 17,
|
| 312 |
+
18, 19, 20)
|
| 313 |
+
|
| 314 |
+
DEMUCS_OVERLAP = (0.25, 0.50, 0.75, 0.99)
|
| 315 |
+
|
| 316 |
+
VR_AGGRESSION = (1, 2, 3, 4, 5,
|
| 317 |
+
6, 7, 8, 9, 10, 11,
|
| 318 |
+
12, 13, 14, 15, 16, 17,
|
| 319 |
+
18, 19, 20)
|
| 320 |
+
|
| 321 |
+
VR_WINDOW = ('320', '512','1024')
|
| 322 |
+
VR_CROP = ('256', '512', '1024')
|
| 323 |
+
POST_PROCESSES_THREASHOLD_VALUES = ('0.1', '0.2', '0.3')
|
| 324 |
+
|
| 325 |
+
MDX_POP_PRO = ('MDX-NET_Noise_Profile_14_kHz', 'MDX-NET_Noise_Profile_17_kHz', 'MDX-NET_Noise_Profile_Full_Band')
|
| 326 |
+
MDX_POP_STEMS = ('Vocals', 'Instrumental', 'Other', 'Drums', 'Bass')
|
| 327 |
+
MDX_POP_NFFT = ('4096', '5120', '6144', '7680', '8192', '16384')
|
| 328 |
+
MDX_POP_DIMF = ('2048', '3072', '4096')
|
| 329 |
+
|
| 330 |
+
SAVE_ENSEMBLE = 'Save Ensemble'
|
| 331 |
+
CLEAR_ENSEMBLE = 'Clear Selection(s)'
|
| 332 |
+
MENU_SEPARATOR = 35*'•'
|
| 333 |
+
CHOOSE_ENSEMBLE_OPTION = 'Choose Option'
|
| 334 |
+
|
| 335 |
+
INVALID_ENTRY = 'Invalid Input, Please Try Again'
|
| 336 |
+
ENSEMBLE_INPUT_RULE = '1. Only letters, numbers, spaces, and dashes allowed.\n2. No dashes or spaces at the start or end of input.'
|
| 337 |
+
|
| 338 |
+
ENSEMBLE_OPTIONS = (SAVE_ENSEMBLE, CLEAR_ENSEMBLE)
|
| 339 |
+
ENSEMBLE_CHECK = 'ensemble check'
|
| 340 |
+
|
| 341 |
+
SELECT_SAVED_ENSEMBLE = 'Select Saved Ensemble'
|
| 342 |
+
SELECT_SAVED_SETTING = 'Select Saved Setting'
|
| 343 |
+
ENSEMBLE_OPTION = "Ensemble Customization Options"
|
| 344 |
+
MDX_OPTION = "Advanced MDX-Net Options"
|
| 345 |
+
DEMUCS_OPTION = "Advanced Demucs Options"
|
| 346 |
+
VR_OPTION = "Advanced VR Options"
|
| 347 |
+
HELP_OPTION = "Open Information Guide"
|
| 348 |
+
ERROR_OPTION = "Open Error Log"
|
| 349 |
+
VERIFY_BEGIN = 'Verifying file '
|
| 350 |
+
SAMPLE_BEGIN = 'Creating Sample '
|
| 351 |
+
MODEL_MISSING_CHECK = 'Model Missing:'
|
| 352 |
+
|
| 353 |
+
# Audio Player
|
| 354 |
+
|
| 355 |
+
PLAYING_SONG = ": Playing"
|
| 356 |
+
PAUSE_SONG = ": Paused"
|
| 357 |
+
STOP_SONG = ": Stopped"
|
| 358 |
+
|
| 359 |
+
SELECTED_VER = 'Selected'
|
| 360 |
+
DETECTED_VER = 'Detected'
|
| 361 |
+
|
| 362 |
+
SAMPLE_MODE_CHECKBOX = lambda v:f'Sample Mode ({v}s)'
|
| 363 |
+
REMOVED_FILES = lambda r, e:f'Audio Input Verification Report:\n\nRemoved Files:\n\n{r}\n\nError Details:\n\n{e}'
|
| 364 |
+
ADVANCED_SETTINGS = (ENSEMBLE_OPTION, MDX_OPTION, DEMUCS_OPTION, VR_OPTION, HELP_OPTION, ERROR_OPTION)
|
| 365 |
+
|
| 366 |
+
WAV = 'WAV'
|
| 367 |
+
FLAC = 'FLAC'
|
| 368 |
+
MP3 = 'MP3'
|
| 369 |
+
|
| 370 |
+
MP3_BIT_RATES = ('96k', '128k', '160k', '224k', '256k', '320k')
|
| 371 |
+
WAV_TYPE = ('PCM_U8', 'PCM_16', 'PCM_24', 'PCM_32', '32-bit Float', '64-bit Float')
|
| 372 |
+
|
| 373 |
+
SELECT_SAVED_SET = 'Choose Option'
|
| 374 |
+
SAVE_SETTINGS = 'Save Current Settings'
|
| 375 |
+
RESET_TO_DEFAULT = 'Reset to Default'
|
| 376 |
+
RESET_FULL_TO_DEFAULT = 'Reset to Default'
|
| 377 |
+
RESET_PM_TO_DEFAULT = 'Reset All Application Settings to Default'
|
| 378 |
+
|
| 379 |
+
SAVE_SET_OPTIONS = (SAVE_SETTINGS, RESET_TO_DEFAULT)
|
| 380 |
+
|
| 381 |
+
TIME_PITCH = ('1.0', '2.0', '3.0', '4.0')
|
| 382 |
+
TIME_TEXT = '_time_stretched'
|
| 383 |
+
PITCH_TEXT = '_pitch_shifted'
|
| 384 |
+
|
| 385 |
+
#RegEx Input Validation
|
| 386 |
+
|
| 387 |
+
REG_PITCH = r'^[-+]?(1[0]|[0-9]([.][0-9]*)?)$'
|
| 388 |
+
REG_TIME = r'^[+]?(1[0]|[0-9]([.][0-9]*)?)$'
|
| 389 |
+
REG_COMPENSATION = r'\b^(1[0]|[0-9]([.][0-9]*)?|Auto|None)$\b'
|
| 390 |
+
REG_THES_POSTPORCESS = r'\b^([0]([.][0-9]{0,6})?)$\b'
|
| 391 |
+
REG_CHUNKS = r'\b^(200|1[0-9][0-9]|[1-9][0-9]?|Auto|Full)$\b'
|
| 392 |
+
REG_CHUNKS_DEMUCS = r'\b^(200|1[0-9][0-9]|[1-9][0-9]?|Auto|Full)$\b'
|
| 393 |
+
REG_MARGIN = r'\b^[0-9]*$\b'
|
| 394 |
+
REG_SEGMENTS = r'\b^(200|1[0-9][0-9]|[1-9][0-9]?|Default)$\b'
|
| 395 |
+
REG_SAVE_INPUT = r'\b^([a-zA-Z0-9 -]{0,25})$\b'
|
| 396 |
+
REG_AGGRESSION = r'^[-+]?[0-9]\d*?$'
|
| 397 |
+
REG_WINDOW = r'\b^[0-9]{0,4}$\b'
|
| 398 |
+
REG_SHIFTS = r'\b^[0-9]*$\b'
|
| 399 |
+
REG_BATCHES = r'\b^([0-9]*?|Default)$\b'
|
| 400 |
+
REG_OVERLAP = r'\b^([0]([.][0-9]{0,6})?|None)$\b'
|
| 401 |
+
|
| 402 |
+
# Sub Menu
|
| 403 |
+
|
| 404 |
+
VR_ARCH_SETTING_LOAD = 'Load for VR Arch'
|
| 405 |
+
MDX_SETTING_LOAD = 'Load for MDX-Net'
|
| 406 |
+
DEMUCS_SETTING_LOAD = 'Load for Demucs'
|
| 407 |
+
ALL_ARCH_SETTING_LOAD = 'Load for Full Application'
|
| 408 |
+
|
| 409 |
+
# Mappers
|
| 410 |
+
|
| 411 |
+
DEFAULT_DATA = {
|
| 412 |
+
|
| 413 |
+
'chosen_process_method': MDX_ARCH_TYPE,
|
| 414 |
+
'vr_model': CHOOSE_MODEL,
|
| 415 |
+
'aggression_setting': 10,
|
| 416 |
+
'window_size': 512,
|
| 417 |
+
'batch_size': 4,
|
| 418 |
+
'crop_size': 256,
|
| 419 |
+
'is_tta': False,
|
| 420 |
+
'is_output_image': False,
|
| 421 |
+
'is_post_process': False,
|
| 422 |
+
'is_high_end_process': False,
|
| 423 |
+
'post_process_threshold': 0.2,
|
| 424 |
+
'vr_voc_inst_secondary_model': NO_MODEL,
|
| 425 |
+
'vr_other_secondary_model': NO_MODEL,
|
| 426 |
+
'vr_bass_secondary_model': NO_MODEL,
|
| 427 |
+
'vr_drums_secondary_model': NO_MODEL,
|
| 428 |
+
'vr_is_secondary_model_activate': False,
|
| 429 |
+
'vr_voc_inst_secondary_model_scale': 0.9,
|
| 430 |
+
'vr_other_secondary_model_scale': 0.7,
|
| 431 |
+
'vr_bass_secondary_model_scale': 0.5,
|
| 432 |
+
'vr_drums_secondary_model_scale': 0.5,
|
| 433 |
+
'demucs_model': CHOOSE_MODEL,
|
| 434 |
+
'demucs_stems': ALL_STEMS,
|
| 435 |
+
'segment': DEMUCS_SEGMENTS[0],
|
| 436 |
+
'overlap': DEMUCS_OVERLAP[0],
|
| 437 |
+
'shifts': 2,
|
| 438 |
+
'chunks_demucs': CHUNKS[0],
|
| 439 |
+
'margin_demucs': 44100,
|
| 440 |
+
'is_chunk_demucs': False,
|
| 441 |
+
'is_chunk_mdxnet': False,
|
| 442 |
+
'is_primary_stem_only_Demucs': False,
|
| 443 |
+
'is_secondary_stem_only_Demucs': False,
|
| 444 |
+
'is_split_mode': True,
|
| 445 |
+
'is_demucs_combine_stems': True,
|
| 446 |
+
'demucs_voc_inst_secondary_model': NO_MODEL,
|
| 447 |
+
'demucs_other_secondary_model': NO_MODEL,
|
| 448 |
+
'demucs_bass_secondary_model': NO_MODEL,
|
| 449 |
+
'demucs_drums_secondary_model': NO_MODEL,
|
| 450 |
+
'demucs_is_secondary_model_activate': False,
|
| 451 |
+
'demucs_voc_inst_secondary_model_scale': 0.9,
|
| 452 |
+
'demucs_other_secondary_model_scale': 0.7,
|
| 453 |
+
'demucs_bass_secondary_model_scale': 0.5,
|
| 454 |
+
'demucs_drums_secondary_model_scale': 0.5,
|
| 455 |
+
'demucs_stems': ALL_STEMS,
|
| 456 |
+
'demucs_pre_proc_model': NO_MODEL,
|
| 457 |
+
'is_demucs_pre_proc_model_activate': False,
|
| 458 |
+
'is_demucs_pre_proc_model_inst_mix': False,
|
| 459 |
+
'mdx_net_model': CHOOSE_MODEL,
|
| 460 |
+
'chunks': CHUNKS[0],
|
| 461 |
+
'margin': 44100,
|
| 462 |
+
'compensate': AUTO_SELECT,
|
| 463 |
+
'is_denoise': False,
|
| 464 |
+
'is_invert_spec': False,
|
| 465 |
+
'is_mixer_mode': False,
|
| 466 |
+
'mdx_batch_size': DEF_OPT,
|
| 467 |
+
'mdx_voc_inst_secondary_model': NO_MODEL,
|
| 468 |
+
'mdx_other_secondary_model': NO_MODEL,
|
| 469 |
+
'mdx_bass_secondary_model': NO_MODEL,
|
| 470 |
+
'mdx_drums_secondary_model': NO_MODEL,
|
| 471 |
+
'mdx_is_secondary_model_activate': False,
|
| 472 |
+
'mdx_voc_inst_secondary_model_scale': 0.9,
|
| 473 |
+
'mdx_other_secondary_model_scale': 0.7,
|
| 474 |
+
'mdx_bass_secondary_model_scale': 0.5,
|
| 475 |
+
'mdx_drums_secondary_model_scale': 0.5,
|
| 476 |
+
'is_save_all_outputs_ensemble': True,
|
| 477 |
+
'is_append_ensemble_name': False,
|
| 478 |
+
'chosen_audio_tool': AUDIO_TOOL_OPTIONS[0],
|
| 479 |
+
'choose_algorithm': MANUAL_ENSEMBLE_OPTIONS[0],
|
| 480 |
+
'time_stretch_rate': 2.0,
|
| 481 |
+
'pitch_rate': 2.0,
|
| 482 |
+
'is_gpu_conversion': False,
|
| 483 |
+
'is_primary_stem_only': False,
|
| 484 |
+
'is_secondary_stem_only': False,
|
| 485 |
+
'is_testing_audio': False,
|
| 486 |
+
'is_add_model_name': False,
|
| 487 |
+
'is_accept_any_input': False,
|
| 488 |
+
'is_task_complete': False,
|
| 489 |
+
'is_normalization': False,
|
| 490 |
+
'is_create_model_folder': False,
|
| 491 |
+
'mp3_bit_set': '320k',
|
| 492 |
+
'save_format': WAV,
|
| 493 |
+
'wav_type_set': 'PCM_16',
|
| 494 |
+
'user_code': '',
|
| 495 |
+
'export_path': '',
|
| 496 |
+
'input_paths': [],
|
| 497 |
+
'lastDir': None,
|
| 498 |
+
'export_path': '',
|
| 499 |
+
'model_hash_table': None,
|
| 500 |
+
'help_hints_var': False,
|
| 501 |
+
'model_sample_mode': False,
|
| 502 |
+
'model_sample_mode_duration': 30
|
| 503 |
+
}
|
| 504 |
+
|
| 505 |
+
SETTING_CHECK = ('vr_model',
|
| 506 |
+
'aggression_setting',
|
| 507 |
+
'window_size',
|
| 508 |
+
'batch_size',
|
| 509 |
+
'crop_size',
|
| 510 |
+
'is_tta',
|
| 511 |
+
'is_output_image',
|
| 512 |
+
'is_post_process',
|
| 513 |
+
'is_high_end_process',
|
| 514 |
+
'post_process_threshold',
|
| 515 |
+
'vr_voc_inst_secondary_model',
|
| 516 |
+
'vr_other_secondary_model',
|
| 517 |
+
'vr_bass_secondary_model',
|
| 518 |
+
'vr_drums_secondary_model',
|
| 519 |
+
'vr_is_secondary_model_activate',
|
| 520 |
+
'vr_voc_inst_secondary_model_scale',
|
| 521 |
+
'vr_other_secondary_model_scale',
|
| 522 |
+
'vr_bass_secondary_model_scale',
|
| 523 |
+
'vr_drums_secondary_model_scale',
|
| 524 |
+
'demucs_model',
|
| 525 |
+
'segment',
|
| 526 |
+
'overlap',
|
| 527 |
+
'shifts',
|
| 528 |
+
'chunks_demucs',
|
| 529 |
+
'margin_demucs',
|
| 530 |
+
'is_chunk_demucs',
|
| 531 |
+
'is_primary_stem_only_Demucs',
|
| 532 |
+
'is_secondary_stem_only_Demucs',
|
| 533 |
+
'is_split_mode',
|
| 534 |
+
'is_demucs_combine_stems',
|
| 535 |
+
'demucs_voc_inst_secondary_model',
|
| 536 |
+
'demucs_other_secondary_model',
|
| 537 |
+
'demucs_bass_secondary_model',
|
| 538 |
+
'demucs_drums_secondary_model',
|
| 539 |
+
'demucs_is_secondary_model_activate',
|
| 540 |
+
'demucs_voc_inst_secondary_model_scale',
|
| 541 |
+
'demucs_other_secondary_model_scale',
|
| 542 |
+
'demucs_bass_secondary_model_scale',
|
| 543 |
+
'demucs_drums_secondary_model_scale',
|
| 544 |
+
'demucs_stems',
|
| 545 |
+
'mdx_net_model',
|
| 546 |
+
'chunks',
|
| 547 |
+
'margin',
|
| 548 |
+
'compensate',
|
| 549 |
+
'is_denoise',
|
| 550 |
+
'is_invert_spec',
|
| 551 |
+
'mdx_batch_size',
|
| 552 |
+
'mdx_voc_inst_secondary_model',
|
| 553 |
+
'mdx_other_secondary_model',
|
| 554 |
+
'mdx_bass_secondary_model',
|
| 555 |
+
'mdx_drums_secondary_model',
|
| 556 |
+
'mdx_is_secondary_model_activate',
|
| 557 |
+
'mdx_voc_inst_secondary_model_scale',
|
| 558 |
+
'mdx_other_secondary_model_scale',
|
| 559 |
+
'mdx_bass_secondary_model_scale',
|
| 560 |
+
'mdx_drums_secondary_model_scale',
|
| 561 |
+
'is_save_all_outputs_ensemble',
|
| 562 |
+
'is_append_ensemble_name',
|
| 563 |
+
'chosen_audio_tool',
|
| 564 |
+
'choose_algorithm',
|
| 565 |
+
'time_stretch_rate',
|
| 566 |
+
'pitch_rate',
|
| 567 |
+
'is_primary_stem_only',
|
| 568 |
+
'is_secondary_stem_only',
|
| 569 |
+
'is_testing_audio',
|
| 570 |
+
'is_add_model_name',
|
| 571 |
+
"is_accept_any_input",
|
| 572 |
+
'is_task_complete',
|
| 573 |
+
'is_create_model_folder',
|
| 574 |
+
'mp3_bit_set',
|
| 575 |
+
'save_format',
|
| 576 |
+
'wav_type_set',
|
| 577 |
+
'user_code',
|
| 578 |
+
'is_gpu_conversion',
|
| 579 |
+
'is_normalization',
|
| 580 |
+
'help_hints_var',
|
| 581 |
+
'model_sample_mode',
|
| 582 |
+
'model_sample_mode_duration')
|
| 583 |
+
|
| 584 |
+
# Message Box Text
|
| 585 |
+
|
| 586 |
+
INVALID_INPUT = 'Invalid Input', 'The input is invalid.\n\nPlease verify the input still exists or is valid and try again.'
|
| 587 |
+
INVALID_EXPORT = 'Invalid Export Directory', 'You have selected an invalid export directory.\n\nPlease make sure the selected directory still exists.'
|
| 588 |
+
INVALID_ENSEMBLE = 'Not Enough Models', 'You must select 2 or more models to run ensemble.'
|
| 589 |
+
INVALID_MODEL = 'No Model Chosen', 'You must select an model to continue.'
|
| 590 |
+
MISSING_MODEL = 'Model Missing', 'The selected model is missing or not valid.'
|
| 591 |
+
ERROR_OCCURED = 'Error Occured', '\n\nWould you like to open the error log for more details?\n'
|
| 592 |
+
|
| 593 |
+
# GUI Text Constants
|
| 594 |
+
|
| 595 |
+
BACK_TO_MAIN_MENU = 'Back to Main Menu'
|
| 596 |
+
|
| 597 |
+
# Help Hint Text
|
| 598 |
+
|
| 599 |
+
INTERNAL_MODEL_ATT = 'Internal model attribute. \n\n ***Do not change this setting if you are unsure!***'
|
| 600 |
+
STOP_HELP = 'Halts any running processes. \n A pop-up window will ask the user to confirm the action.'
|
| 601 |
+
SETTINGS_HELP = 'Opens the main settings guide. This window includes the \"Download Center\"'
|
| 602 |
+
COMMAND_TEXT_HELP = 'Provides information on the progress of the current process.'
|
| 603 |
+
SAVE_CURRENT_SETTINGS_HELP = 'Allows the user to open any saved settings or save the current application settings.'
|
| 604 |
+
CHUNKS_HELP = ('For MDX-Net, all values use the same amount of resources. Using chunks is no longer recommended.\n\n' + \
|
| 605 |
+
'• This option is now only for output quality.\n' + \
|
| 606 |
+
'• Some tracks may fare better depending on the value.\n' + \
|
| 607 |
+
'• Some tracks may fare worse depending on the value.\n' + \
|
| 608 |
+
'• Larger chunk sizes use will take less time to process.\n' +\
|
| 609 |
+
'• Smaller chunk sizes use will take more time to process.\n')
|
| 610 |
+
CHUNKS_DEMUCS_HELP = ('This option allows the user to reduce (or increase) RAM or V-RAM usage.\n\n' + \
|
| 611 |
+
'• Smaller chunk sizes use less RAM or V-RAM but can also increase processing times.\n' + \
|
| 612 |
+
'• Larger chunk sizes use more RAM or V-RAM but can also reduce processing times.\n' + \
|
| 613 |
+
'• Selecting \"Auto\" calculates an appropriate chuck size based on how much RAM or V-RAM your system has.\n' + \
|
| 614 |
+
'• Selecting \"Full\" will process the track as one whole chunk. (not recommended)\n' + \
|
| 615 |
+
'• The default selection is \"Auto\".')
|
| 616 |
+
MARGIN_HELP = 'Selects the frequency margins to slice the chunks from.\n\n• The recommended margin size is 44100.\n• Other values can give unpredictable results.'
|
| 617 |
+
AGGRESSION_SETTING_HELP = ('This option allows you to set how strong the primary stem extraction will be.\n\n' + \
|
| 618 |
+
'• The range is 0-100.\n' + \
|
| 619 |
+
'• Higher values perform deeper extractions.\n' + \
|
| 620 |
+
'• The default is 10 for instrumental & vocal models.\n' + \
|
| 621 |
+
'• Values over 10 can result in muddy-sounding instrumentals for the non-vocal models')
|
| 622 |
+
WINDOW_SIZE_HELP = ('The smaller your window size, the better your conversions will be. \nHowever, a smaller window means longer conversion times and heavier resource usage.\n\n' + \
|
| 623 |
+
'Breakdown of the selectable window size values:\n' + \
|
| 624 |
+
'• 1024 - Low conversion quality, shortest conversion time, low resource usage.\n' + \
|
| 625 |
+
'• 512 - Average conversion quality, average conversion time, normal resource usage.\n' + \
|
| 626 |
+
'• 320 - Better conversion quality.')
|
| 627 |
+
DEMUCS_STEMS_HELP = ('Here, you can choose which stem to extract using the selected model.\n\n' +\
|
| 628 |
+
'Stem Selections:\n\n' +\
|
| 629 |
+
'• All Stems - Saves all of the stems the model is able to extract.\n' +\
|
| 630 |
+
'• Vocals - Pulls vocal stem only.\n' +\
|
| 631 |
+
'• Other - Pulls other stem only.\n' +\
|
| 632 |
+
'• Bass - Pulls bass stem only.\n' +\
|
| 633 |
+
'• Drums - Pulls drum stem only.\n')
|
| 634 |
+
SEGMENT_HELP = ('This option allows the user to reduce (or increase) RAM or V-RAM usage.\n\n' + \
|
| 635 |
+
'• Smaller segment sizes use less RAM or V-RAM but can also increase processing times.\n' + \
|
| 636 |
+
'• Larger segment sizes use more RAM or V-RAM but can also reduce processing times.\n' + \
|
| 637 |
+
'• Selecting \"Default\" uses the recommended segment size.\n' + \
|
| 638 |
+
'• It is recommended that you not use segments with \"Chunking\".')
|
| 639 |
+
ENSEMBLE_MAIN_STEM_HELP = 'Allows the user to select the type of stems they wish to ensemble.\n\nOptions:\n\n' +\
|
| 640 |
+
f'• {VOCAL_PAIR} - The primary stem will be the vocals and the secondary stem will be the the instrumental\n' +\
|
| 641 |
+
f'• {OTHER_PAIR} - The primary stem will be other and the secondary stem will be no other (the mixture without the \'other\' stem)\n' +\
|
| 642 |
+
f'• {BASS_PAIR} - The primary stem will be bass and the secondary stem will be no bass (the mixture without the \'bass\' stem)\n' +\
|
| 643 |
+
f'• {DRUM_PAIR} - The primary stem will be drums and the secondary stem will be no drums (the mixture without the \'drums\' stem)\n' +\
|
| 644 |
+
f'• {FOUR_STEM_ENSEMBLE} - This option will gather all the 4 stem Demucs models and ensemble all of the outputs.\n'
|
| 645 |
+
ENSEMBLE_TYPE_HELP = 'Allows the user to select the ensemble algorithm to be used to generate the final output.\n\nExample & Other Note:\n\n' +\
|
| 646 |
+
f'• {MAX_MIN} - If this option is chosen, the primary stem outputs will be processed through \nthe \'Max Spec\' algorithm, and the secondary stem will be processed through the \'Min Spec\' algorithm.\n' +\
|
| 647 |
+
f'• Only a single algorithm will be shown when the \'4 Stem Ensemble\' option is chosen.\n\nAlgorithm Details:\n\n' +\
|
| 648 |
+
f'• {MAX_SPEC} - This algorithm combines the final results and generates the highest possible output from them.\nFor example, if this algorithm were processing vocal stems, you would get the fullest possible \n' +\
|
| 649 |
+
'result making the ensembled vocal stem sound cleaner. However, it might result in more unwanted artifacts.\n' +\
|
| 650 |
+
f'• {MIN_SPEC} - This algorithm combines the results and generates the lowest possible output from them.\nFor example, if this algorithm were processing instrumental stems, you would get the cleanest possible result \n' +\
|
| 651 |
+
'result, eliminating more unwanted artifacts. However, the result might also sound \'muddy\' and lack a fuller sound.\n' +\
|
| 652 |
+
f'• {AUDIO_AVERAGE} - This algorithm simply combines the results and averages all of them together. \n'
|
| 653 |
+
ENSEMBLE_LISTBOX_HELP = 'List of the all the models available for the main stem pair selected.'
|
| 654 |
+
IS_GPU_CONVERSION_HELP = ('When checked, the application will attempt to use your GPU (if you have one).\n' +\
|
| 655 |
+
'If you do not have a GPU but have this checked, the application will default to your CPU.\n\n' +\
|
| 656 |
+
'Note: CPU conversions are much slower than those processed through the GPU.')
|
| 657 |
+
SAVE_STEM_ONLY_HELP = 'Allows the user to save only the selected stem.'
|
| 658 |
+
IS_NORMALIZATION_HELP = 'Normalizes output to prevent clipping.'
|
| 659 |
+
CROP_SIZE_HELP = '**Only compatible with select models only!**\n\n Setting should match training crop-size value. Leave as is if unsure.'
|
| 660 |
+
IS_TTA_HELP = ('This option performs Test-Time-Augmentation to improve the separation quality.\n\n' +\
|
| 661 |
+
'Note: Having this selected will increase the time it takes to complete a conversion')
|
| 662 |
+
IS_POST_PROCESS_HELP = ('This option can potentially identify leftover instrumental artifacts within the vocal outputs. \nThis option may improve the separation of some songs.\n\n' +\
|
| 663 |
+
'Note: Selecting this option can adversely affect the conversion process, depending on the track. Because of this, it is only recommended as a last resort.')
|
| 664 |
+
IS_HIGH_END_PROCESS_HELP = 'The application will mirror the missing frequency range of the output.'
|
| 665 |
+
SHIFTS_HELP = ('Performs multiple predictions with random shifts of the input and averages them.\n\n' +\
|
| 666 |
+
'• The higher number of shifts, the longer the prediction will take. \n- Not recommended unless you have a GPU.')
|
| 667 |
+
OVERLAP_HELP = 'This option controls the amount of overlap between prediction windows (for Demucs one window is 10 seconds)'
|
| 668 |
+
IS_CHUNK_DEMUCS_HELP = '• Enables \"Chunks\".\n• We recommend you not enable this option with \"Split Mode\" enabled or with the Demucs v4 Models.'
|
| 669 |
+
IS_CHUNK_MDX_NET_HELP = '• Enables \"Chunks\".\n• Using this option for MDX-Net no longer effects RAM usage.\n• Having this enabled will effect output quality, for better or worse depending on the set value.'
|
| 670 |
+
IS_SPLIT_MODE_HELP = ('• Enables \"Segments\". \n• We recommend you not enable this option with \"Enable Chunks\".\n' +\
|
| 671 |
+
'• Deselecting this option is only recommended for those with powerful PCs or if using \"Chunk\" mode instead.')
|
| 672 |
+
IS_DEMUCS_COMBINE_STEMS_HELP = 'The application will create the secondary stem by combining the remaining stems \ninstead of inverting the primary stem with the mixture.'
|
| 673 |
+
COMPENSATE_HELP = 'Compensates the audio of the primary stems to allow for a better secondary stem.'
|
| 674 |
+
IS_DENOISE_HELP = '• This option removes a majority of the noise generated by the MDX-Net models.\n• The conversion will take nearly twice as long with this enabled.'
|
| 675 |
+
CLEAR_CACHE_HELP = 'Clears any user selected model settings for previously unrecognized models.'
|
| 676 |
+
IS_SAVE_ALL_OUTPUTS_ENSEMBLE_HELP = 'Enabling this option will keep all indivudual outputs generated by an ensemble.'
|
| 677 |
+
IS_APPEND_ENSEMBLE_NAME_HELP = 'The application will append the ensemble name to the final output \nwhen this option is enabled.'
|
| 678 |
+
DONATE_HELP = 'Takes the user to an external web-site to donate to this project!'
|
| 679 |
+
IS_INVERT_SPEC_HELP = '• This option may produce a better secondary stem.\n• Inverts primary stem with mixture using spectragrams instead of wavforms.\n• This inversion method is slightly slower.'
|
| 680 |
+
IS_MIXER_MODE_HELP = '• This option may improve separations for outputs from 4-stem models.\n• Might produce more noise.\n• This option might slow down separation time.'
|
| 681 |
+
IS_TESTING_AUDIO_HELP = 'Appends a unique 10 digit number to output files so the user \ncan compare results with different settings.'
|
| 682 |
+
IS_MODEL_TESTING_AUDIO_HELP = 'Appends the model name to output files so the user \ncan compare results with different settings.'
|
| 683 |
+
IS_ACCEPT_ANY_INPUT_HELP = 'The application will accept any input when enabled, even if it does not have an audio format extension.\n\nThis is for experimental purposes, and having it enabled is not recommended.'
|
| 684 |
+
IS_TASK_COMPLETE_HELP = 'When enabled, chimes will be heard when a process completes or fails.'
|
| 685 |
+
IS_CREATE_MODEL_FOLDER_HELP = 'Two new directories will be generated for the outputs in \nthe export directory after each conversion.\n\n' +\
|
| 686 |
+
'• First directory - Named after the model.\n' +\
|
| 687 |
+
'• Second directory - Named after the track.\n\n' +\
|
| 688 |
+
'• Example: \n\n' +\
|
| 689 |
+
'─ Export Directory\n' +\
|
| 690 |
+
' └── First Directory\n' +\
|
| 691 |
+
' └── Second Directory\n' +\
|
| 692 |
+
' └── Output File(s)'
|
| 693 |
+
DELETE_YOUR_SETTINGS_HELP = 'This menu contains your saved settings. You will be asked to \nconfirm if you wish to delete the selected setting.'
|
| 694 |
+
SET_STEM_NAME_HELP = 'Choose the primary stem for the selected model.'
|
| 695 |
+
MDX_DIM_T_SET_HELP = INTERNAL_MODEL_ATT
|
| 696 |
+
MDX_DIM_F_SET_HELP = INTERNAL_MODEL_ATT
|
| 697 |
+
MDX_N_FFT_SCALE_SET_HELP = 'Set the N_FFT size the model was trained with.'
|
| 698 |
+
POPUP_COMPENSATE_HELP = f'Choose the appropriate voluem compensattion for the selected model\n\nReminder: {COMPENSATE_HELP}'
|
| 699 |
+
VR_MODEL_PARAM_HELP = 'Choose the parameters needed to run the selected model.'
|
| 700 |
+
CHOSEN_ENSEMBLE_HELP = 'Select saved enselble or save current ensemble.\n\nDefault Selections:\n\n• Save the current ensemble.\n• Clears all current model selections.'
|
| 701 |
+
CHOSEN_PROCESS_METHOD_HELP = 'Here, you choose between different Al networks and algorithms to process your track.\n\n' +\
|
| 702 |
+
'There are five options:\n\n' +\
|
| 703 |
+
'• VR Architecture - These models use magnitude spectrograms for Source Separation.\n' +\
|
| 704 |
+
'• MDX-Net - These models use Hybrid Spectrogram/Waveform for Source Separation.\n' +\
|
| 705 |
+
'• Demucs v3 - These models use Hybrid Spectrogram/Waveform for Source Separation.\n' +\
|
| 706 |
+
'• Ensemble Mode - Here, you can get the best results from multiple models and networks.\n' +\
|
| 707 |
+
'• Audio Tools - These are additional tools for added convenience.'
|
| 708 |
+
INPUT_FOLDER_ENTRY_HELP = 'Select Input:\n\nHere is where you select the audio files(s) you wish to process.'
|
| 709 |
+
INPUT_FOLDER_ENTRY_HELP_2 = 'Input Option Menu:\n\nClick here to access the input option menu.'
|
| 710 |
+
OUTPUT_FOLDER_ENTRY_HELP = 'Select Output:\n\nHere is where you select the directory where your processed files are to be saved.'
|
| 711 |
+
INPUT_FOLDER_BUTTON_HELP = 'Open Input Folder Button: \n\nOpens the directory containing the selected input audio file(s).'
|
| 712 |
+
OUTPUT_FOLDER_BUTTON_HELP = 'Open Output Folder Button: \n\nOpens the selected output folder.'
|
| 713 |
+
CHOOSE_MODEL_HELP = 'Each process method comes with its own set of options and models.\n\nHere is where you choose the model associated with the selected process method.'
|
| 714 |
+
FORMAT_SETTING_HELP = 'Save outputs as '
|
| 715 |
+
SECONDARY_MODEL_ACTIVATE_HELP = 'When enabled, the application will run an additional inference with the selected model(s) above.'
|
| 716 |
+
SECONDARY_MODEL_HELP = 'Choose the secondary model associated with this stem you wish to run with the current process method.'
|
| 717 |
+
SECONDARY_MODEL_SCALE_HELP = 'The scale determines how the final audio outputs will be averaged between the primary and secondary models.\n\nFor example:\n\n' +\
|
| 718 |
+
'• 10% - 10 percent of the main model result will be factored into the final result.\n' +\
|
| 719 |
+
'• 50% - The results from the main and secondary models will be averaged evenly.\n' +\
|
| 720 |
+
'• 90% - 90 percent of the main model result will be factored into the final result.'
|
| 721 |
+
PRE_PROC_MODEL_ACTIVATE_HELP = 'The application will run an inference with the selected model above, pulling only the instrumental stem when enabled. \nFrom there, all of the non-vocal stems will be pulled from the generated instrumental.\n\nNotes:\n\n' +\
|
| 722 |
+
'• This option can significantly reduce vocal bleed within the non-vocal stems.\n' +\
|
| 723 |
+
'• It is only available in Demucs.\n' +\
|
| 724 |
+
'• It is only compatible with non-vocal and non-instrumental stem outputs.\n' +\
|
| 725 |
+
'• This will increase thetotal processing time.\n' +\
|
| 726 |
+
'• Only VR and MDX-Net Vocal or Instrumental models are selectable above.'
|
| 727 |
+
|
| 728 |
+
AUDIO_TOOLS_HELP = 'Here, you choose between different audio tools to process your track.\n\n' +\
|
| 729 |
+
'• Manual Ensemble - You must have 2 or more files selected as your inputs. Allows the user to run their tracks through \nthe same algorithms used in Ensemble Mode.\n' +\
|
| 730 |
+
'• Align Inputs - You must have exactly 2 files selected as your inputs. The second input will be aligned with the first input.\n' +\
|
| 731 |
+
'• Time Stretch - The user can speed up or slow down the selected inputs.\n' +\
|
| 732 |
+
'• Change Pitch - The user can change the pitch for the selected inputs.\n'
|
| 733 |
+
PRE_PROC_MODEL_INST_MIX_HELP = 'When enabled, the application will generate a third output without the selected stem and vocals.'
|
| 734 |
+
MODEL_SAMPLE_MODE_HELP = 'Allows the user to process only part of a track to sample settings or a model without \nrunning a full conversion.\n\nNotes:\n\n' +\
|
| 735 |
+
'• The number in the parentheses is the current number of seconds the generated sample will be.\n' +\
|
| 736 |
+
'• You can choose the number of seconds to extract from the track in the \"Additional Settings\" menu.'
|
| 737 |
+
|
| 738 |
+
POST_PROCESS_THREASHOLD_HELP = 'Allows the user to control the intensity of the Post_process option.\n\nNotes:\n\n' +\
|
| 739 |
+
'• Higher values potentially remove more artifacts. However, bleed might increase.\n' +\
|
| 740 |
+
'• Lower values limit artifact removal.'
|
| 741 |
+
|
| 742 |
+
BATCH_SIZE_HELP = 'Specify the number of batches to be processed at a time.\n\nNotes:\n\n' +\
|
| 743 |
+
'• Higher values mean more RAM usage but slightly faster processing times.\n' +\
|
| 744 |
+
'• Lower values mean less RAM usage but slightly longer processing times.\n' +\
|
| 745 |
+
'• Batch size value has no effect on output quality.'
|
| 746 |
+
|
| 747 |
+
# Warning Messages
|
| 748 |
+
|
| 749 |
+
STORAGE_ERROR = 'Insufficient Storage', 'There is not enough storage on main drive to continue. Your main drive must have at least 3 GB\'s of storage in order for this application function properly. \n\nPlease ensure your main drive has at least 3 GB\'s of storage and try again.\n\n'
|
| 750 |
+
STORAGE_WARNING = 'Available Storage Low', 'Your main drive is running low on storage. Your main drive must have at least 3 GB\'s of storage in order for this application function properly.\n\n'
|
| 751 |
+
CONFIRM_WARNING = '\nAre you sure you wish to continue?'
|
| 752 |
+
PROCESS_FAILED = 'Process failed, please see error log\n'
|
| 753 |
+
EXIT_PROCESS_ERROR = 'Active Process', 'Please stop the active process or wait for it to complete before you exit.'
|
| 754 |
+
EXIT_HALTED_PROCESS_ERROR = 'Halting Process', 'Please wait for the application to finish halting the process before exiting.'
|
| 755 |
+
EXIT_DOWNLOAD_ERROR = 'Active Download', 'Please stop the download or wait for it to complete before you exit.'
|
| 756 |
+
SET_TO_DEFAULT_PROCESS_ERROR = 'Active Process', 'You cannot reset all of the application settings during an active process.'
|
| 757 |
+
SET_TO_ANY_PROCESS_ERROR = 'Active Process', 'You cannot reset the application settings during an active process.'
|
| 758 |
+
RESET_ALL_TO_DEFAULT_WARNING = 'Reset Settings Confirmation', 'All application settings will be set to factory default.\n\nAre you sure you wish to continue?'
|
| 759 |
+
AUDIO_VERIFICATION_CHECK = lambda i, e:f'++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nBroken File Removed: \n\n{i}\n\nError Details:\n\n{e}\n++++++++++++++++++++++++++++++++++++++++++++++++++++'
|
| 760 |
+
INVALID_ONNX_MODEL_ERROR = 'Invalid Model', 'The file selected is not a valid MDX-Net model. Please see the error log for more information.'
|
| 761 |
+
|
| 762 |
+
|
| 763 |
+
# Separation Text
|
| 764 |
+
|
| 765 |
+
LOADING_MODEL = 'Loading model...'
|
| 766 |
+
INFERENCE_STEP_1 = 'Running inference...'
|
| 767 |
+
INFERENCE_STEP_1_SEC = 'Running inference (secondary model)...'
|
| 768 |
+
INFERENCE_STEP_1_4_STEM = lambda stem:f'Running inference (secondary model for {stem})...'
|
| 769 |
+
INFERENCE_STEP_1_PRE = 'Running inference (pre-process model)...'
|
| 770 |
+
INFERENCE_STEP_2_PRE = lambda pm, m:f'Loading pre-process model ({pm}: {m})...'
|
| 771 |
+
INFERENCE_STEP_2_SEC = lambda pm, m:f'Loading secondary model ({pm}: {m})...'
|
| 772 |
+
INFERENCE_STEP_2_SEC_CACHED_MODOEL = lambda pm, m:f'Secondary model ({pm}: {m}) cache loaded.\n'
|
| 773 |
+
INFERENCE_STEP_2_PRE_CACHED_MODOEL = lambda pm, m:f'Pre-process model ({pm}: {m}) cache loaded.\n'
|
| 774 |
+
INFERENCE_STEP_2_SEC_CACHED = 'Loading cached secondary model source(s)... Done!\n'
|
| 775 |
+
INFERENCE_STEP_2_PRIMARY_CACHED = 'Model cache loaded.\n'
|
| 776 |
+
INFERENCE_STEP_2 = 'Inference complete.'
|
| 777 |
+
SAVING_STEM = 'Saving ', ' stem...'
|
| 778 |
+
SAVING_ALL_STEMS = 'Saving all stems...'
|
| 779 |
+
ENSEMBLING_OUTPUTS = 'Ensembling outputs...'
|
| 780 |
+
DONE = ' Done!\n'
|
| 781 |
+
ENSEMBLES_SAVED = 'Ensembled outputs saved!\n\n'
|
| 782 |
+
NEW_LINES = "\n\n"
|
| 783 |
+
NEW_LINE = "\n"
|
| 784 |
+
NO_LINE = ''
|
| 785 |
+
|
| 786 |
+
# Widget Placements
|
| 787 |
+
|
| 788 |
+
MAIN_ROW_Y = -15, -17
|
| 789 |
+
MAIN_ROW_X = -4, 21
|
| 790 |
+
MAIN_ROW_WIDTH = -53
|
| 791 |
+
MAIN_ROW_2_Y = -15, -17
|
| 792 |
+
MAIN_ROW_2_X = -28, 1
|
| 793 |
+
CHECK_BOX_Y = 0
|
| 794 |
+
CHECK_BOX_X = 20
|
| 795 |
+
CHECK_BOX_WIDTH = -50
|
| 796 |
+
CHECK_BOX_HEIGHT = 2
|
| 797 |
+
LEFT_ROW_WIDTH = -10
|
| 798 |
+
LABEL_HEIGHT = -5
|
| 799 |
+
OPTION_HEIGHT = 7
|
| 800 |
+
LOW_MENU_Y = 18, 16
|
| 801 |
+
FFMPEG_EXT = (".aac", ".aiff", ".alac" ,".flac", ".FLAC", ".mov", ".mp4", ".MP4",
|
| 802 |
+
".m4a", ".M4A", ".mp2", ".mp3", "MP3", ".mpc", ".mpc8",
|
| 803 |
+
".mpeg", ".ogg", ".OGG", ".tta", ".wav", ".wave", ".WAV", ".WAVE", ".wma", ".webm", ".eac3", ".mkv")
|
| 804 |
+
|
| 805 |
+
FFMPEG_MORE_EXT = (".aa", ".aac", ".ac3", ".aiff", ".alac", ".avi", ".f4v",".flac", ".flic", ".flv",
|
| 806 |
+
".m4v",".mlv", ".mov", ".mp4", ".m4a", ".mp2", ".mp3", ".mp4", ".mpc", ".mpc8",
|
| 807 |
+
".mpeg", ".ogg", ".tta", ".tty", ".vcd", ".wav", ".wma")
|
| 808 |
+
ANY_EXT = ""
|
| 809 |
+
|
| 810 |
+
# Secondary Menu Constants
|
| 811 |
+
|
| 812 |
+
VOCAL_PAIR_PLACEMENT = 1, 2, 3, 4
|
| 813 |
+
OTHER_PAIR_PLACEMENT = 5, 6, 7, 8
|
| 814 |
+
BASS_PAIR_PLACEMENT = 9, 10, 11, 12
|
| 815 |
+
DRUMS_PAIR_PLACEMENT = 13, 14, 15, 16
|
| 816 |
+
|
| 817 |
+
# Drag n Drop String Checks
|
| 818 |
+
|
| 819 |
+
DOUBLE_BRACKET = "} {"
|
| 820 |
+
RIGHT_BRACKET = "}"
|
| 821 |
+
LEFT_BRACKET = "{"
|
| 822 |
+
|
| 823 |
+
# Manual Downloads
|
| 824 |
+
|
| 825 |
+
VR_PLACEMENT_TEXT = 'Place models in \"models/VR_Models\" directory.'
|
| 826 |
+
MDX_PLACEMENT_TEXT = 'Place models in \"models/MDX_Net_Models\" directory.'
|
| 827 |
+
DEMUCS_PLACEMENT_TEXT = 'Place models in \"models/Demucs_Models\" directory.'
|
| 828 |
+
DEMUCS_V3_V4_PLACEMENT_TEXT = 'Place items in \"models/Demucs_Models/v3_v4_repo\" directory.'
|
| 829 |
+
|
| 830 |
+
FULL_DOWNLOAD_LIST_VR = {
|
| 831 |
+
"VR Arch Single Model v5: 1_HP-UVR": "1_HP-UVR.pth",
|
| 832 |
+
"VR Arch Single Model v5: 2_HP-UVR": "2_HP-UVR.pth",
|
| 833 |
+
"VR Arch Single Model v5: 3_HP-Vocal-UVR": "3_HP-Vocal-UVR.pth",
|
| 834 |
+
"VR Arch Single Model v5: 4_HP-Vocal-UVR": "4_HP-Vocal-UVR.pth",
|
| 835 |
+
"VR Arch Single Model v5: 5_HP-Karaoke-UVR": "5_HP-Karaoke-UVR.pth",
|
| 836 |
+
"VR Arch Single Model v5: 6_HP-Karaoke-UVR": "6_HP-Karaoke-UVR.pth",
|
| 837 |
+
"VR Arch Single Model v5: 7_HP2-UVR": "7_HP2-UVR.pth",
|
| 838 |
+
"VR Arch Single Model v5: 8_HP2-UVR": "8_HP2-UVR.pth",
|
| 839 |
+
"VR Arch Single Model v5: 9_HP2-UVR": "9_HP2-UVR.pth",
|
| 840 |
+
"VR Arch Single Model v5: 10_SP-UVR-2B-32000-1": "10_SP-UVR-2B-32000-1.pth",
|
| 841 |
+
"VR Arch Single Model v5: 11_SP-UVR-2B-32000-2": "11_SP-UVR-2B-32000-2.pth",
|
| 842 |
+
"VR Arch Single Model v5: 12_SP-UVR-3B-44100": "12_SP-UVR-3B-44100.pth",
|
| 843 |
+
"VR Arch Single Model v5: 13_SP-UVR-4B-44100-1": "13_SP-UVR-4B-44100-1.pth",
|
| 844 |
+
"VR Arch Single Model v5: 14_SP-UVR-4B-44100-2": "14_SP-UVR-4B-44100-2.pth",
|
| 845 |
+
"VR Arch Single Model v5: 15_SP-UVR-MID-44100-1": "15_SP-UVR-MID-44100-1.pth",
|
| 846 |
+
"VR Arch Single Model v5: 16_SP-UVR-MID-44100-2": "16_SP-UVR-MID-44100-2.pth",
|
| 847 |
+
"VR Arch Single Model v4: MGM_HIGHEND_v4": "MGM_HIGHEND_v4.pth",
|
| 848 |
+
"VR Arch Single Model v4: MGM_LOWEND_A_v4": "MGM_LOWEND_A_v4.pth",
|
| 849 |
+
"VR Arch Single Model v4: MGM_LOWEND_B_v4": "MGM_LOWEND_B_v4.pth",
|
| 850 |
+
"VR Arch Single Model v4: MGM_MAIN_v4": "MGM_MAIN_v4.pth"
|
| 851 |
+
}
|
| 852 |
+
|
| 853 |
+
FULL_DOWNLOAD_LIST_MDX = {
|
| 854 |
+
"MDX-Net Model: UVR-MDX-NET Main": "UVR_MDXNET_Main.onnx",
|
| 855 |
+
"MDX-Net Model: UVR-MDX-NET Inst Main": "UVR-MDX-NET-Inst_Main.onnx",
|
| 856 |
+
"MDX-Net Model: UVR-MDX-NET 1": "UVR_MDXNET_1_9703.onnx",
|
| 857 |
+
"MDX-Net Model: UVR-MDX-NET 2": "UVR_MDXNET_2_9682.onnx",
|
| 858 |
+
"MDX-Net Model: UVR-MDX-NET 3": "UVR_MDXNET_3_9662.onnx",
|
| 859 |
+
"MDX-Net Model: UVR-MDX-NET Inst 1": "UVR-MDX-NET-Inst_1.onnx",
|
| 860 |
+
"MDX-Net Model: UVR-MDX-NET Inst 2": "UVR-MDX-NET-Inst_2.onnx",
|
| 861 |
+
"MDX-Net Model: UVR-MDX-NET Inst 3": "UVR-MDX-NET-Inst_3.onnx",
|
| 862 |
+
"MDX-Net Model: UVR-MDX-NET Karaoke": "UVR_MDXNET_KARA.onnx",
|
| 863 |
+
"MDX-Net Model: UVR_MDXNET_9482": "UVR_MDXNET_9482.onnx",
|
| 864 |
+
"MDX-Net Model: Kim_Vocal_1": "Kim_Vocal_1.onnx",
|
| 865 |
+
"MDX-Net Model: kuielab_a_vocals": "kuielab_a_vocals.onnx",
|
| 866 |
+
"MDX-Net Model: kuielab_a_other": "kuielab_a_other.onnx",
|
| 867 |
+
"MDX-Net Model: kuielab_a_bass": "kuielab_a_bass.onnx",
|
| 868 |
+
"MDX-Net Model: kuielab_a_drums": "kuielab_a_drums.onnx",
|
| 869 |
+
"MDX-Net Model: kuielab_b_vocals": "kuielab_b_vocals.onnx",
|
| 870 |
+
"MDX-Net Model: kuielab_b_other": "kuielab_b_other.onnx",
|
| 871 |
+
"MDX-Net Model: kuielab_b_bass": "kuielab_b_bass.onnx",
|
| 872 |
+
"MDX-Net Model: kuielab_b_drums": "kuielab_b_drums.onnx"}
|
| 873 |
+
|
| 874 |
+
FULL_DOWNLOAD_LIST_DEMUCS = {
|
| 875 |
+
|
| 876 |
+
"Demucs v4: htdemucs_ft":{
|
| 877 |
+
"f7e0c4bc-ba3fe64a.th":"https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/f7e0c4bc-ba3fe64a.th",
|
| 878 |
+
"d12395a8-e57c48e6.th":"https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/d12395a8-e57c48e6.th",
|
| 879 |
+
"92cfc3b6-ef3bcb9c.th":"https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/92cfc3b6-ef3bcb9c.th",
|
| 880 |
+
"04573f0d-f3cf25b2.th":"https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/04573f0d-f3cf25b2.th",
|
| 881 |
+
"htdemucs_ft.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/htdemucs_ft.yaml"
|
| 882 |
+
},
|
| 883 |
+
|
| 884 |
+
"Demucs v4: htdemucs":{
|
| 885 |
+
"955717e8-8726e21a.th": "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/955717e8-8726e21a.th",
|
| 886 |
+
"htdemucs.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/htdemucs.yaml"
|
| 887 |
+
},
|
| 888 |
+
|
| 889 |
+
"Demucs v4: hdemucs_mmi":{
|
| 890 |
+
"75fc33f5-1941ce65.th": "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/75fc33f5-1941ce65.th",
|
| 891 |
+
"hdemucs_mmi.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/hdemucs_mmi.yaml"
|
| 892 |
+
},
|
| 893 |
+
"Demucs v4: htdemucs_6s":{
|
| 894 |
+
"5c90dfd2-34c22ccb.th": "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/5c90dfd2-34c22ccb.th",
|
| 895 |
+
"htdemucs_6s.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/htdemucs_6s.yaml"
|
| 896 |
+
},
|
| 897 |
+
"Demucs v3: mdx":{
|
| 898 |
+
"0d19c1c6-0f06f20e.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/0d19c1c6-0f06f20e.th",
|
| 899 |
+
"7ecf8ec1-70f50cc9.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/7ecf8ec1-70f50cc9.th",
|
| 900 |
+
"c511e2ab-fe698775.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/c511e2ab-fe698775.th",
|
| 901 |
+
"7d865c68-3d5dd56b.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/7d865c68-3d5dd56b.th",
|
| 902 |
+
"mdx.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/mdx.yaml"
|
| 903 |
+
},
|
| 904 |
+
|
| 905 |
+
"Demucs v3: mdx_q":{
|
| 906 |
+
"6b9c2ca1-3fd82607.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/6b9c2ca1-3fd82607.th",
|
| 907 |
+
"b72baf4e-8778635e.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/b72baf4e-8778635e.th",
|
| 908 |
+
"42e558d4-196e0e1b.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/42e558d4-196e0e1b.th",
|
| 909 |
+
"305bc58f-18378783.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/305bc58f-18378783.th",
|
| 910 |
+
"mdx_q.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/mdx_q.yaml"
|
| 911 |
+
},
|
| 912 |
+
|
| 913 |
+
"Demucs v3: mdx_extra":{
|
| 914 |
+
"e51eebcc-c1b80bdd.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/e51eebcc-c1b80bdd.th",
|
| 915 |
+
"a1d90b5c-ae9d2452.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/a1d90b5c-ae9d2452.th",
|
| 916 |
+
"5d2d6c55-db83574e.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/5d2d6c55-db83574e.th",
|
| 917 |
+
"cfa93e08-61801ae1.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/cfa93e08-61801ae1.th",
|
| 918 |
+
"mdx_extra.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/mdx_extra.yaml"
|
| 919 |
+
},
|
| 920 |
+
|
| 921 |
+
"Demucs v3: mdx_extra_q": {
|
| 922 |
+
"83fc094f-4a16d450.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/83fc094f-4a16d450.th",
|
| 923 |
+
"464b36d7-e5a9386e.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/464b36d7-e5a9386e.th",
|
| 924 |
+
"14fc6a69-a89dd0ee.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/14fc6a69-a89dd0ee.th",
|
| 925 |
+
"7fd6ef75-a905dd85.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/7fd6ef75-a905dd85.th",
|
| 926 |
+
"mdx_extra_q.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/mdx_extra_q.yaml"
|
| 927 |
+
},
|
| 928 |
+
|
| 929 |
+
"Demucs v3: UVR Model":{
|
| 930 |
+
"ebf34a2db.th": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/ebf34a2db.th",
|
| 931 |
+
"UVR_Demucs_Model_1.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/UVR_Demucs_Model_1.yaml"
|
| 932 |
+
},
|
| 933 |
+
|
| 934 |
+
"Demucs v3: repro_mdx_a":{
|
| 935 |
+
"9a6b4851-03af0aa6.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/9a6b4851-03af0aa6.th",
|
| 936 |
+
"1ef250f1-592467ce.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/1ef250f1-592467ce.th",
|
| 937 |
+
"fa0cb7f9-100d8bf4.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/fa0cb7f9-100d8bf4.th",
|
| 938 |
+
"902315c2-b39ce9c9.th": "https://dl.fbaipublicfiles.com/demucs/mdx_final/902315c2-b39ce9c9.th",
|
| 939 |
+
"repro_mdx_a.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/repro_mdx_a.yaml"
|
| 940 |
+
},
|
| 941 |
+
|
| 942 |
+
"Demucs v3: repro_mdx_a_time_only":{
|
| 943 |
+
"9a6b4851-03af0aa6.th":"https://dl.fbaipublicfiles.com/demucs/mdx_final/9a6b4851-03af0aa6.th",
|
| 944 |
+
"1ef250f1-592467ce.th":"https://dl.fbaipublicfiles.com/demucs/mdx_final/1ef250f1-592467ce.th",
|
| 945 |
+
"repro_mdx_a_time_only.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/repro_mdx_a_time_only.yaml"
|
| 946 |
+
},
|
| 947 |
+
|
| 948 |
+
"Demucs v3: repro_mdx_a_hybrid_only":{
|
| 949 |
+
"fa0cb7f9-100d8bf4.th":"https://dl.fbaipublicfiles.com/demucs/mdx_final/fa0cb7f9-100d8bf4.th",
|
| 950 |
+
"902315c2-b39ce9c9.th":"https://dl.fbaipublicfiles.com/demucs/mdx_final/902315c2-b39ce9c9.th",
|
| 951 |
+
"repro_mdx_a_hybrid_only.yaml": "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/repro_mdx_a_hybrid_only.yaml"
|
| 952 |
+
},
|
| 953 |
+
|
| 954 |
+
"Demucs v2: demucs": {
|
| 955 |
+
"demucs-e07c671f.th": "https://dl.fbaipublicfiles.com/demucs/v3.0/demucs-e07c671f.th"
|
| 956 |
+
},
|
| 957 |
+
|
| 958 |
+
"Demucs v2: demucs_extra": {
|
| 959 |
+
"demucs_extra-3646af93.th":"https://dl.fbaipublicfiles.com/demucs/v3.0/demucs_extra-3646af93.th"
|
| 960 |
+
},
|
| 961 |
+
|
| 962 |
+
"Demucs v2: demucs48_hq": {
|
| 963 |
+
"demucs48_hq-28a1282c.th":"https://dl.fbaipublicfiles.com/demucs/v3.0/demucs48_hq-28a1282c.th"
|
| 964 |
+
},
|
| 965 |
+
|
| 966 |
+
"Demucs v2: tasnet": {
|
| 967 |
+
"tasnet-beb46fac.th":"https://dl.fbaipublicfiles.com/demucs/v3.0/tasnet-beb46fac.th"
|
| 968 |
+
},
|
| 969 |
+
|
| 970 |
+
"Demucs v2: tasnet_extra": {
|
| 971 |
+
"tasnet_extra-df3777b2.th":"https://dl.fbaipublicfiles.com/demucs/v3.0/tasnet_extra-df3777b2.th"
|
| 972 |
+
},
|
| 973 |
+
|
| 974 |
+
"Demucs v2: demucs_unittest": {
|
| 975 |
+
"demucs_unittest-09ebc15f.th":"https://dl.fbaipublicfiles.com/demucs/v3.0/demucs_unittest-09ebc15f.th"
|
| 976 |
+
},
|
| 977 |
+
|
| 978 |
+
"Demucs v1: demucs": {
|
| 979 |
+
"demucs.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/demucs.th"
|
| 980 |
+
},
|
| 981 |
+
|
| 982 |
+
"Demucs v1: demucs_extra": {
|
| 983 |
+
"demucs_extra.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/demucs_extra.th"
|
| 984 |
+
},
|
| 985 |
+
|
| 986 |
+
"Demucs v1: light": {
|
| 987 |
+
"light.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/light.th"
|
| 988 |
+
},
|
| 989 |
+
|
| 990 |
+
"Demucs v1: light_extra": {
|
| 991 |
+
"light_extra.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/light_extra.th"
|
| 992 |
+
},
|
| 993 |
+
|
| 994 |
+
"Demucs v1: tasnet": {
|
| 995 |
+
"tasnet.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/tasnet.th"
|
| 996 |
+
},
|
| 997 |
+
|
| 998 |
+
"Demucs v1: tasnet_extra": {
|
| 999 |
+
"tasnet_extra.th":"https://dl.fbaipublicfiles.com/demucs/v2.0/tasnet_extra.th"
|
| 1000 |
+
}
|
| 1001 |
+
}
|
| 1002 |
+
|
| 1003 |
+
# Main Menu Labels
|
| 1004 |
+
|
| 1005 |
+
CHOOSE_PROC_METHOD_MAIN_LABEL = 'CHOOSE PROCESS METHOD'
|
| 1006 |
+
SELECT_SAVED_SETTINGS_MAIN_LABEL = 'SELECT SAVED SETTINGS'
|
| 1007 |
+
CHOOSE_MDX_MODEL_MAIN_LABEL = 'CHOOSE MDX-NET MODEL'
|
| 1008 |
+
BATCHES_MDX_MAIN_LABEL = 'BATCH SIZE'
|
| 1009 |
+
VOL_COMP_MDX_MAIN_LABEL = 'VOLUME COMPENSATION'
|
| 1010 |
+
SELECT_VR_MODEL_MAIN_LABEL = 'CHOOSE VR MODEL'
|
| 1011 |
+
AGGRESSION_SETTING_MAIN_LABEL = 'AGGRESSION SETTING'
|
| 1012 |
+
WINDOW_SIZE_MAIN_LABEL = 'WINDOW SIZE'
|
| 1013 |
+
CHOOSE_DEMUCS_MODEL_MAIN_LABEL = 'CHOOSE DEMUCS MODEL'
|
| 1014 |
+
CHOOSE_DEMUCS_STEMS_MAIN_LABEL = 'CHOOSE STEM(S)'
|
| 1015 |
+
CHOOSE_SEGMENT_MAIN_LABEL = 'SEGMENT'
|
| 1016 |
+
ENSEMBLE_OPTIONS_MAIN_LABEL = 'ENSEMBLE OPTIONS'
|
| 1017 |
+
CHOOSE_MAIN_PAIR_MAIN_LABEL = 'MAIN STEM PAIR'
|
| 1018 |
+
CHOOSE_ENSEMBLE_ALGORITHM_MAIN_LABEL = 'ENSEMBLE ALGORITHM'
|
| 1019 |
+
AVAILABLE_MODELS_MAIN_LABEL = 'AVAILABLE MODELS'
|
| 1020 |
+
CHOOSE_AUDIO_TOOLS_MAIN_LABEL = 'CHOOSE AUDIO TOOL'
|
| 1021 |
+
CHOOSE_MANUAL_ALGORITHM_MAIN_LABEL = 'CHOOSE ALGORITHM'
|
| 1022 |
+
CHOOSE_RATE_MAIN_LABEL = 'RATE'
|
| 1023 |
+
CHOOSE_SEMITONES_MAIN_LABEL = 'SEMITONES'
|
| 1024 |
+
GPU_CONVERSION_MAIN_LABEL = 'GPU Conversion'
|
| 1025 |
+
|
| 1026 |
+
if OPERATING_SYSTEM=="Darwin":
|
| 1027 |
+
LICENSE_OS_SPECIFIC_TEXT = '• This application is intended for those running macOS Catalina and above.\n' +\
|
| 1028 |
+
'• Application functionality for systems running macOS Mojave or lower is not guaranteed.\n' +\
|
| 1029 |
+
'• Application functionality for older or budget Mac systems is not guaranteed.\n\n'
|
| 1030 |
+
FONT_SIZE_F1 = 13
|
| 1031 |
+
FONT_SIZE_F2 = 11
|
| 1032 |
+
FONT_SIZE_F3 = 12
|
| 1033 |
+
FONT_SIZE_0 = 9
|
| 1034 |
+
FONT_SIZE_1 = 11
|
| 1035 |
+
FONT_SIZE_2 = 12
|
| 1036 |
+
FONT_SIZE_3 = 13
|
| 1037 |
+
FONT_SIZE_4 = 14
|
| 1038 |
+
FONT_SIZE_5 = 15
|
| 1039 |
+
FONT_SIZE_6 = 17
|
| 1040 |
+
HELP_HINT_CHECKBOX_WIDTH = 13
|
| 1041 |
+
MDX_CHECKBOXS_WIDTH = 14
|
| 1042 |
+
VR_CHECKBOXS_WIDTH = 14
|
| 1043 |
+
ENSEMBLE_CHECKBOXS_WIDTH = 18
|
| 1044 |
+
DEMUCS_CHECKBOXS_WIDTH = 14
|
| 1045 |
+
DEMUCS_PRE_CHECKBOXS_WIDTH = 20
|
| 1046 |
+
GEN_SETTINGS_WIDTH = 17
|
| 1047 |
+
MENU_COMBOBOX_WIDTH = 16
|
| 1048 |
+
|
| 1049 |
+
elif OPERATING_SYSTEM=="Linux":
|
| 1050 |
+
LICENSE_OS_SPECIFIC_TEXT = '• This application is intended for those running Linux Ubuntu 18.04+.\n' +\
|
| 1051 |
+
'• Application functionality for systems running other Linux platforms is not guaranteed.\n' +\
|
| 1052 |
+
'• Application functionality for older or budget systems is not guaranteed.\n\n'
|
| 1053 |
+
FONT_SIZE_F1 = 10
|
| 1054 |
+
FONT_SIZE_F2 = 8
|
| 1055 |
+
FONT_SIZE_F3 = 9
|
| 1056 |
+
FONT_SIZE_0 = 7
|
| 1057 |
+
FONT_SIZE_1 = 8
|
| 1058 |
+
FONT_SIZE_2 = 9
|
| 1059 |
+
FONT_SIZE_3 = 10
|
| 1060 |
+
FONT_SIZE_4 = 11
|
| 1061 |
+
FONT_SIZE_5 = 12
|
| 1062 |
+
FONT_SIZE_6 = 15
|
| 1063 |
+
HELP_HINT_CHECKBOX_WIDTH = 13
|
| 1064 |
+
MDX_CHECKBOXS_WIDTH = 14
|
| 1065 |
+
VR_CHECKBOXS_WIDTH = 16
|
| 1066 |
+
ENSEMBLE_CHECKBOXS_WIDTH = 25
|
| 1067 |
+
DEMUCS_CHECKBOXS_WIDTH = 18
|
| 1068 |
+
DEMUCS_PRE_CHECKBOXS_WIDTH = 27
|
| 1069 |
+
GEN_SETTINGS_WIDTH = 17
|
| 1070 |
+
MENU_COMBOBOX_WIDTH = 19
|
| 1071 |
+
|
| 1072 |
+
elif OPERATING_SYSTEM=="Windows":
|
| 1073 |
+
LICENSE_OS_SPECIFIC_TEXT = '• This application is intended for those running Windows 10 or higher.\n' +\
|
| 1074 |
+
'• Application functionality for systems running Windows 7 or lower is not guaranteed.\n' +\
|
| 1075 |
+
'• Application functionality for Intel Pentium & Celeron CPUs systems is not guaranteed.\n\n'
|
| 1076 |
+
FONT_SIZE_F1 = 10
|
| 1077 |
+
FONT_SIZE_F2 = 8
|
| 1078 |
+
FONT_SIZE_F3 = 9
|
| 1079 |
+
FONT_SIZE_0 = 7
|
| 1080 |
+
FONT_SIZE_1 = 8
|
| 1081 |
+
FONT_SIZE_2 = 9
|
| 1082 |
+
FONT_SIZE_3 = 10
|
| 1083 |
+
FONT_SIZE_4 = 11
|
| 1084 |
+
FONT_SIZE_5 = 12
|
| 1085 |
+
FONT_SIZE_6 = 15
|
| 1086 |
+
HELP_HINT_CHECKBOX_WIDTH = 16
|
| 1087 |
+
MDX_CHECKBOXS_WIDTH = 16
|
| 1088 |
+
VR_CHECKBOXS_WIDTH = 16
|
| 1089 |
+
ENSEMBLE_CHECKBOXS_WIDTH = 25
|
| 1090 |
+
DEMUCS_CHECKBOXS_WIDTH = 18
|
| 1091 |
+
DEMUCS_PRE_CHECKBOXS_WIDTH = 27
|
| 1092 |
+
GEN_SETTINGS_WIDTH = 23
|
| 1093 |
+
MENU_COMBOBOX_WIDTH = 19
|
| 1094 |
+
|
| 1095 |
+
|
| 1096 |
+
LICENSE_TEXT = lambda a, p:f'Current Application Version: Ultimate Vocal Remover {a}\n' +\
|
| 1097 |
+
f'Current Patch Version: {p}\n\n' +\
|
| 1098 |
+
'Copyright (c) 2022 Ultimate Vocal Remover\n\n' +\
|
| 1099 |
+
'UVR is free and open-source, but MIT licensed. Please credit us if you use our\n' +\
|
| 1100 |
+
f'models or code for projects unrelated to UVR.\n\n{LICENSE_OS_SPECIFIC_TEXT}' +\
|
| 1101 |
+
'This bundle contains the UVR interface, Python, PyTorch, and other\n' +\
|
| 1102 |
+
'dependencies needed to run the application effectively.\n\n' +\
|
| 1103 |
+
'Website Links: This application, System or Service(s) may contain links to\n' +\
|
| 1104 |
+
'other websites and downloads, and they are solely provided to you as an\n' +\
|
| 1105 |
+
'additional convenience. You understand and acknowledge that by clicking\n' +\
|
| 1106 |
+
'or activating such links you are accessing a site or service outside of\n' +\
|
| 1107 |
+
'this application, and that we do not screen, review, approve, or otherwise\n' +\
|
| 1108 |
+
'endorse any content or information contained in these linked websites.\n' +\
|
| 1109 |
+
'You acknowledge and agree that we, our affiliates and partners are not\n' +\
|
| 1110 |
+
'responsible for the contents of any of these linked websites, including\n' +\
|
| 1111 |
+
'the accuracy or availability of information provided by the linked websites,\n' +\
|
| 1112 |
+
'and we make no representations or warranties regarding your use of\n' +\
|
| 1113 |
+
'the linked websites.\n\n' +\
|
| 1114 |
+
'This application is MIT Licensed\n\n' +\
|
| 1115 |
+
'Permission is hereby granted, free of charge, to any person obtaining a copy\n' +\
|
| 1116 |
+
'of this software and associated documentation files (the "Software"), to deal\n' +\
|
| 1117 |
+
'in the Software without restriction, including without limitation the rights\n' +\
|
| 1118 |
+
'to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n' +\
|
| 1119 |
+
'copies of the Software, and to permit persons to whom the Software is\n' +\
|
| 1120 |
+
'furnished to do so, subject to the following conditions:\n\n' +\
|
| 1121 |
+
'The above copyright notice and this permission notice shall be included in all\n' +\
|
| 1122 |
+
'copies or substantial portions of the Software.\n\n' +\
|
| 1123 |
+
'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n' +\
|
| 1124 |
+
'IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n' +\
|
| 1125 |
+
'FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n' +\
|
| 1126 |
+
'AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n' +\
|
| 1127 |
+
'LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n' +\
|
| 1128 |
+
'OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n' +\
|
| 1129 |
+
'SOFTWARE.'
|
| 1130 |
+
|
| 1131 |
+
CHANGE_LOG_HEADER = lambda patch:f"Patch Version:\n\n{patch}"
|
| 1132 |
+
|
| 1133 |
+
#DND CONSTS
|
| 1134 |
+
|
| 1135 |
+
MAC_DND_CHECK = ('/Users/',
|
| 1136 |
+
'/Applications/',
|
| 1137 |
+
'/Library/',
|
| 1138 |
+
'/System/')
|
| 1139 |
+
LINUX_DND_CHECK = ('/home/',
|
| 1140 |
+
'/usr/')
|
| 1141 |
+
WINDOWS_DND_CHECK = ('A:', 'B:', 'C:', 'D:', 'E:', 'F:', 'G:', 'H:', 'I:', 'J:', 'K:', 'L:', 'M:', 'N:', 'O:', 'P:', 'Q:', 'R:', 'S:', 'T:', 'U:', 'V:', 'W:', 'X:', 'Y:', 'Z:')
|
| 1142 |
+
|
| 1143 |
+
WOOD_INST_MODEL_HASH = '0ec76fd9e65f81d8b4fbd13af4826ed8'
|
| 1144 |
+
WOOD_INST_PARAMS = {
|
| 1145 |
+
"vr_model_param": "4band_v3",
|
| 1146 |
+
"primary_stem": NO_WIND_INST_STEM
|
| 1147 |
+
}
|
gui_data/error_handling.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from datetime import datetime
|
| 2 |
+
import traceback
|
| 3 |
+
|
| 4 |
+
CUDA_MEMORY_ERROR = "CUDA out of memory"
|
| 5 |
+
CUDA_RUNTIME_ERROR = "CUDNN error executing cudnnSetTensorNdDescriptor"
|
| 6 |
+
DEMUCS_MODEL_MISSING_ERROR = "is neither a single pre-trained model or a bag of models."
|
| 7 |
+
ENSEMBLE_MISSING_MODEL_ERROR = "local variable \'enseExport\' referenced before assignment"
|
| 8 |
+
FFMPEG_MISSING_ERROR = """audioread\__init__.py", line 116, in audio_open"""
|
| 9 |
+
FILE_MISSING_ERROR = "FileNotFoundError"
|
| 10 |
+
MDX_MEMORY_ERROR = "onnxruntime::CudaCall CUDA failure 2: out of memory"
|
| 11 |
+
MDX_MODEL_MISSING = "[ONNXRuntimeError] : 3 : NO_SUCHFILE"
|
| 12 |
+
MDX_MODEL_SETTINGS_ERROR = "Got invalid dimensions for input"
|
| 13 |
+
MDX_RUNTIME_ERROR = "onnxruntime::BFCArena::AllocateRawInternal"
|
| 14 |
+
MODULE_ERROR = "ModuleNotFoundError"
|
| 15 |
+
WINDOW_SIZE_ERROR = "h1_shape[3] must be greater than h2_shape[3]"
|
| 16 |
+
SF_WRITE_ERROR = "sf.write"
|
| 17 |
+
SYSTEM_MEMORY_ERROR = "DefaultCPUAllocator: not enough memory"
|
| 18 |
+
MISSING_MODEL_ERROR = "'NoneType\' object has no attribute \'model_basename\'"
|
| 19 |
+
ARRAY_SIZE_ERROR = "ValueError: \"array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\""
|
| 20 |
+
GPU_INCOMPATIBLE_ERROR = "no kernel image is available for execution on the device"
|
| 21 |
+
|
| 22 |
+
CONTACT_DEV = 'If this error persists, please contact the developers with the error details.'
|
| 23 |
+
|
| 24 |
+
ERROR_MAPPER = {
|
| 25 |
+
CUDA_MEMORY_ERROR:
|
| 26 |
+
('The application was unable to allocate enough GPU memory to use this model. ' +
|
| 27 |
+
'Please close any GPU intensive applications and try again.\n' +
|
| 28 |
+
'If the error persists, your GPU might not be supported.') ,
|
| 29 |
+
CUDA_RUNTIME_ERROR:
|
| 30 |
+
(f'Your PC cannot process this audio file with the chunk size selected. Please lower the chunk size and try again.\n\n{CONTACT_DEV}'),
|
| 31 |
+
DEMUCS_MODEL_MISSING_ERROR:
|
| 32 |
+
('The selected Demucs model is missing. ' +
|
| 33 |
+
'Please download the model or make sure it is in the correct directory.'),
|
| 34 |
+
ENSEMBLE_MISSING_MODEL_ERROR:
|
| 35 |
+
('The application was unable to locate a model you selected for this ensemble.\n\n' +
|
| 36 |
+
'Please do the following to use all compatible models:\n\n1. Navigate to the \"Updates\" tab in the Help Guide.\n2. Download and install the model expansion pack.\n3. Then try again.\n\n' +
|
| 37 |
+
'If the error persists, please verify all models are present.'),
|
| 38 |
+
FFMPEG_MISSING_ERROR:
|
| 39 |
+
('The input file type is not supported or FFmpeg is missing. Please select a file type supported by FFmpeg and try again. ' +
|
| 40 |
+
'If FFmpeg is missing or not installed, you will only be able to process \".wav\" files until it is available on this system. ' +
|
| 41 |
+
f'See the \"More Info\" tab in the Help Guide.\n\n{CONTACT_DEV}'),
|
| 42 |
+
FILE_MISSING_ERROR:
|
| 43 |
+
(f'Missing file error raised. Please address the error and try again.\n\n{CONTACT_DEV}'),
|
| 44 |
+
MDX_MEMORY_ERROR:
|
| 45 |
+
('The application was unable to allocate enough GPU memory to use this model.\n\n' +
|
| 46 |
+
'Please do the following:\n\n1. Close any GPU intensive applications.\n2. Lower the set chunk size.\n3. Then try again.\n\n' +
|
| 47 |
+
'If the error persists, your GPU might not be supported.'),
|
| 48 |
+
MDX_MODEL_MISSING:
|
| 49 |
+
('The application could not detect this MDX-Net model on your system. ' +
|
| 50 |
+
'Please make sure all the models are present in the correct directory.\n\n' +
|
| 51 |
+
'If the error persists, please reinstall application or contact the developers.'),
|
| 52 |
+
MDX_RUNTIME_ERROR:
|
| 53 |
+
('The application was unable to allocate enough GPU memory to use this model.\n\n' +
|
| 54 |
+
'Please do the following:\n\n1. Close any GPU intensive applications.\n2. Lower the set chunk size.\n3. Then try again.\n\n' +
|
| 55 |
+
'If the error persists, your GPU might not be supported.'),
|
| 56 |
+
WINDOW_SIZE_ERROR:
|
| 57 |
+
('Invalid window size.\n\n' +
|
| 58 |
+
'The chosen window size is likely not compatible with this model. Please select a different size and try again.'),
|
| 59 |
+
SF_WRITE_ERROR:
|
| 60 |
+
('Could not write audio file.\n\n' +
|
| 61 |
+
'This could be due to one of the following:\n\n1. Low storage on target device.\n2. The export directory no longer exists.\n3. A system permissions issue.'),
|
| 62 |
+
SYSTEM_MEMORY_ERROR:
|
| 63 |
+
('The application was unable to allocate enough system memory to use this model.\n\n' +
|
| 64 |
+
'Please do the following:\n\n1. Restart this application.\n2. Ensure any CPU intensive applications are closed.\n3. Then try again.\n\n' +
|
| 65 |
+
'Please Note: Intel Pentium and Intel Celeron processors do not work well with this application.\n\n' +
|
| 66 |
+
'If the error persists, the system may not have enough RAM, or your CPU might not be supported.'),
|
| 67 |
+
MISSING_MODEL_ERROR:
|
| 68 |
+
('Model Missing: The application was unable to locate the chosen model.\n\n' +
|
| 69 |
+
'If the error persists, please verify any selected models are present.'),
|
| 70 |
+
GPU_INCOMPATIBLE_ERROR:
|
| 71 |
+
('This process is not compatible with your GPU.\n\n' +
|
| 72 |
+
'Please uncheck \"GPU Conversion\" and try again'),
|
| 73 |
+
ARRAY_SIZE_ERROR:
|
| 74 |
+
('The application was not able to process the given audiofile. Please convert the audiofile to another format and try again.'),
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
def error_text(process_method, exception):
|
| 78 |
+
|
| 79 |
+
traceback_text = ''.join(traceback.format_tb(exception.__traceback__))
|
| 80 |
+
message = f'{type(exception).__name__}: "{exception}"\nTraceback Error: "\n{traceback_text}"\n'
|
| 81 |
+
error_message = f'\n\nRaw Error Details:\n\n{message}\nError Time Stamp [{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}]\n'
|
| 82 |
+
process = f'Last Error Received:\n\nProcess: {process_method}\n\n'
|
| 83 |
+
|
| 84 |
+
for error_type, full_text in ERROR_MAPPER.items():
|
| 85 |
+
if error_type in message:
|
| 86 |
+
final_message = full_text
|
| 87 |
+
break
|
| 88 |
+
else:
|
| 89 |
+
final_message = (CONTACT_DEV)
|
| 90 |
+
|
| 91 |
+
return f"{process}{final_message}{error_message}"
|
| 92 |
+
|
| 93 |
+
def error_dialouge(exception):
|
| 94 |
+
|
| 95 |
+
error_name = f'{type(exception).__name__}'
|
| 96 |
+
traceback_text = ''.join(traceback.format_tb(exception.__traceback__))
|
| 97 |
+
message = f'{error_name}: "{exception}"\n{traceback_text}"'
|
| 98 |
+
|
| 99 |
+
for error_type, full_text in ERROR_MAPPER.items():
|
| 100 |
+
if error_type in message:
|
| 101 |
+
final_message = full_text
|
| 102 |
+
break
|
| 103 |
+
else:
|
| 104 |
+
final_message = (f'{error_name}: {exception}\n\n{CONTACT_DEV}')
|
| 105 |
+
|
| 106 |
+
return final_message
|
gui_data/fail_chime.wav
ADDED
|
Binary file (385 kB). View file
|
|
|
gui_data/fonts/centurygothic/GOTHIC.TTF
ADDED
|
Binary file (138 kB). View file
|
|
|
gui_data/fonts/centurygothic/GOTHICB.TTF
ADDED
|
Binary file (130 kB). View file
|
|
|
gui_data/fonts/centurygothic/GOTHICBI.TTF
ADDED
|
Binary file (139 kB). View file
|
|
|
gui_data/fonts/centurygothic/GOTHICI.TTF
ADDED
|
Binary file (149 kB). View file
|
|
|
gui_data/img/File.png
ADDED
|
gui_data/img/GUI-Icon.ico
ADDED
|
|
gui_data/img/GUI-Icon.png
ADDED
|
|
gui_data/img/UVR-banner.png
ADDED
|
gui_data/img/UVR_5_5_0.png
ADDED
|
gui_data/img/UVR_5_5_1.png
ADDED
|
gui_data/img/UVR_v5_5_MacOS.png
ADDED
|
gui_data/img/credits.png
ADDED
|
gui_data/img/donate.png
ADDED
|
gui_data/img/download.png
ADDED
|
gui_data/img/help.png
ADDED
|
gui_data/img/key.png
ADDED
|
gui_data/img/pause.png
ADDED
|
gui_data/img/play.png
ADDED
|
gui_data/img/splash.bmp
ADDED
|
gui_data/img/stop.png
ADDED
|
gui_data/img/stop_player.png
ADDED
|
gui_data/old_data_check.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import shutil
|
| 3 |
+
|
| 4 |
+
def file_check(original_dir, new_dir):
|
| 5 |
+
|
| 6 |
+
if os.path.isdir(original_dir):
|
| 7 |
+
for file in os.listdir(original_dir):
|
| 8 |
+
shutil.move(os.path.join(original_dir, file), os.path.join(new_dir, file))
|
| 9 |
+
|
| 10 |
+
if len(os.listdir(original_dir)) == 0:
|
| 11 |
+
shutil.rmtree(original_dir)
|
| 12 |
+
|
| 13 |
+
def remove_unneeded_yamls(demucs_dir):
|
| 14 |
+
|
| 15 |
+
for file in os.listdir(demucs_dir):
|
| 16 |
+
if file.endswith('.yaml'):
|
| 17 |
+
if os.path.isfile(os.path.join(demucs_dir, file)):
|
| 18 |
+
os.remove(os.path.join(demucs_dir, file))
|
| 19 |
+
|
| 20 |
+
def remove_temps(remove_dir):
|
| 21 |
+
|
| 22 |
+
if os.path.isdir(remove_dir):
|
| 23 |
+
try:
|
| 24 |
+
shutil.rmtree(remove_dir)
|
| 25 |
+
except Exception as e:
|
| 26 |
+
print(e)
|
| 27 |
+
|
gui_data/saved_ensembles/saved_ensembles_go_here.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
saved_ensembles_go_here
|
gui_data/saved_settings/saved_settings_go_here.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
saved_settings_go_here
|
gui_data/sv_ttk/__init__.py
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
import platform
|
| 3 |
+
|
| 4 |
+
if platform.system() == "Darwin":
|
| 5 |
+
sun_valley_tcl = "sun-valley_darwin.tcl"
|
| 6 |
+
else:
|
| 7 |
+
sun_valley_tcl = "sun-valley.tcl"
|
| 8 |
+
|
| 9 |
+
inited = False
|
| 10 |
+
root = None
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def init(func):
|
| 14 |
+
def wrapper(*args, **kwargs):
|
| 15 |
+
global inited
|
| 16 |
+
global root
|
| 17 |
+
|
| 18 |
+
if not inited:
|
| 19 |
+
from tkinter import _default_root
|
| 20 |
+
|
| 21 |
+
path = (Path(__file__).parent / sun_valley_tcl).resolve()
|
| 22 |
+
|
| 23 |
+
try:
|
| 24 |
+
_default_root.tk.call("source", str(path))
|
| 25 |
+
except AttributeError:
|
| 26 |
+
raise RuntimeError(
|
| 27 |
+
"can't set theme. "
|
| 28 |
+
"Tk is not initialized. "
|
| 29 |
+
"Please first create a tkinter.Tk instance, then set the theme."
|
| 30 |
+
) from None
|
| 31 |
+
else:
|
| 32 |
+
inited = True
|
| 33 |
+
root = _default_root
|
| 34 |
+
|
| 35 |
+
return func(*args, **kwargs)
|
| 36 |
+
|
| 37 |
+
return wrapper
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
@init
|
| 41 |
+
def set_theme(theme):
|
| 42 |
+
if theme not in {"dark", "light"}:
|
| 43 |
+
raise RuntimeError(f"not a valid theme name: {theme}")
|
| 44 |
+
|
| 45 |
+
root.tk.call("set_theme", theme)
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
@init
|
| 49 |
+
def get_theme():
|
| 50 |
+
theme = root.tk.call("ttk::style", "theme", "use")
|
| 51 |
+
|
| 52 |
+
try:
|
| 53 |
+
return {"sun-valley-dark": "dark", "sun-valley-light": "light"}[theme]
|
| 54 |
+
except KeyError:
|
| 55 |
+
return theme
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
@init
|
| 59 |
+
def toggle_theme():
|
| 60 |
+
if get_theme() == "dark":
|
| 61 |
+
use_light_theme()
|
| 62 |
+
else:
|
| 63 |
+
use_dark_theme()
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
use_dark_theme = lambda: set_theme("dark")
|
| 67 |
+
use_light_theme = lambda: set_theme("light")
|
gui_data/sv_ttk/sun-valley.tcl
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright © 2021 rdbende <rdbende@gmail.com>
|
| 2 |
+
|
| 3 |
+
source [file join [file dirname [info script]] theme dark.tcl]
|
| 4 |
+
|
| 5 |
+
option add *tearOff 0
|
| 6 |
+
|
| 7 |
+
proc set_theme {mode} {
|
| 8 |
+
if {$mode == "dark"} {
|
| 9 |
+
ttk::style theme use "sun-valley-dark"
|
| 10 |
+
|
| 11 |
+
array set colors {
|
| 12 |
+
-fg "#F6F6F7"
|
| 13 |
+
-bg "#0e0e0f"
|
| 14 |
+
-disabledfg "#F6F6F7"
|
| 15 |
+
-selectfg "#F6F6F7"
|
| 16 |
+
-selectbg "#003b50"
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
ttk::style configure . \
|
| 20 |
+
-background $colors(-bg) \
|
| 21 |
+
-foreground $colors(-fg) \
|
| 22 |
+
-troughcolor $colors(-bg) \
|
| 23 |
+
-focuscolor $colors(-selectbg) \
|
| 24 |
+
-selectbackground $colors(-selectbg) \
|
| 25 |
+
-selectforeground $colors(-selectfg) \
|
| 26 |
+
-insertwidth 0 \
|
| 27 |
+
-insertcolor $colors(-fg) \
|
| 28 |
+
-fieldbackground $colors(-selectbg) \
|
| 29 |
+
-font {"Century Gothic" 10} \
|
| 30 |
+
-borderwidth 0 \
|
| 31 |
+
-relief flat
|
| 32 |
+
|
| 33 |
+
tk_setPalette \
|
| 34 |
+
background [ttk::style lookup . -background] \
|
| 35 |
+
foreground [ttk::style lookup . -foreground] \
|
| 36 |
+
highlightColor [ttk::style lookup . -focuscolor] \
|
| 37 |
+
selectBackground [ttk::style lookup . -selectbackground] \
|
| 38 |
+
selectForeground [ttk::style lookup . -selectforeground] \
|
| 39 |
+
activeBackground [ttk::style lookup . -selectbackground] \
|
| 40 |
+
activeForeground [ttk::style lookup . -selectforeground]
|
| 41 |
+
|
| 42 |
+
ttk::style map . -foreground [list disabled $colors(-disabledfg)]
|
| 43 |
+
|
| 44 |
+
option add *font [ttk::style lookup . -font]
|
| 45 |
+
option add *Menu.selectcolor $colors(-fg)
|
| 46 |
+
option add *Menu.background #0e0e0f
|
| 47 |
+
|
| 48 |
+
}
|
| 49 |
+
}
|
gui_data/sv_ttk/sun-valley_darwin.tcl
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright © 2021 rdbende <rdbende@gmail.com>
|
| 2 |
+
|
| 3 |
+
source [file join [file dirname [info script]] theme dark.tcl]
|
| 4 |
+
|
| 5 |
+
option add *tearOff 0
|
| 6 |
+
|
| 7 |
+
proc set_theme {mode} {
|
| 8 |
+
if {$mode == "dark"} {
|
| 9 |
+
ttk::style theme use "sun-valley-dark"
|
| 10 |
+
|
| 11 |
+
array set colors {
|
| 12 |
+
-fg "#F6F6F7"
|
| 13 |
+
-bg "#0e0e0f"
|
| 14 |
+
-disabledfg "#F6F6F7"
|
| 15 |
+
-selectfg "#F6F6F7"
|
| 16 |
+
-selectbg "#003b50"
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
ttk::style configure . \
|
| 20 |
+
-background $colors(-bg) \
|
| 21 |
+
-foreground $colors(-fg) \
|
| 22 |
+
-troughcolor $colors(-bg) \
|
| 23 |
+
-focuscolor $colors(-selectbg) \
|
| 24 |
+
-selectbackground $colors(-selectbg) \
|
| 25 |
+
-selectforeground $colors(-selectfg) \
|
| 26 |
+
-insertwidth 0 \
|
| 27 |
+
-insertcolor $colors(-fg) \
|
| 28 |
+
-fieldbackground $colors(-selectbg) \
|
| 29 |
+
-font {"Century Gothic" 13} \
|
| 30 |
+
-borderwidth 0 \
|
| 31 |
+
-relief flat
|
| 32 |
+
|
| 33 |
+
tk_setPalette \
|
| 34 |
+
background [ttk::style lookup . -background] \
|
| 35 |
+
foreground [ttk::style lookup . -foreground] \
|
| 36 |
+
highlightColor [ttk::style lookup . -focuscolor] \
|
| 37 |
+
selectBackground [ttk::style lookup . -selectbackground] \
|
| 38 |
+
selectForeground [ttk::style lookup . -selectforeground] \
|
| 39 |
+
activeBackground [ttk::style lookup . -selectbackground] \
|
| 40 |
+
activeForeground [ttk::style lookup . -selectforeground]
|
| 41 |
+
|
| 42 |
+
ttk::style map . -foreground [list disabled $colors(-disabledfg)]
|
| 43 |
+
|
| 44 |
+
option add *font [ttk::style lookup . -font]
|
| 45 |
+
option add *Menu.selectcolor $colors(-fg)
|
| 46 |
+
option add *Menu.background #0e0e0f
|
| 47 |
+
|
| 48 |
+
}
|
| 49 |
+
}
|
gui_data/sv_ttk/theme/dark.tcl
ADDED
|
@@ -0,0 +1,540 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Copyright © 2021 rdbende <rdbende@gmail.com>
|
| 2 |
+
|
| 3 |
+
# A stunning dark theme for ttk based on Microsoft's Sun Valley visual style
|
| 4 |
+
|
| 5 |
+
package require Tk 8.6
|
| 6 |
+
|
| 7 |
+
namespace eval ttk::theme::sun-valley-dark {
|
| 8 |
+
variable version 1.0
|
| 9 |
+
package provide ttk::theme::sun-valley-dark $version
|
| 10 |
+
|
| 11 |
+
ttk::style theme create sun-valley-dark -parent clam -settings {
|
| 12 |
+
proc load_images {imgdir} {
|
| 13 |
+
variable images
|
| 14 |
+
foreach file [glob -directory $imgdir *.png] {
|
| 15 |
+
set images([file tail [file rootname $file]]) \
|
| 16 |
+
[image create photo -file $file -format png]
|
| 17 |
+
}
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
load_images [file join [file dirname [info script]] dark]
|
| 21 |
+
|
| 22 |
+
array set colors {
|
| 23 |
+
-fg "#F6F6F7"
|
| 24 |
+
-bg "#0e0e0f"
|
| 25 |
+
-disabledfg "#F6F6F7"
|
| 26 |
+
-selectfg "#ffffff"
|
| 27 |
+
-selectbg "#2f60d8"
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
ttk::style layout TButton {
|
| 31 |
+
Button.button -children {
|
| 32 |
+
Button.padding -children {
|
| 33 |
+
Button.label -side left -expand 1
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
ttk::style layout Toolbutton {
|
| 39 |
+
Toolbutton.button -children {
|
| 40 |
+
Toolbutton.padding -children {
|
| 41 |
+
Toolbutton.label -side left -expand 1
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
ttk::style layout TMenubutton {
|
| 47 |
+
Menubutton.button -children {
|
| 48 |
+
Menubutton.padding -children {
|
| 49 |
+
Menubutton.label -side left -expand 1
|
| 50 |
+
Menubutton.indicator -side right -sticky nsew
|
| 51 |
+
}
|
| 52 |
+
}
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
ttk::style layout TOptionMenu {
|
| 56 |
+
OptionMenu.button -children {
|
| 57 |
+
OptionMenu.padding -children {
|
| 58 |
+
OptionMenu.label -side left -expand 0
|
| 59 |
+
OptionMenu.indicator -side right -sticky nsew
|
| 60 |
+
}
|
| 61 |
+
}
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
ttk::style layout Accent.TButton {
|
| 65 |
+
AccentButton.button -children {
|
| 66 |
+
AccentButton.padding -children {
|
| 67 |
+
AccentButton.label -side left -expand 1
|
| 68 |
+
}
|
| 69 |
+
}
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
ttk::style layout Titlebar.TButton {
|
| 73 |
+
TitlebarButton.button -children {
|
| 74 |
+
TitlebarButton.padding -children {
|
| 75 |
+
TitlebarButton.label -side left -expand 1
|
| 76 |
+
}
|
| 77 |
+
}
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
ttk::style layout Close.Titlebar.TButton {
|
| 81 |
+
CloseButton.button -children {
|
| 82 |
+
CloseButton.padding -children {
|
| 83 |
+
CloseButton.label -side left -expand 1
|
| 84 |
+
}
|
| 85 |
+
}
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
ttk::style layout TCheckbutton {
|
| 89 |
+
Checkbutton.button -children {
|
| 90 |
+
Checkbutton.padding -children {
|
| 91 |
+
Checkbutton.indicator -side left
|
| 92 |
+
Checkbutton.label -side right -expand 1
|
| 93 |
+
}
|
| 94 |
+
}
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
ttk::style layout Switch.TCheckbutton {
|
| 98 |
+
Switch.button -children {
|
| 99 |
+
Switch.padding -children {
|
| 100 |
+
Switch.indicator -side left
|
| 101 |
+
Switch.label -side right -expand 1
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
ttk::style layout Toggle.TButton {
|
| 107 |
+
ToggleButton.button -children {
|
| 108 |
+
ToggleButton.padding -children {
|
| 109 |
+
ToggleButton.label -side left -expand 1
|
| 110 |
+
}
|
| 111 |
+
}
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
ttk::style layout TRadiobutton {
|
| 115 |
+
Radiobutton.button -children {
|
| 116 |
+
Radiobutton.padding -children {
|
| 117 |
+
Radiobutton.indicator -side left
|
| 118 |
+
Radiobutton.label -side right -expand 1
|
| 119 |
+
}
|
| 120 |
+
}
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
ttk::style layout Vertical.TScrollbar {
|
| 124 |
+
Vertical.Scrollbar.trough -sticky ns -children {
|
| 125 |
+
Vertical.Scrollbar.uparrow -side top
|
| 126 |
+
Vertical.Scrollbar.downarrow -side bottom
|
| 127 |
+
Vertical.Scrollbar.thumb -expand 1
|
| 128 |
+
}
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
ttk::style layout Horizontal.TScrollbar {
|
| 132 |
+
Horizontal.Scrollbar.trough -sticky ew -children {
|
| 133 |
+
Horizontal.Scrollbar.leftarrow -side left
|
| 134 |
+
Horizontal.Scrollbar.rightarrow -side right
|
| 135 |
+
Horizontal.Scrollbar.thumb -expand 1
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
ttk::style layout TSeparator {
|
| 140 |
+
TSeparator.separator -sticky nsew
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
ttk::style layout TCombobox {
|
| 144 |
+
Combobox.field -sticky nsew -children {
|
| 145 |
+
Combobox.padding -expand 1 -sticky nsew -children {
|
| 146 |
+
Combobox.textarea -sticky nsew
|
| 147 |
+
}
|
| 148 |
+
}
|
| 149 |
+
null -side right -sticky ns -children {
|
| 150 |
+
Combobox.arrow -sticky nsew
|
| 151 |
+
}
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
ttk::style layout TSpinbox {
|
| 155 |
+
Spinbox.field -sticky nsew -children {
|
| 156 |
+
Spinbox.padding -expand 1 -sticky nsew -children {
|
| 157 |
+
Spinbox.textarea -sticky nsew
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
}
|
| 161 |
+
null -side right -sticky nsew -children {
|
| 162 |
+
Spinbox.uparrow -side left -sticky nsew
|
| 163 |
+
Spinbox.downarrow -side right -sticky nsew
|
| 164 |
+
}
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
ttk::style layout Card.TFrame {
|
| 168 |
+
Card.field {
|
| 169 |
+
Card.padding -expand 1
|
| 170 |
+
}
|
| 171 |
+
}
|
| 172 |
+
|
| 173 |
+
ttk::style layout TLabelframe {
|
| 174 |
+
Labelframe.border {
|
| 175 |
+
Labelframe.padding -expand 1 -children {
|
| 176 |
+
Labelframe.label -side left
|
| 177 |
+
}
|
| 178 |
+
}
|
| 179 |
+
}
|
| 180 |
+
|
| 181 |
+
ttk::style layout TNotebook {
|
| 182 |
+
Notebook.border -children {
|
| 183 |
+
TNotebook.Tab -expand 1
|
| 184 |
+
Notebook.client -sticky nsew
|
| 185 |
+
}
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
ttk::style layout Treeview.Item {
|
| 189 |
+
Treeitem.padding -sticky nsew -children {
|
| 190 |
+
Treeitem.image -side left -sticky {}
|
| 191 |
+
Treeitem.indicator -side left -sticky {}
|
| 192 |
+
Treeitem.text -side left -sticky {}
|
| 193 |
+
}
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
# Button
|
| 197 |
+
ttk::style configure TButton -padding {8 4} -anchor center -foreground $colors(-fg)
|
| 198 |
+
|
| 199 |
+
ttk::style map TButton -foreground \
|
| 200 |
+
[list disabled #7a7a7a \
|
| 201 |
+
pressed #d0d0d0]
|
| 202 |
+
|
| 203 |
+
ttk::style element create Button.button image \
|
| 204 |
+
[list $images(button-rest) \
|
| 205 |
+
{selected disabled} $images(button-disabled) \
|
| 206 |
+
disabled $images(button-disabled) \
|
| 207 |
+
selected $images(button-rest) \
|
| 208 |
+
pressed $images(button-pressed) \
|
| 209 |
+
active $images(button-hover) \
|
| 210 |
+
] -border 4 -sticky nsew
|
| 211 |
+
|
| 212 |
+
# Toolbutton
|
| 213 |
+
ttk::style configure Toolbutton -padding {8 4} -anchor center
|
| 214 |
+
|
| 215 |
+
ttk::style element create Toolbutton.button image \
|
| 216 |
+
[list $images(empty) \
|
| 217 |
+
{selected disabled} $images(button-disabled) \
|
| 218 |
+
selected $images(button-rest) \
|
| 219 |
+
pressed $images(button-pressed) \
|
| 220 |
+
active $images(button-hover) \
|
| 221 |
+
] -border 4 -sticky nsew
|
| 222 |
+
|
| 223 |
+
# Menubutton
|
| 224 |
+
ttk::style configure TMenubutton -padding {8 4 0 4}
|
| 225 |
+
|
| 226 |
+
ttk::style element create Menubutton.button \
|
| 227 |
+
image [list $images(button-rest) \
|
| 228 |
+
disabled $images(button-disabled) \
|
| 229 |
+
pressed $images(button-pressed) \
|
| 230 |
+
active $images(button-hover) \
|
| 231 |
+
] -border 4 -sticky nsew
|
| 232 |
+
|
| 233 |
+
ttk::style element create Menubutton.indicator image $images(arrow-down) -width 28 -sticky {}
|
| 234 |
+
|
| 235 |
+
# OptionMenu
|
| 236 |
+
ttk::style configure TOptionMenu -padding {8 4 0 4}
|
| 237 |
+
ttk::style configure OptionMenudropdown -borderwidth 0 -relief ridge
|
| 238 |
+
|
| 239 |
+
ttk::style element create OptionMenu.button \
|
| 240 |
+
image [list $images(button-rest) \
|
| 241 |
+
disabled $images(button-disabled) \
|
| 242 |
+
pressed $images(button-pressed) \
|
| 243 |
+
active $images(button-hover) \
|
| 244 |
+
] -border 0 -sticky nsew
|
| 245 |
+
|
| 246 |
+
ttk::style element create OptionMenu.indicator image $images(arrow-down) -width 28 -sticky {}
|
| 247 |
+
|
| 248 |
+
# Accent.TButton
|
| 249 |
+
ttk::style configure Accent.TButton -padding {8 4} -anchor center -foreground #ffffff
|
| 250 |
+
|
| 251 |
+
ttk::style map Accent.TButton -foreground \
|
| 252 |
+
[list pressed #25536a \
|
| 253 |
+
disabled #a5a5a5]
|
| 254 |
+
|
| 255 |
+
ttk::style element create AccentButton.button image \
|
| 256 |
+
[list $images(button-accent-rest) \
|
| 257 |
+
{selected disabled} $images(button-accent-disabled) \
|
| 258 |
+
disabled $images(button-accent-disabled) \
|
| 259 |
+
selected $images(button-accent-rest) \
|
| 260 |
+
pressed $images(button-accent-pressed) \
|
| 261 |
+
active $images(button-accent-hover) \
|
| 262 |
+
] -border 4 -sticky nsew
|
| 263 |
+
|
| 264 |
+
# Titlebar.TButton
|
| 265 |
+
ttk::style configure Titlebar.TButton -padding {8 4} -anchor center -foreground #ffffff
|
| 266 |
+
|
| 267 |
+
ttk::style map Titlebar.TButton -foreground \
|
| 268 |
+
[list disabled #6f6f6f \
|
| 269 |
+
pressed #d1d1d1 \
|
| 270 |
+
active #ffffff]
|
| 271 |
+
|
| 272 |
+
ttk::style element create TitlebarButton.button image \
|
| 273 |
+
[list $images(empty) \
|
| 274 |
+
disabled $images(empty) \
|
| 275 |
+
pressed $images(button-titlebar-pressed) \
|
| 276 |
+
active $images(button-titlebar-hover) \
|
| 277 |
+
] -border 4 -sticky nsew
|
| 278 |
+
|
| 279 |
+
# Close.Titlebar.TButton
|
| 280 |
+
ttk::style configure Close.Titlebar.TButton -padding {8 4} -anchor center -foreground #ffffff
|
| 281 |
+
|
| 282 |
+
ttk::style map Close.Titlebar.TButton -foreground \
|
| 283 |
+
[list disabled #6f6f6f \
|
| 284 |
+
pressed #e8bfbb \
|
| 285 |
+
active #ffffff]
|
| 286 |
+
|
| 287 |
+
ttk::style element create CloseButton.button image \
|
| 288 |
+
[list $images(empty) \
|
| 289 |
+
disabled $images(empty) \
|
| 290 |
+
pressed $images(button-close-pressed) \
|
| 291 |
+
active $images(button-close-hover) \
|
| 292 |
+
] -border 4 -sticky nsew
|
| 293 |
+
|
| 294 |
+
# Checkbutton
|
| 295 |
+
ttk::style configure TCheckbutton -padding 2
|
| 296 |
+
|
| 297 |
+
ttk::style element create Checkbutton.indicator image \
|
| 298 |
+
[list $images(check-unsel-rest) \
|
| 299 |
+
{alternate disabled} $images(check-tri-disabled) \
|
| 300 |
+
{selected disabled} $images(check-disabled) \
|
| 301 |
+
disabled $images(check-unsel-disabled) \
|
| 302 |
+
{pressed alternate} $images(check-tri-hover) \
|
| 303 |
+
{active alternate} $images(check-tri-hover) \
|
| 304 |
+
alternate $images(check-tri-rest) \
|
| 305 |
+
{pressed selected} $images(check-hover) \
|
| 306 |
+
{active selected} $images(check-hover) \
|
| 307 |
+
selected $images(check-rest) \
|
| 308 |
+
{pressed !selected} $images(check-unsel-pressed) \
|
| 309 |
+
active $images(check-unsel-hover) \
|
| 310 |
+
] -width 26 -sticky w
|
| 311 |
+
|
| 312 |
+
# Switch.TCheckbutton
|
| 313 |
+
ttk::style element create Switch.indicator image \
|
| 314 |
+
[list $images(switch-off-rest) \
|
| 315 |
+
{selected disabled} $images(switch-on-disabled) \
|
| 316 |
+
disabled $images(switch-off-disabled) \
|
| 317 |
+
{pressed selected} $images(switch-on-pressed) \
|
| 318 |
+
{active selected} $images(switch-on-hover) \
|
| 319 |
+
selected $images(switch-on-rest) \
|
| 320 |
+
{pressed !selected} $images(switch-off-pressed) \
|
| 321 |
+
active $images(switch-off-hover) \
|
| 322 |
+
] -width 46 -sticky w
|
| 323 |
+
|
| 324 |
+
# Toggle.TButton
|
| 325 |
+
ttk::style configure Toggle.TButton -padding {8 4 8 4} -anchor center -foreground $colors(-fg)
|
| 326 |
+
|
| 327 |
+
ttk::style map Toggle.TButton -foreground \
|
| 328 |
+
[list {selected disabled} #a5a5a5 \
|
| 329 |
+
{selected pressed} #d0d0d0 \
|
| 330 |
+
selected #ffffff \
|
| 331 |
+
pressed #25536a \
|
| 332 |
+
disabled #7a7a7a
|
| 333 |
+
]
|
| 334 |
+
|
| 335 |
+
|
| 336 |
+
ttk::style element create ToggleButton.button image \
|
| 337 |
+
[list $images(button-rest) \
|
| 338 |
+
{selected disabled} $images(button-accent-disabled) \
|
| 339 |
+
disabled $images(button-disabled) \
|
| 340 |
+
{pressed selected} $images(button-rest) \
|
| 341 |
+
{active selected} $images(button-accent-hover) \
|
| 342 |
+
selected $images(button-accent-rest) \
|
| 343 |
+
{pressed !selected} $images(button-accent-rest) \
|
| 344 |
+
active $images(button-hover) \
|
| 345 |
+
] -border 4 -sticky nsew
|
| 346 |
+
|
| 347 |
+
# Radiobutton
|
| 348 |
+
ttk::style configure TRadiobutton -padding 0
|
| 349 |
+
|
| 350 |
+
ttk::style element create Radiobutton.indicator image \
|
| 351 |
+
[list $images(radio-unsel-rest) \
|
| 352 |
+
{selected disabled} $images(radio-disabled) \
|
| 353 |
+
disabled $images(radio-unsel-disabled) \
|
| 354 |
+
{pressed selected} $images(radio-pressed) \
|
| 355 |
+
{active selected} $images(radio-hover) \
|
| 356 |
+
selected $images(radio-rest) \
|
| 357 |
+
{pressed !selected} $images(radio-unsel-pressed) \
|
| 358 |
+
active $images(radio-unsel-hover) \
|
| 359 |
+
] -width 20 -sticky w
|
| 360 |
+
|
| 361 |
+
ttk::style configure Menu.TRadiobutton -padding 0
|
| 362 |
+
|
| 363 |
+
ttk::style element create Menu.Radiobutton.indicator image \
|
| 364 |
+
[list $images(radio-unsel-rest) \
|
| 365 |
+
{selected disabled} $images(radio-disabled) \
|
| 366 |
+
disabled $images(radio-unsel-disabled) \
|
| 367 |
+
{pressed selected} $images(radio-pressed) \
|
| 368 |
+
{active selected} $images(radio-hover) \
|
| 369 |
+
selected $images(radio-rest) \
|
| 370 |
+
{pressed !selected} $images(radio-unsel-pressed) \
|
| 371 |
+
active $images(radio-unsel-hover) \
|
| 372 |
+
] -width 20 -sticky w
|
| 373 |
+
|
| 374 |
+
# Scrollbar
|
| 375 |
+
|
| 376 |
+
#ttk::style layout Vertical.TScrollbar
|
| 377 |
+
|
| 378 |
+
ttk::style element create Horizontal.Scrollbar.trough image $images(scroll-hor-trough) -sticky ew -border 0
|
| 379 |
+
ttk::style element create Horizontal.Scrollbar.thumb image $images(scroll-hor-thumb) -sticky ew -border 3
|
| 380 |
+
|
| 381 |
+
ttk::style element create Horizontal.Scrollbar.rightarrow image $images(scroll-right) -sticky {} -width 13
|
| 382 |
+
ttk::style element create Horizontal.Scrollbar.leftarrow image $images(scroll-left) -sticky {} -width 13
|
| 383 |
+
|
| 384 |
+
ttk::style element create Vertical.Scrollbar.trough image $images(scroll-vert-trough) -sticky ns -border 0
|
| 385 |
+
ttk::style element create Vertical.Scrollbar.thumb image $images(scroll-vert-thumb) -sticky ns -border 3
|
| 386 |
+
|
| 387 |
+
ttk::style element create Vertical.Scrollbar.uparrow image $images(scroll-up) -sticky {} -height 13
|
| 388 |
+
ttk::style element create Vertical.Scrollbar.downarrow image $images(scroll-down) -sticky {} -height 13
|
| 389 |
+
|
| 390 |
+
# Scale
|
| 391 |
+
ttk::style element create Horizontal.Scale.trough image $images(scale-trough-hor) \
|
| 392 |
+
-border 5 -padding 0
|
| 393 |
+
|
| 394 |
+
ttk::style element create Vertical.Scale.trough image $images(scale-trough-vert) \
|
| 395 |
+
-border 5 -padding 0
|
| 396 |
+
|
| 397 |
+
ttk::style element create Scale.slider \
|
| 398 |
+
image [list $images(scale-thumb-rest) \
|
| 399 |
+
disabled $images(scale-thumb-disabled) \
|
| 400 |
+
pressed $images(scale-thumb-pressed) \
|
| 401 |
+
active $images(scale-thumb-hover) \
|
| 402 |
+
] -sticky {}
|
| 403 |
+
|
| 404 |
+
# Progressbar
|
| 405 |
+
ttk::style element create Horizontal.Progressbar.trough image $images(progress-trough-hor) \
|
| 406 |
+
-border 1 -sticky ew
|
| 407 |
+
|
| 408 |
+
ttk::style element create Horizontal.Progressbar.pbar image $images(progress-pbar-hor) \
|
| 409 |
+
-border 2 -sticky ew
|
| 410 |
+
|
| 411 |
+
ttk::style element create Vertical.Progressbar.trough image $images(progress-trough-vert) \
|
| 412 |
+
-border 1 -sticky ns
|
| 413 |
+
|
| 414 |
+
ttk::style element create Vertical.Progressbar.pbar image $images(progress-pbar-vert) \
|
| 415 |
+
-border 2 -sticky ns
|
| 416 |
+
|
| 417 |
+
# Entry
|
| 418 |
+
ttk::style configure TEntry -foreground $colors(-fg)
|
| 419 |
+
|
| 420 |
+
ttk::style map TEntry -foreground \
|
| 421 |
+
[list disabled #757575 \
|
| 422 |
+
pressed #cfcfcf
|
| 423 |
+
]
|
| 424 |
+
|
| 425 |
+
ttk::style element create Entry.field \
|
| 426 |
+
image [list $images(entry-rest) \
|
| 427 |
+
{focus hover !invalid} $images(entry-focus) \
|
| 428 |
+
invalid $images(entry-invalid) \
|
| 429 |
+
disabled $images(entry-disabled) \
|
| 430 |
+
{focus !invalid} $images(entry-focus) \
|
| 431 |
+
hover $images(entry-hover) \
|
| 432 |
+
] -border 5 -padding 8 -sticky nsew
|
| 433 |
+
|
| 434 |
+
# Combobox
|
| 435 |
+
ttk::style configure TCombobox -foreground $colors(-fg)
|
| 436 |
+
|
| 437 |
+
ttk::style map TCombobox -foreground \
|
| 438 |
+
[list disabled #757575 \
|
| 439 |
+
pressed #cfcfcf
|
| 440 |
+
]
|
| 441 |
+
|
| 442 |
+
ttk::style configure TCombobox -foreground $colors(-fg)
|
| 443 |
+
ttk::style configure ComboboxPopdownFrame -borderwidth 3 -relief solid
|
| 444 |
+
|
| 445 |
+
ttk::style map TCombobox -selectbackground [list \
|
| 446 |
+
{readonly hover} $colors(-selectbg) \
|
| 447 |
+
{readonly focus} $colors(-selectbg) \
|
| 448 |
+
] -selectforeground [list \
|
| 449 |
+
{readonly hover} $colors(-selectfg) \
|
| 450 |
+
{readonly focus} $colors(-selectfg) \
|
| 451 |
+
]
|
| 452 |
+
|
| 453 |
+
ttk::style element create Combobox.field \
|
| 454 |
+
image [list $images(button-rest) \
|
| 455 |
+
{readonly disabled} $images(button-disabled) \
|
| 456 |
+
{readonly pressed} $images(button-pressed) \
|
| 457 |
+
{readonly hover} $images(button-hover) \
|
| 458 |
+
readonly $images(button-rest) \
|
| 459 |
+
invalid $images(entry-invalid) \
|
| 460 |
+
disabled $images(entry-disabled) \
|
| 461 |
+
focus $images(entry-focus) \
|
| 462 |
+
hover $images(button-hover) \
|
| 463 |
+
] -border 5 -padding 8 -sticky nsew
|
| 464 |
+
|
| 465 |
+
ttk::style element create Combobox.arrow image $images(arrow-down) -width 35 -sticky {}
|
| 466 |
+
|
| 467 |
+
# Spinbox
|
| 468 |
+
ttk::style configure TSpinbox -foreground $colors(-fg)
|
| 469 |
+
|
| 470 |
+
ttk::style map TSpinbox -foreground \
|
| 471 |
+
[list disabled #757575 \
|
| 472 |
+
pressed #cfcfcf
|
| 473 |
+
]
|
| 474 |
+
|
| 475 |
+
ttk::style element create Spinbox.field \
|
| 476 |
+
image [list $images(entry-rest) \
|
| 477 |
+
invalid $images(entry-invalid) \
|
| 478 |
+
disabled $images(entry-disabled) \
|
| 479 |
+
focus $images(entry-focus) \
|
| 480 |
+
hover $images(entry-hover) \
|
| 481 |
+
] -border 5 -padding {8 8 54 8} -sticky nsew
|
| 482 |
+
|
| 483 |
+
ttk::style element create Spinbox.uparrow image $images(arrow-up) -width 35 -sticky {}
|
| 484 |
+
ttk::style element create Spinbox.downarrow image $images(arrow-down) -width 35 -sticky {}
|
| 485 |
+
|
| 486 |
+
# Sizegrip
|
| 487 |
+
ttk::style element create Sizegrip.sizegrip image $images(sizegrip) \
|
| 488 |
+
-sticky nsew
|
| 489 |
+
|
| 490 |
+
# Separator
|
| 491 |
+
ttk::style element create TSeparator.separator image $images(separator)
|
| 492 |
+
|
| 493 |
+
# Card
|
| 494 |
+
ttk::style element create Card.field image $images(card) \
|
| 495 |
+
-border 10 -padding 4 -sticky nsew
|
| 496 |
+
|
| 497 |
+
# Labelframe
|
| 498 |
+
ttk::style element create Labelframe.border image $images(card) \
|
| 499 |
+
-border 5 -padding 4 -sticky nsew
|
| 500 |
+
|
| 501 |
+
# Notebook
|
| 502 |
+
ttk::style configure TNotebook -padding 1
|
| 503 |
+
|
| 504 |
+
ttk::style element create Notebook.border \
|
| 505 |
+
image $images(notebook-border) -border 5 -padding 5
|
| 506 |
+
|
| 507 |
+
ttk::style element create Notebook.client image $images(notebook)
|
| 508 |
+
|
| 509 |
+
ttk::style element create Notebook.tab \
|
| 510 |
+
image [list $images(tab-rest) \
|
| 511 |
+
selected $images(tab-selected) \
|
| 512 |
+
active $images(tab-hover) \
|
| 513 |
+
] -border 13 -padding {16 14 16 6} -height 32
|
| 514 |
+
|
| 515 |
+
# Treeview
|
| 516 |
+
ttk::style element create Treeview.field image $images(card) \
|
| 517 |
+
-border 5
|
| 518 |
+
|
| 519 |
+
ttk::style element create Treeheading.cell \
|
| 520 |
+
image [list $images(treeheading-rest) \
|
| 521 |
+
pressed $images(treeheading-pressed) \
|
| 522 |
+
active $images(treeheading-hover)
|
| 523 |
+
] -border 5 -padding 15 -sticky nsew
|
| 524 |
+
|
| 525 |
+
ttk::style element create Treeitem.indicator \
|
| 526 |
+
image [list $images(arrow-right) \
|
| 527 |
+
user2 $images(empty) \
|
| 528 |
+
user1 $images(arrow-down) \
|
| 529 |
+
] -width 26 -sticky {}
|
| 530 |
+
|
| 531 |
+
ttk::style configure Treeview -background $colors(-bg) -rowheight [expr {[font metrics font -linespace] + 2}]
|
| 532 |
+
ttk::style map Treeview \
|
| 533 |
+
-background [list selected #292929] \
|
| 534 |
+
-foreground [list selected $colors(-selectfg)]
|
| 535 |
+
|
| 536 |
+
# Panedwindow
|
| 537 |
+
# Insane hack to remove clam's ugly sash
|
| 538 |
+
ttk::style configure Sash -gripcount 0
|
| 539 |
+
}
|
| 540 |
+
}
|
gui_data/sv_ttk/theme/dark/arrow-down.png
ADDED
|
gui_data/sv_ttk/theme/dark/arrow-right.png
ADDED
|
gui_data/sv_ttk/theme/dark/arrow-up.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-accent-disabled.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-accent-hover.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-accent-pressed.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-accent-rest.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-close-hover.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-close-pressed.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-disabled.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-hover.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-pressed.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-rest.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-titlebar-hover.png
ADDED
|
gui_data/sv_ttk/theme/dark/button-titlebar-pressed.png
ADDED
|
gui_data/sv_ttk/theme/dark/card.png
ADDED
|