import gradio as gr from pydub import AudioSegment import os # --- DEBUG: LIST ALL FILES --- print("\nšŸ” DIAGNOSTIC: Here are the exact file names in your folder:") files = os.listdir(".") for f in files: if f.endswith((".mp3", ".wav")): print(f" šŸŽµ {f}") print("------------------------------------------------\n") # --- 1. SETUP & FILE CHECK --- print("Attempting to load stems...") def load_smart_stem(name): # Check for MP3 if os.path.exists(f"{name}.mp3"): print(f"āœ… Found {name}.mp3") return AudioSegment.from_file(f"{name}.mp3") # Check for WAV elif os.path.exists(f"{name}.wav"): print(f"āœ… Found {name}.wav") return AudioSegment.from_file(f"{name}.wav") # If neither exists else: print(f"āŒ MISSING: {name}.mp3 OR {name}.wav") return AudioSegment.silent(duration=1000) # Load the files vocals = load_smart_stem("vocals") drums = load_smart_stem("drums") bass = load_smart_stem("bass") other = load_smart_stem("other") # --- 2. THE MIXING FUNCTION --- def remix_track(voc_vol, drum_vol, bass_vol, other_vol, speed): v = vocals + voc_vol d = drums + drum_vol b = bass + bass_vol o = other + other_vol mix = v.overlay(d).overlay(b).overlay(o) if speed != 1.0: new_sample_rate = int(mix.frame_rate * speed) mix = mix._spawn(mix.raw_data, overrides={'frame_rate': new_sample_rate}) mix = mix.set_frame_rate(44100) output_path = "remix.mp3" mix.export(output_path, format="mp3") return output_path # --- 3. THE INTERFACE --- with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown("# 🚪 OPEN DOORS | REMIX STATION") with gr.Row(): v_slide = gr.Slider(-60, 10, value=0, label="Vocals (dB)") d_slide = gr.Slider(-60, 10, value=0, label="Drums (dB)") b_slide = gr.Slider(-60, 10, value=0, label="Bass (dB)") o_slide = gr.Slider(-60, 10, value=0, label="Melody (dB)") with gr.Row(): speed_slide = gr.Slider(0.5, 1.5, value=1.0, label="Speed & Pitch") btn = gr.Button("Generate Remix", variant="primary") audio_out = gr.Audio(label="Your Remix") btn.click(fn=remix_track, inputs=[v_slide, d_slide, b_slide, o_slide, speed_slide], outputs=audio_out) demo.launch()