Skip to content

Commit 8b76ec1

Browse files
committed
new colors and gen
new colors sample pack folder structure generator
1 parent 6697acb commit 8b76ec1

1 file changed

Lines changed: 204 additions & 40 deletions

File tree

ABS.py

Lines changed: 204 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
### Color settings
99

10-
scolor="violetred3"
11-
scolor2="DeepPink4"
12-
bgcolor="snow4"
13-
windowcolor="grey18"
10+
scolor="#4f565e"
11+
scolor2="#6c7684"
12+
bgcolor="#4d545e"
13+
windowcolor="#2e3238"
1414

1515
## PyInstaller Path Converter
1616

@@ -33,7 +33,8 @@ def resource_path(relative_path):
3333
sg.FolderBrowse(button_color=scolor),
3434
sg.Checkbox('Iterate down folder tree? (Recursive)', key="-REC-", enable_events=True, background_color=scolor),
3535
sg.Checkbox('Show paths?', key="-SHOWPATHS-", enable_events=True, background_color=scolor),
36-
sg.Button("Refresh", button_color=scolor)
36+
sg.Button("Refresh", button_color=scolor),
37+
sg.Button("Create Sample Folders", button_color=scolor),
3738
]]
3839

3940
filelist = [sg.Listbox([], size=(0,16), key= '-LIST-', background_color=bgcolor, text_color="white", expand_x=True, expand_y=True, sbar_background_color=scolor, select_mode=sg.LISTBOX_SELECT_MODE_MULTIPLE, highlight_background_color="DarkGreen", highlight_text_color="white")]
@@ -82,20 +83,29 @@ def resource_path(relative_path):
8283

8384
### Helpers
8485

85-
def getfilenames(paths):
86+
def make_safedir(path):
87+
if not os.path.exists(path):
88+
os.makedirs(path)
89+
90+
def get_filenames(paths):
8691
fnames = []
8792
for path in paths:
8893
fnames.append(os.path.basename(path))
8994
return fnames
9095

91-
def updatefilelist(showpaths, paths):
96+
def get_full_foldernames(directory, filenames):
97+
folnames = []
98+
for file in filenames:
99+
folnames.append(directory + "/"+ file)
100+
return folnames
101+
102+
def update_filelist(showpaths, paths):
92103
if showpaths:
93104
window.Element('-LIST-').update(values=paths)
94105
else:
95-
window.Element('-LIST-').update(values=getfilenames(paths))
106+
window.Element('-LIST-').update(values=get_filenames(paths))
96107

97-
def getfiles(directory, recursive):
98-
filelog(f"Checking for wavs in {directory}")
108+
def get_files(directory, recursive):
99109
files = []
100110
for file in glob.glob(f"{directory}/*.wav", recursive=recursive):
101111
files.append(file)
@@ -111,9 +121,160 @@ def detect_leading_silence(sound, silence_threshold=-50.0, chunk_size=1):
111121

112122
return trim_ms
113123

