david174 commited on
Commit
fdaf97e
·
verified ·
1 Parent(s): 6dd9e14

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -30
app.py CHANGED
@@ -2,44 +2,51 @@ import gradio as gr
2
  import librosa
3
  import numpy as np
4
  from pydub import AudioSegment
5
- import os
6
 
7
- def ghost_ultimate_v7(tu_track, track_ref, intensidad, duda):
8
  if tu_track is None:
9
- return None, "Sube tu audio.", "Esperando...", "https://images.unsplash.com/photo-1614613535308-eb5fbd3d2c17?q=80&w=500", "Sube audio."
10
-
11
  try:
12
- # 1. ANALISIS
13
- y, sr = librosa.load(tu_track, duration=30)
14
  chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
15
- key_idx = np.argmax(np.mean(chroma, axis=1))
16
  notas = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
17
- key_det = notas[key_idx]
18
-
19
  rms_tu = np.mean(librosa.feature.rms(y=y))
20
- estilo = "Dark Tech" if rms_tu > 0.12 else "Liquid"
21
-
22
  # 2. COMPARADOR
23
- comp_txt = "No hay referencia."
24
  if track_ref is not None:
25
- y_ref, _ = librosa.load(track_ref, duration=30)
26
- rms_ref = np.mean(librosa.feature.rms(y=y_ref))
27
- diff = 20 * np.log10(rms_ref / rms_tu)
28
- comp_txt = "Diferencia de volumen: " + str(round(diff, 1)) + " dB"
 
 
 
 
 
 
 
 
 
29
 
30
- # 3. MASTERING
31
- sound = AudioSegment.from_file(tu_track)
32
- gain = (intensidad / 10) - 5
33
- mastered = sound.apply_gain(gain)
34
- out = "master_v7.wav"
35
- mastered.export(out, format="wav")
 
 
 
 
 
 
 
 
 
36
 
37
- # 4. INFORME (Usando suma de textos para evitar errores de llaves {})
38
- info = "TONALIDAD: " + key_det + "\n"
39
- info += "ESTILO: " + estilo + "\n\n"
40
- info += "COMPARATIVA: " + comp_txt + "\n\n"
41
- info += "CONSEJO: En " + key_det + " el sub debe ser afinado."
42
-
43
- prompt = "Cyberpunk DnB Art, Neon, " + estilo + " vibes, " + key_det + " mood."
44
 
45
- return out, info, key_det + " | " + estilo
 
2
  import librosa
3
  import numpy as np
4
  from pydub import AudioSegment
 
5
 
6
+ def ghost_fix(tu_track, track_ref, intensidad):
7
  if tu_track is None:
8
+ return None, "Sube un audio.", "...", "https://images.unsplash.com/photo-1614613535308-eb5fbd3d2c17?q=80&w=500", "..."
 
9
  try:
10
+ # 1. ANALISIS RAPIDO
11
+ y, sr = librosa.load(tu_track, duration=20)
12
  chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
 
13
  notas = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
14
+ key_det = notas[np.argmax(np.mean(chroma, axis=1))]
 
15
  rms_tu = np.mean(librosa.feature.rms(y=y))
16
+
 
17
  # 2. COMPARADOR
18
+ info = "TONALIDAD: " + key_det + "\n"
19
  if track_ref is not None:
20
+ y_r, _ = librosa.load(track_ref, duration=20)
21
+ diff = 20 * np.log10(np.mean(librosa.feature.rms(y=y_r)) / rms_tu)
22
+ info += "DIF. VOLUMEN: " + str(round(diff, 1)) + " dB\n"
23
+
24
+ # 3. MASTER
25
+ audio = AudioSegment.from_file(tu_track)
26
+ audio = audio.apply_gain((intensidad / 10) - 5)
27
+ audio.export("final.wav", format="wav")
28
+
29
+ prompt = "Cyberpunk Art, Neon, DnB style, Key: " + key_det
30
+ return "final.wav", info + "\nCONSEJO: Ajusta tu Kick a " + key_det, key_det, "https://images.unsplash.com/photo-1550684848-fac1c5b4e853?q=80&w=500", prompt
31
+ except Exception as e:
32
+ return None, "Error: " + str(e), "!", None, "..."
33
 
34
+ with gr.Blocks(theme=gr.themes.Monochrome(primary_hue="orange")) as demo:
35
+ gr.Markdown("# 💀 DNB GHOST v7.2")
36
+ with gr.Row():
37
+ with gr.Column():
38
+ in_t = gr.Audio(label="TU TRACK", type="filepath")
39
+ in_r = gr.Audio(label="REFERENCIA", type="filepath")
40
+ in_s = gr.Slider(0, 100, label="MASTER", value=80)
41
+ btn = gr.Button("🚀 PROCESAR", variant="primary")
42
+ with gr.Column():
43
+ out_a = gr.Audio(label="MASTER")
44
+ out_i = gr.Textbox(label="INFORME")
45
+ out_k = gr.Label(label="KEY")
46
+ with gr.Column():
47
+ out_m = gr.Image(label="VIBE")
48
+ out_p = gr.Textbox(label="PROMPT ARTE")
49
 
50
+ btn.click(ghost_fix, [in_t, in_r, in_s], [out_a, out_i, out_k, out_m, out_p])
 
 
 
 
 
 
51
 
52
+ demo.launch()