| title | Turntable Time Machine | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| emoji | 📻 | |||||||||||||
| colorFrom | yellow | |||||||||||||
| colorTo | purple | |||||||||||||
| sdk | gradio | |||||||||||||
| sdk_version | 5.49.1 | |||||||||||||
| python_version | 3.10.13 | |||||||||||||
| app_file | app.py | |||||||||||||
| pinned | false | |||||||||||||
| license | mit | |||||||||||||
| models |
|
|||||||||||||
| tags |
|
Pick two eras 🕰️. Summon a fictional DJ 🎙️. Hear a tiny radio broadcast from a timeline that never happened 📻✨.
Turntable Time Machine is a whimsical Gradio app built for the Hugging Face x Gradio Build Small Hackathon. It lets users choose a source era 🕰️, remix era 🔁, fictional DJ host 🎙️, language 🌍, mood 🌈, texture 📼, and vocal mode 🎵, then generates a short original AI radio postcard 📻.
The twist: this is not a famous-song remix machine. The app uses broad musical-era vocabularies and safety constraints to make new little audio artifacts: 1960s soul through a 1990s house lens, 1980s synth-pop polished into 2000s filtered disco house, or a 2020s lo-fi signal drifting backward through old radio static.
This submission targets the Thousand Token Wood track: playful, compact, AI-native, and built around small/open model targets. ACE-Step, MMS TTS, and Tiny Aya are used as optional model hooks, while deterministic templates and fallback audio keep the app demonstrable when model access or GPU runtime is limited.
- 🤗 Live Space: https://huggingface.co/spaces/build-small-hackathon/turntable-time-machine
- 💻 GitHub repo: https://github.com/jd-coderepos/turntable-time-machine
- 🎬 Demo video: https://www.youtube.com/watch?v=EKCwTK88pUE
- 📣Social Post on LinkedIn: Trying to spread the word about the app 🤗
- 📝Field notes: Bending Time with a Virtual DJ -- Field Notes from the Build Small AI Hackathon
A concise demo flow:
- 🤗 Open the Turntable Time Machine Space.
- Set Source era to 1960s and Source genre to Folk pop.
- Set Remix era to 2000s and Remix genre to 2000s indie rock.
- Choose The Warehouse Announcer as the fictional DJ persona.
- Choose French as the broadcast language.
- Choose Original micro-lyrics and keep Night drive as the lyric theme.
- Set Music prompt language to English + broadcast language to show the app's bilingual prompt path.
- Keep nostalgic and warm, choose Clean digital master, and use the 10 second duration.
- Click Bend the Timeline.
- Play the Final broadcast, then compare it with Music only.
- Show the Fictional DJ intro text card and the Spoken DJ intro audio when MMS TTS is available.
- Show the Generated micro-lyrics card and the Mixtape Card with the route, model status, BPM, seed, texture, and safety note.
🎬 Recommended one-video case: 1960s Folk pop -> 2000s indie rock with The Warehouse Announcer, French, Original micro-lyrics, and English + broadcast language. It shows the app's full loop: era routing, fictional host text, multilingual prompt routing, generated micro-lyrics, safety-aware prompt, texture processing, and final audio.
- Custom illustrated Gradio interface
- Era-to-era routing across the 1960s, 1970s, 1980s, 1990s, 2000s, 2010s, and 2020s
- Curated genre vocabulary for soul, disco, funk, synth-pop, house, trip-hop, UK garage, hyperpop, lo-fi, amapiano-inspired grooves, and AI-era electronic
- Six fictional DJ personas with original intro templates
- English, German, French, and Spanish broadcast text support
- Three vocal modes: Instrumental only, Wordless vocal texture, and Original micro-lyrics
- Nostalgia textures: vinyl crackle, cassette warmth, FM radio, mono radio, club PA, VHS glow, early MP3 compression, and clean digital master
- Surprise Me route generation
- Mixtape card with route, language, texture, BPM, seed, model status, and safety note
- Lazy model hooks and fallback generation for deployment reliability
Turntable Time Machine is not just a prompt wrapper around an audio model. Before generation, it runs a lightweight programmed Timeline Engine:
User selections
→ source era / genre lookup
→ remix era / genre lookup
→ fictional DJ persona selection
→ language and prompt-mode routing
→ BPM selection from genre ranges
→ optional Tiny Aya micro-lyrics
→ safety-aware music prompt
→ optional MMS TTS DJ narration
→ ACE-Step music hook or fallback synth audio
→ nostalgia texture processing
→ final broadcast and mixtape card
🛠️ The design explores a simple idea: small models work better when the app gives them a playful structure. Curated taxonomies, deterministic routing, and clear guardrails turn a broad generation task into a tiny musical instrument.
| Component | Model | Parameters | Used for |
|---|---|---|---|
| Music generation target | ACE-Step/Ace-Step1.5 | under 32B target stack | Original short music clips |
| Spoken DJ intro target | facebook/mms-tts-eng, deu, fra, spa variants |
36.3M each for English model card | Optional fictional DJ narration in the selected broadcast language |
| Text / micro-lyrics target | CohereLabs/tiny-aya-global | small multilingual model | Optional two-line original lyrics |
| Template and synth fallback | none | 0 | Keeps the app usable in restricted runtimes |
ACE-Step and MMS TTS are lazy optional hooks. If model packages, weights, or hardware are unavailable, the app falls back to playable synthetic demo audio and text-only DJ intros. Tiny Aya falls back to deterministic micro-lyrics when access is restricted.
The app's character layer lives in data/:
music_eras.jsondefines eras, genres, safe prompt styles, BPM ranges, instruments, sonic traits, and avoid notes.dj_personas.jsondefines six fictional hosts, including The Midnight Radio Curator and The Neon Signal Host.audio_textures.jsondefines record, cassette, radio, club, VHS, MP3, and clean-master post-processing flavors.languages.jsondefines English, German, French, and Spanish.lyric_themes.jsondefines compact lyric themes such as Future city, Night drive, Radio signal, and Time travel.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python app.pyRun tests:
python -m unittest discover -s testsFor mocked model paths in tests only:
set TTM_TEST_MODEL_CALLS=1
python -m unittest discover -s testsRecommended Space settings:
SDK: Gradio
Python: 3.10.13
App file: app.py
Hardware: ZeroGPU or compatible GPU runtime
Useful environment variables:
TEXT_MODEL_ID=CohereLabs/tiny-aya-global
HF_TOKEN=hf_your_token_here
HUGGING_FACE_HUB_TOKEN=hf_your_token_here
If model access fails, add an HF_TOKEN secret with read access and make sure the Space owner has accepted any required model terms.
Turntable Time Machine is designed for original audio from broad musical-era descriptors. Its prompt builder avoids requests to imitate specific songs, artists, singers, producers, DJs, hooks, samples, lyrics, melodies, or arrangements.
The lyric generator asks for only two short original lines and sanitizes generated text before use. The DJ personas are fictional hosts, not imitations of real broadcasters or performers.
This project was built using OpenAI Codex as a coding agent. Codex supported the Gradio app structure, timeline orchestration logic, fallback audio behavior, safety checks, tests, and submission-readiness polish.
Thank you to the Gradio team and the Build Small Hackathon partners for making room for tiny, playful, local/open-weight AI experiments. 🎛️📻✨