124+
def spawn_popup_samples():
125+
smpfolderset = False
126+
samplepack_folderlist = [sg.Column([
127+
[sg.Text("Drums", background_color=bgcolor)],
128+
[sg.Sizer(h_pixels=20), sg.Checkbox("Drum_Loops", background_color=bgcolor, key="SMP_DRUM_LOOPS"), sg.Text("/", background_color=windowcolor), sg.Checkbox("Cymbal_Loops", background_color="darkslateblue", key="SMP_CYMBAL_LOOPS"), sg.Checkbox("Hat_Loops", background_color="darkslateblue", key="SMP_HAT_LOOPS"), sg.Checkbox("Kick_Loops", background_color="darkslateblue", key="SMP_KICK_LOOPS"), sg.Checkbox("Snare_Loops", background_color="darkslateblue", key="SMP_SNARE_LOOPS")],
129+
[sg.Sizer(h_pixels=20), sg.Checkbox("Drum_Hits", background_color=bgcolor, key="SMP_DRUM_HITS"), sg.Text("/", background_color=windowcolor), sg.Checkbox("Cymbals", background_color="darkslateblue", key="SMP_CYMBALS"), sg.Checkbox("Hats", background_color="darkslateblue", key="SMP_HATS"), sg.Checkbox("Kicks", background_color="darkslateblue", key="SMP_KICKS"), sg.Checkbox("Snares", background_color="darkslateblue", key="SMP_SNARES")],
130+
[sg.Text("Percussion", background_color=bgcolor)],
131+
[sg.Sizer(h_pixels=20), sg.Checkbox("Percussion_Loops", background_color=bgcolor, key="SMP_PERCUSSION_LOOPS")],
132+
[sg.Sizer(h_pixels=20), sg.Checkbox("Percussion_Hits", background_color=bgcolor, key="SMP_PERCUSSION_HITS")],
133+
[sg.Text("Bass", background_color=bgcolor)],
134+
[sg.Sizer(h_pixels=20), sg.Checkbox("Bass Loops", background_color=bgcolor, key="SMP_BASS_LOOPS")],
135+
[sg.Sizer(h_pixels=20), sg.Checkbox("Bass Shots", background_color=bgcolor, key="SMP_BASS_SHOTS")],
136+
[sg.Text("Synth", background_color=bgcolor)],
137+
[sg.Sizer(h_pixels=20), sg.Checkbox("Synth_Loops", background_color=bgcolor, key="SMP_SYNTH_LOOPS")],
138+
[sg.Sizer(h_pixels=20), sg.Checkbox("Synth_Shots", background_color=bgcolor, key="SMP_SYNTH_SHOTS")],
139+
[sg.Text("FX", background_color=bgcolor)],
140+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Loops", background_color=bgcolor, key="SMP_FX_LOOPS")],
141+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Shots", background_color=bgcolor, key="SMP_FX_SHOTS")],
142+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Downlifters", background_color=bgcolor, key="SMP_FX_DOWNLIFTERS")],
143+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Uplifters", background_color=bgcolor, key="SMP_FX_UPLIFTERS")],
144+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Impacts", background_color=bgcolor, key="SMP_FX_IMPACTS")],
145+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Ambience", background_color=bgcolor, key="SMP_FX_AMBIENCE")],
146+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Ambience_Loops", background_color=bgcolor, key="SMP_FX_AMBIENCE_LOOPS")],
147+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Glitch", background_color=bgcolor, key="SMP_FX_GLITCH")],
148+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Glitch_Loops", background_color=bgcolor, key="SMP_FX_GLITCH_LOOPS")],
149+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Textures", background_color=bgcolor, key="SMP_FX_TEXTURES")],
150+
[sg.Sizer(h_pixels=20), sg.Checkbox("FX_Texture_Loops", background_color=bgcolor, key="SMP_FX_TEXTURE_LOOPS")],
151+
[sg.Text("Vocals", background_color=bgcolor)],
152+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Loops", background_color=bgcolor, key="SMP_VOCAL_LOOPS")],
153+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Shots", background_color=bgcolor, key="SMP_VOCAL_SHOTS")],
154+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Chops", background_color=bgcolor, key="SMP_VOCAL_CHOPS")],
155+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Chop_Loops", background_color=bgcolor, key="SMP_VOCAL_CHOP_LOOPS")],
156+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Ambience", background_color=bgcolor, key="SMP_VOCAL_AMBIENCE")],
157+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Ambience_Loops", background_color=bgcolor, key="SMP_VOCAL_AMBIENCE_LOOPS")],
158+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Glitch", background_color=bgcolor, key="SMP_VOCAL_GLITCH")],
159+
[sg.Sizer(h_pixels=20), sg.Checkbox("Vocal_Glitch_Loops", background_color=bgcolor, key="SMP_VOCAL_GLITCH_LOOPS")],
160+
161+
], background_color=windowcolor, scrollable=True, vertical_scroll_only=True, sbar_background_color=bgcolor, expand_x=True, expand_y=True)]
162+
layout = [samplepack_folderlist,
163+
[sg.Text('Folder', background_color=bgcolor),
164+
sg.In(size=(25,1), enable_events=True ,key='-SMPFOLDER-', readonly=True),
165+
sg.FolderBrowse(button_color=scolor)],
166+
[sg.Button(button_text="Create", s=10, button_color=bgcolor), sg.Button(button_text="Cancel", s=10, button_color=bgcolor)]
167+
]
168+
popup = sg.Window('Sample Pack Generator', layout, background_color=windowcolor, icon=resource_path("data/dtico.ico"), font=("Calibri", 11), resizable=True, size=(750,1000))
169+
while True:
170+
popevent, v = popup.read()
171+
if popevent in (sg.WIN_CLOSED, 'Exit'):
172+
break
173+
if popevent == '-SMPFOLDER-':
174+
smpfolder = v['-SMPFOLDER-']
175+
smpfolderset = True
176+
print(smpfolder)
177+
if popevent == "Create":
178+
if smpfolderset:
179+
#### DRUMS
180+
os_drumfolder = smpfolder + "/One_Shots/Drums"
181+
lp_drumfolder = smpfolder + "/Loops/Drum_Loops"
182+
if v["SMP_DRUM_LOOPS"]:
183+
make_safedir(lp_drumfolder)
184+
if v["SMP_CYMBAL_LOOPS"]:
185+
make_safedir(lp_drumfolder + "/Cymbal_Loops")
186+
if v["SMP_HAT_LOOPS"]:
187+
make_safedir(lp_drumfolder + "/Hat_Loops")
188+
if v["SMP_KICK_LOOPS"]:
189+
make_safedir(lp_drumfolder + "/Kick_Loops")
190+
if v["SMP_SNARE_LOOPS"]:
191+
make_safedir(lp_drumfolder + "/Snare_Loops")
192+
if v["SMP_DRUM_HITS"]:
193+
make_safedir(os_drumfolder)
194+
if v["SMP_CYMBALS"]:
195+
make_safedir(os_drumfolder + "/Cymbals")
196+
if v["SMP_HATS"]:
197+
make_safedir(os_drumfolder + "/Hats")
198+
if v["SMP_KICKS"]:
199+
make_safedir(os_drumfolder + "/Kicks")
200+
if v["SMP_SNARES"]:
201+
make_safedir(os_drumfolder + "/Snares")
202+
203+
##### PERC
204+
if v["SMP_PERCUSSION_LOOPS"]:
205+
make_safedir(smpfolder + "/Loops/Percussion_Loops")
206+
if v["SMP_PERCUSSION_HITS"]:
207+
make_safedir(smpfolder + "/One_Shots/Percussion")
208+
209+
#### BASS
210+
if v["SMP_BASS_LOOPS"]:
211+
make_safedir(smpfolder + "/Loops/Bass_Loops")
212+
if v["SMP_BASS_SHOTS"]:
213+
make_safedir(smpfolder + "/One_Shots/Bass_Shots")
214+
215+
#### SYNTHS
216+
if v["SMP_SYNTH_LOOPS"]:
217+
make_safedir(smpfolder + "/Loops/Synth_Loops")
218+
if v["SMP_SYNTH_SHOTS"]:
219+
make_safedir(smpfolder + "/One_Shots/Synth_Shots")
220+
221+
222+
### FX
223+
os_fxfolder = smpfolder + "/One_Shots/FX"
224+
lp_fxfolder = smpfolder + "/Loops/FX_Loops"
225+
if v["SMP_FX_LOOPS"]:
226+
make_safedir(lp_fxfolder + "/SFX_Loops")
227+
if v["SMP_FX_SHOTS"]:
228+
make_safedir(os_fxfolder + "/SFX_Shots")
229+
if v["SMP_FX_DOWNLIFTERS"]:
230+
make_safedir(os_fxfolder + "/FX_Downlifters")
231+
if v["SMP_FX_UPLIFTERS"]:
232+
make_safedir(os_fxfolder + "/FX_Uplifters")
233+
if v["SMP_FX_IMPACTS"]:
234+
make_safedir(os_fxfolder + "/FX_Impacts")
235+
if v["SMP_FX_AMBIENCE"]:
236+
make_safedir(os_fxfolder + "/FX_Ambience")
237+
if v["SMP_FX_AMBIENCE_LOOPS"]:
238+
make_safedir(lp_fxfolder + "/FX_Ambience_Loops")
239+
if v["SMP_FX_GLITCH"]:
240+
make_safedir(os_fxfolder + "/FX_Glitch")
241+
if v["SMP_FX_GLITCH_LOOPS"]:
242+
make_safedir(lp_fxfolder + "/FX_Glitch_Loops")
243+
if v["SMP_FX_TEXTURES"]:
244+
make_safedir(lp_fxfolder + "/FX_Textures")
245+
if v["SMP_FX_TEXTURE_LOOPS"]:
246+
make_safedir(lp_fxfolder + "/FX_Texture_Loops")
247+
248+
### VOCAL
249+
os_vocfolder = smpfolder + "/One_Shots/Vocals"
250+
lp_vocfolder = smpfolder + "/Loops/Vocal_Loops"
251+
if v["SMP_VOCAL_LOOPS"]:
252+
make_safedir(lp_vocfolder)
253+
if v["SMP_VOCAL_SHOTS"]:
254+
make_safedir(os_vocfolder + "/Vocal_Shots")
255+
if v["SMP_VOCAL_CHOPS"]:
256+
make_safedir(os_vocfolder + "/Vocal_Chops")
257+
if v["SMP_VOCAL_CHOP_LOOPS"]:
258+
make_safedir(lp_vocfolder + "/Vocal_Chop Loops")
259+
if v["SMP_VOCAL_AMBIENCE"]:
260+
make_safedir(os_vocfolder + "/Vocal_Ambience")
261+
if v["SMP_VOCAL_AMBIENCE_LOOPS"]:
262+
make_safedir(lp_vocfolder + "/Vocal_Ambience_Loops")
263+
if v["SMP_VOCAL_GLITCH"]:
264+
make_safedir(os_vocfolder + "/Vocal_Glitch")
265+
if v["SMP_VOCAL_GLITCH_LOOPS"]:
266+
make_safedir(lp_vocfolder + "/Vocal_Glitch_Loops")
267+
268+
269+
270+
#####
271+
popup.close()
272+
if popevent == "Cancel":
273+
popup.close()
274+
114275
### Modules
115276

