Inspiration
Live electronic performance tools are powerful, but they still require constant manual control. We wanted to build an AI co-performer that can listen, reason, and act across both audio and visuals in real time.
What it does
Bio:gram is an autonomous DJ/VJ system. It generates and mixes music loops, plans transitions, controls EQ/FX automatically, and drives synchronized visuals. During a set, it can adapt prompts and texture direction to maintain flow with minimal human intervention.
How we built it
We built Bio:gram with a web-based real-time engine using TypeScript, Web Audio API, AudioWorklet DSP, and Three.js visual rendering.
For AI orchestration, we integrated Gemini APIs:
- Gemini 3 Pro for mix planning only (high-quality reasoning, cost-aware routing)
- Lightweight Gemini models for supporting generation/control tasks
- AI prompt control for music mood/texture parameters
- Auto Texture workflow to generate seamless visual texture prompts and apply results directly to Deck A/B visuals
We also used Gemini Antigravity workflow for rapid iteration in AI-assisted development.
Challenges we ran into
- Keeping latency low while applying AI-driven automation in a live context
- Preventing unstable or unsafe transitions in long-running sessions
- Synchronizing audio state, visual state, and UI feedback (moving sliders/panels) in a deterministic way
- Balancing model quality and API cost
What we learned
- In AI products, evaluation-driven iteration is critical: “looks good” is not enough without repeatable behavior checks.
- Clear separation of responsibilities (planning vs execution) improves both reliability and cost.
- Real-time creative systems need strong fallback logic, not just model calls.
What's next
- Extend long-horizon autonomous set control (Marathon mode)
- Add audience-reactive control signals
- Improve visual generation quality and style consistency
- Publish reusable eval scenarios for AI live-performance agents
Built With
- aistudio
- antigravity
- audioapi
- audioworklet
- three.js
- typescript
Log in or sign up for Devpost to join the conversation.