david174 commited on
Commit
085ea2e
·
verified ·
1 Parent(s): 3e3c68c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -29
app.py CHANGED
@@ -4,55 +4,42 @@ import numpy as np
4
  from pydub import AudioSegment
5
  import os
6
 
7
- def ultimate_ghost_v7(tu_track, track_ref, intensidad, duda):
8
  if tu_track is None:
9
- return None, "⚠️ Sube tu track para empezar.", "Esperando...", "https://images.unsplash.com/photo-1614613535308-eb5fbd3d2c17?q=80&w=500", "Sube un audio para generar el prompt."
10
 
11
  try:
12
- # 1. ANÁLISIS DE TU TRACK (KEY Y ENERGÍA)
13
  y, sr = librosa.load(tu_track, duration=30)
14
 
15
- # Detectar la nota musical (Key)
16
  chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
17
  key_idx = np.argmax(np.mean(chroma, axis=1))
18
  notas = ["Do (C)", "Do# (C#)", "Re (D)", "Re# (D#)", "Mi (E)", "Fa (F)",
19
  "Fa# (F#)", "Sol (G)", "Sol# (G#)", "La (A)", "La# (A#)", "Si (B)"]
20
  key_detectada = notas[key_idx]
21
 
22
- # Medidor de Energía RMS
23
  rms_tu = np.mean(librosa.feature.rms(y=y))
24
-
25
- # 2. COMPARADOR DE REFERENCIA
26
- comparativa = "No has subido track de referencia para comparar."
 
27
  if track_ref is not None:
28
  y_ref, _ = librosa.load(track_ref, duration=30)
29
  rms_ref = np.mean(librosa.feature.rms(y=y_ref))
30
  dif_db = 20 * np.log10(rms_ref / rms_tu)
31
- if dif_db > 1:
32
- comparativa = f"⚠️ Tu track suena {dif_db:.1f}dB más flojo que la referencia. ¡Dale más caña al master!"
33
- else:
34
- comparativa = "🔥 ¡Potencia brutal! Estás al nivel de la referencia de club."
35
-
36
- # 3. GENERADOR DE ARTWORK (PROMPT)
37
- estilo = "Dark Techstep" if rms_tu > 0.12 else "Deep Liquid"
38
- prompt_arte = f"Cyberpunk album cover, {estilo} aesthetic, neon orange and slate grey, abstract geometric soundwaves, {key_detectada} mood, hyper-detailed, 8k resolution."
39
 
40
- # 4. MASTERING
41
  sound = AudioSegment.from_file(tu_track)
42
  ganancia = (intensidad / 10) - 5
43
  mastered = sound.apply_gain(ganancia)
44
-
45
- out_path = "master_ultimate_v7.wav"
46
  mastered.export(out_path, format="wav")
47
 
48
- # INFORME FINAL
49
- informe = f"""📊 INFORME GHOST STATION v7.0
50
- ---------------------------------------
51
- 🎵 TONALIDAD: {key_detectada}
52
- ⚡ COMPARATIVA: {comparativa}
53
-
54
- 🎨 PROMPT PARA TU PORTADA (Cópialo en Midjourney/DALL-E):
55
- "{prompt_arte}"
56
 
57
- 💬 CONSULTORÍA IA:
58
- "{d
 
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 track.", "Esperando...", "https://images.unsplash.com/photo-1614613535308-eb5fbd3d2c17?q=80&w=500", "Sube un audio."
10
 
11
  try:
12
+ # 1. ANÁLISIS DE AUDIO
13
  y, sr = librosa.load(tu_track, duration=30)
14
 
15
+ # Detección de Nota (Key)
16
  chroma = librosa.feature.chroma_cqt(y=y, sr=sr)
17
  key_idx = np.argmax(np.mean(chroma, axis=1))
18
  notas = ["Do (C)", "Do# (C#)", "Re (D)", "Re# (D#)", "Mi (E)", "Fa (F)",
19
  "Fa# (F#)", "Sol (G)", "Sol# (G#)", "La (A)", "La# (A#)", "Si (B)"]
20
  key_detectada = notas[key_idx]
21
 
22
+ # Energía RMS
23
  rms_tu = np.mean(librosa.feature.rms(y=y))
24
+ estilo = "Dark/Tech" if rms_tu > 0.12 else "Liquid/Deep"
25
+
26
+ # 2. COMPARADOR
27
+ comparativa = "No hay referencia."
28
  if track_ref is not None:
29
  y_ref, _ = librosa.load(track_ref, duration=30)
30
  rms_ref = np.mean(librosa.feature.rms(y=y_ref))
31
  dif_db = 20 * np.log10(rms_ref / rms_tu)
32
+ comparativa = f"Diferencia: {dif_db:.1f}dB respecto a la referencia."
 
 
 
 
 
 
 
33
 
34
+ # 3. MASTERING
35
  sound = AudioSegment.from_file(tu_track)
36
  ganancia = (intensidad / 10) - 5
37
  mastered = sound.apply_gain(ganancia)
38
+ out_path = "master_v7_final.wav"
 
39
  mastered.export(out_path, format="wav")
40
 
41
+ # 4. GENERADOR DE PROMPT
42
+ p_arte = f"Cyberpunk DnB Art, Neon Orange, {estilo} aesthetic, {key_detectada} mood, 8k."
 
 
 
 
 
 
43
 
44
+ # Informe formateado con cuidado para evitar errores de llaves
45
+ info_final = f"TONALIDAD: {key_detectada}\nESTILO: {estilo}\n\nCOMPARATIVA: {comparativa}\n\nCONSEJO: En {key_detectada}, el sub debe ser muy preciso