116-
def trimsilence(files):
277+
def trim_silence(files):
117278
for file in files:
118279
fname = os.path.basename(file)
119280
sound = AudioSegment.from_file(file)
@@ -124,15 +285,15 @@ def trimsilence(files):
124285
trimmed_sound.export(file, format="wav")
125286
filelog("Trimmed " + fname)
126287

127-
def convertbitrate(files):
288+
def convert_bitrate(files):
128289
bitrate = str(values['-BITRATE-'])
129290
for file in files:
130291
fname = os.path.basename(file)
131292
data, samplerate = soundfile.read(file)
132293
soundfile.write(file, data, samplerate, subtype='PCM_' + bitrate)
133294
filelog("Converting " + fname + " to " + bitrate + " - bit")
134295

135-
def convertsamplerate(files):
296+
def convert_samplerate(files):
136297
samplerate = int(values['-SAMPLERATE-'])
137298
for file in files:
138299
fname = os.path.basename(file)
@@ -172,27 +333,29 @@ def rmempty(files, FLStudio):
172333
filelog("Removing " + fname)
173334
os.remove(file)
174335

175-
def setprefix(files, prefix):
336+
def set_prefix(files, prefix):
176337
curproc = 0
338+
newfiles = []
177339
for file in files:
178340
fname = os.path.basename(file)
179341
d = os.path.dirname(file)
180342
os.rename(file, d + "/" + prefix + fname)
181343
filelog("Renamed to " + prefix + fname)
182344
curproc += 1
183-
if curproc == len(files):
184-
updatefilelist(values["-SHOWPATHS-"], getfiles(d, values['-REC-']))
345+
newfiles.append(d + "/" + prefix + fname)
346+
return newfiles
185347

