Multimodal AI Soundscape & Music Discovery Engine
Translating visual atmospheres, ambient photography, and natural-language prompts into curated acoustic soundscapes with instant zero-cost 30-second audio streaming.
Nuance is an end-to-end, cross-platform intelligent soundscape system engineered with Flutter Web/Mobile, a Node.js/Express microservice backend, and Google Gemini AI.
Unlike conventional recommendation systems relying on static collaborative filtering or rigid genre taxonomies, Nuance bridges computer vision and acoustic semantics. Users can type nuanced abstract thoughts (e.g., "cyberpunk rain on an empty Shibuya crosswalk at 3 AM") or snap a live photo with Vibe Cam; Gemini extracts the emotional valence, lighting dynamics, and atmospheric palette to synthesize a bespoke musical narrative with verified preview audio.
flowchart TD
subgraph Client ["Client Layer (Flutter Web / iOS / Android)"]
UI["Flutter UI (Material 3 + Glassmorphism)"]
VibeCam["📸 Vibe Cam (Image Capture & Palette)"]
AudioEng["🎵 Audioplayer Engine (30s Streamer)"]
CassetteViz["📼 Retro Cassette / Vinyl Interactive Canvas"]
StateMgr["State Management (Riverpod + GetX)"]
end
subgraph CloudAPI ["Backend Microservices (Node.js / Express / Vercel)"]
Gateway["API Gateway / Router (/api/recommendations)"]
GeminiService["Google Gemini 1.5 Flash Vision & LLM"]
iTunesGateway["iTunes Search API (Zero-Cost Audio Previews)"]
AuthModule["OAuth 2.0 & Session Store (Guest + Account)"]
end
subgraph DataStorage ["Persistence (Neon Serverless PostgreSQL)"]
PrismaORM["Prisma ORM"]
DB[(PostgreSQL Database)]
end
UI --> StateMgr
VibeCam -->|Base64 Image Payload| Gateway
UI -->|Natural Language Prompt| Gateway
Gateway --> GeminiService
GeminiService -->|Curated Track Metadata & Context| iTunesGateway
iTunesGateway -->|Preview URLs & 600x600 Art| Gateway
Gateway --> StateMgr
StateMgr --> AudioEng
StateMgr --> CassetteViz
Gateway --> AuthModule
AuthModule --> PrismaORM
PrismaORM --> DB
- Computer Vision Extraction: Captures real-world environment snapshots (mobile camera or web file picker) and converts them into high-density base64 payloads.
- Multimodal Prompting: Streams visual tokens to Gemini 1.5 Flash to analyze ambient lighting, color temperature, architectural textures, and emotional cadence.
- Dynamic Palette Glow: Leverages Flutter's
PaletteGeneratorto dynamically sample dominant and muted accents, casting real-time glassmorphic ambient backdrops across the player.
- Replaces keyword matching with zero-shot semantic understanding.
- Constructs multi-layered prompt instructions that force structured JSON schema outputs containing artist, title, emotional rationale, and acoustic properties (tempo, timbre, key).
- Resolves high-fidelity 30-second AAC audio preview streams and 600x600 album artwork via programmatic integration with the iTunes Search API.
- Bypasses premium streaming paywalls to provide frictionless, immediate playback.
- Employs an intelligent web proxy layer to eliminate browser CORS obstacles on Flutter Web.
- Custom interactive Flutter canvas rendering spinning cassette tape spools and rotating vinyl sleeves during audio playback.
- Dynamic Nuance Wavecode: Visual frequency bar patterns calculated algorithmically from track metadata.
- One-tap visual mixtape card generation and sharing.
- Instant Guest Exploration: Zero signup requirement; stores transient history and playlists in reactive local state without unhandled 401 exceptions.
- Google OAuth 2.0 Cloud Sync: Authenticated users enjoy persistent cloud history backed by PostgreSQL and Prisma ORM.
| Layer | Technologies |
|---|---|
| Frontend | Dart, Flutter (Web, iOS, Android), Riverpod, GetX, audioplayers, palette_generator |
| Backend | Node.js, Express, TypeScript, Vercel Serverless Functions |
| AI / Machine Learning | Google Gemini 1.5 Flash API (Multimodal Vision & Structured JSON Generation) |
| Database & ORM | PostgreSQL (Neon Serverless), Prisma ORM |
| Media & Audio | Apple iTunes Search API (AAC 256kbps previews, high-res artwork) |
| DevOps & Hosting | Vercel (Web & Backend), GitHub Actions CI/CD |
- Flutter SDK (v3.22.0 or higher)
- Node.js (v20.x or higher)
- Google Gemini API Key (Google AI Studio)
# Clone the repository
git clone https://github.com/TuneDropLab/nuance.git
cd nuance
# Install Flutter dependencies
flutter pub get
# Run on macOS / Chrome (Web)
flutter run -d chrome
# Run on iOS Simulator
flutter run -d iPhonecd ../nuance-backend
npm install
# Configure environment variables (.env)
# GEMINI_API_KEY=your_gemini_api_key
# DATABASE_URL=your_postgres_connection_string
# Run database migrations
npx prisma migrate dev
# Start development server
npm run dev- Prompt-to-Audio Latency: Sub-1.8s median response time for full 5-track playlist synthesis, metadata resolution, and streaming buffer initialization.
- Web Bundle Optimization: Flutter Web CanvasKit compilation optimized for 60fps animations and sub-1s initial paint via progressive asset caching.
- Reliability: 99.4% preview resolution success rate via multi-layered fallback queries against iTunes Search API.
Edem Kojo Agbakpe
Software Engineer | Transnational Coventry University Computing Science (2:1)
- 🌐 Portfolio: edemkojo.com / edemkojo-com.vercel.app
- 🐙 GitHub: @edem-cyber
- 💼 LinkedIn: linkedin.com/in/edem-agbakpe
- 📧 Contact:
edem.agbakpe@outlook.com
This project is open-source and licensed under the MIT License.