186-
def setsuffix(files, suffix):
348+
def set_suffix(files, suffix):
187349
curproc = 0
350+
newfiles = []
188351
for file in files:
189352
fname = os.path.basename(file).split(".")[0]
190353
d = os.path.dirname(file)
191354
os.rename(file, d + "/" + fname + suffix + ".wav")
192355
filelog("Renamed to " + fname + suffix + ".wav")
193356
curproc += 1
194-
if curproc == len(files):
195-
updatefilelist(values["-SHOWPATHS-"], getfiles(d, values['-REC-']))
357+
newfiles.append(d + "/" + fname + suffix + ".wav")
358+
return newfiles
196359

197360
def findrepl(files, rplfrom, rplto):
198361
curproc = 0
@@ -204,7 +367,7 @@ def findrepl(files, rplfrom, rplto):
204367
os.rename(file, d + "/" + newfname)
205368
curproc += 1
206369
if curproc == len(files):
207-
updatefilelist(values["-SHOWPATHS-"], getfiles(d, values['-REC-']))
370+
update_filelist(values["-SHOWPATHS-"], get_files(d, values['-REC-']))
208371

209372

210373
### GUI Logic
@@ -223,54 +386,55 @@ def filelog(logmsg):
223386
break
224387
if event == '-FOLDER-':
225388
folder = values['-FOLDER-']
226-
currentfiles = getfiles(folder, values['-REC-'])
227-
updatefilelist(values["-SHOWPATHS-"], currentfiles)
389+
currentfiles = get_files(folder, values['-REC-'])
390+
update_filelist(values["-SHOWPATHS-"], currentfiles)
228391
folderset = True
229392
filelog("Folder Set")
230393
if event == 'Refresh':
231394
if folderset == True:
232-
currentfiles = getfiles(folder, values['-REC-'])
233-
updatefilelist(values["-SHOWPATHS-"], currentfiles)
395+
currentfiles = get_files(folder, values['-REC-'])
396+
update_filelist(values["-SHOWPATHS-"], currentfiles)
234397

235398
if event == '-REC-':
236399
if folderset == True:
237-
currentfiles = getfiles(folder, values['-REC-'])
238-
updatefilelist(values["-SHOWPATHS-"], currentfiles)
400+
currentfiles = get_files(folder, values['-REC-'])
401+
update_filelist(values["-SHOWPATHS-"], currentfiles)
239402

240403
if event == '-SHOWPATHS-':
241404
if folderset == True:
242-
currentfiles = getfiles(folder, values['-REC-'])
243-
updatefilelist(values["-SHOWPATHS-"], currentfiles)
405+
currentfiles = get_files(folder, values['-REC-'])
406+
update_filelist(values["-SHOWPATHS-"], currentfiles)
407+
if event == 'Create Sample Folders':
408+
spawn_popup_samples()
244409

245410

246411
if event == 'Process':
247412
if folderset == True:
248-
currentfiles = getfiles(folder, values['-REC-'])
413+
if values['-LIST-'] != []:
414+
currentfiles = get_full_foldernames(folder, values['-LIST-'])
415+
else:
416+
currentfiles = get_files(folder, values['-REC-'])
249417
try:
250418
if values['-TRIM-'] == True:
251-
trimsilence(currentfiles)
419+
trim_silence(currentfiles)
252420
if values['-NORM-'] == True:
253421
normalize(currentfiles)
254422
if values['-BIT-'] == True:
255-
convertbitrate(currentfiles)
423+
convert_bitrate(currentfiles)
256424
if values['-SMPRATE-'] == True:
257-
convertsamplerate(currentfiles)
425+
convert_samplerate(currentfiles)
258426
if values['-PREFIXBOOL-'] == True:
259-
setprefix(currentfiles, values["-PREFIXSTR-"])
260-
currentfiles = getfiles(folder, values['-REC-'])
427+
currentfiles = set_prefix(currentfiles, values["-PREFIXSTR-"])
261428
if values['-SUFFIXBOOL-'] == True:
262-
setsuffix(currentfiles, values["-SUFFIXSTR-"])
263-
currentfiles = getfiles(folder, values['-REC-'])
429+
currentfiles = set_suffix(currentfiles, values["-SUFFIXSTR-"])
264430
if values['-REPL-'] == True:
265-
try:
266-
findrepl(currentfiles, values["-RPLFROM-"], values["-RPLTO-"])
267-
except FileNotFoundError:
268-
findrepl(getfiles(folder, values['-REC-']), values["-RPLFROM-"], values["-RPLTO-"])
431+
findrepl(currentfiles, values["-RPLFROM-"], values["-RPLTO-"])
269432

270433

271434
##### Destructive, should be last!
272435
if values['-EMPTY-'] == True:
273436
rmempty(currentfiles, values['-EMPTYFL-'])
437+
update_filelist(values["-SHOWPATHS-"], get_files(folder, values['-REC-']))
274438

275439

276440
except NameError as error:

0 commit comments

Comments
 (0)