Inspiration
Markets are usually a wall of numbers and charts. But our ears are amazing at noticing change — you hear a wrong note instantly, even when you're not looking. The theme Composition made me wonder: what if the world's money could compose music, and you could hear the 2008 crash, the Brexit vote or the COVID panic instead of reading about them?
What it does
- Every currency is an instrument. By default the US dollar is the violin, the pound the cello, the yen the flute, the Swiss franc the harp, the euro the piano and the Canadian dollar the double bass. You can re-seat the orchestra: any instrument, any currency, add extra musicians, mute or remove them.
- The melody follows the money. When a currency rises its instrument plays higher; when it sits far from its normal level or swings wildly, it plays a little louder; a sudden shock gives one accented sforzando note.
- An AI conductor (Gemini) sets the mood. Every phrase, Gemini looks at the whole world and chooses the character of the music — Pastorale, Cantabile, Misterioso, Agitato or Grandioso — plus the key, tempo, dynamics and chord progression, and explains why in one sentence. A calm world sounds gentle and major; a troubled world turns faster, minor and grander.
- A narrator (ElevenLabs) reads the conductor's thoughts aloud over the music.
- Every note is explainable. The Score panel shows, for each instrument, the note it just played and the reason ("USD is near its 3-month high → plays a chord note of V").
- Real, live data. It downloads the European Central Bank's daily exchange rates automatically (1999 → today, ~30 currencies) — and you can view the world from any currency's point of view (e.g. hear Brexit night from the pound's side).
- Save & replay. Mark a start and end, save the performance (seating, view, Gemini's comments) to MongoDB Atlas, and replay it later from the Gallery.
- Controls: Space = play/pause, ←/→ = jump 3 months (Shift = 1 year), draggable timeline, "Jump to" famous moments.
How I built it
- Frontend: HTML + JavaScript, Tone.js for the orchestra (real instrument samples), p5.js for the line graph, world-tension chart and timeline.
- Music engine: a small classical "composer" — one chord per bar, 4-bar phrases ending in cadences, voice-leading (melodies move by step, strong beats land on chord notes), Alberti bass on the piano, timpani tuned to tonic and dominant.
- Data: ECB reference rates, converted into each currency's strength against a basket of 7 major currencies (so the euro can move too). "Stress" = distance from its 1-year normal + recent volatility; "world tension" = the average stress of all currencies.
- Backend: Python + Flask (
/api/ecb,/api/analyse,/api/narrate,/api/performances). - Built with AI agents: I used Claude (planning and code) and Claude Code in VS Code, with Entire recording the agent sessions as checkpoints linked to commits.
How I used each sponsor technology
- Google Gemini API — the AI conductor: every phrase it receives a snapshot of the orchestra's currencies and returns JSON with mood, character, key, tempo, dynamics, chord progression and a one-sentence explanation. It "reads ahead" in the score so its plan is ready before each phrase starts; falls back across several Flash/Flash-Lite models when one is busy.
- ElevenLabs — text-to-speech narrator that reads Gemini's commentary aloud during the performance (clips cached so the same sentence is never generated twice).
- MongoDB Atlas — stores saved performances (title, time range, seating, point of view, Gemini's comments) and powers the Gallery/Replay. If the venue Wi-Fi blocks MongoDB, saves queue on the laptop and upload automatically when a connection is available.
- Entire — every Claude Code session is captured with Entire and linked to commits via
Entire-Checkpointtrailers (Sessions), so the history of how the project was built with an AI agent is browsable on entire.io.
How it fits the sponsor challenges
- Waterstons — connect things that usually aren't: money and music; finance data and an orchestra.
- Marshall Wace — New Worlds: a new way to experience data — listening to the world economy.
- SGX FX — Protect your assets / Get creative: an audio early-warning system — instruments jolt and the music darkens as market stress builds, so traders can hear risk while their eyes are busy; plus a creative take on market data.
- Accenture — redesign a frustrating process with AI: watching dozens of charts all day → listening to the market, with an AI that explains what changed and why.
Challenges I ran into
- Making it sound like music, not noise. My first version let every instrument pick notes freely — it sounded weird. I rebuilt it as a classical engine with chords, cadences and voice-leading.
- Making every note explainable, so the music isn't a black box — that's why the Score panel exists.
- The browser froze after a while: I was changing the tempo on every single note. Fix: change tempo/volume only once per bar.
- Gemini overload at night: the newest model was returning "high demand" errors and timeouts. I added fallback models, shorter timeouts, and made the conductor read ahead so answers arrive in time.
- API keys changed format (Gemini's new
AQ.keys) and an ElevenLabs key that wasn't accepted — debugged with small test scripts. - The venue Wi-Fi blocks MongoDB's port — solved with an offline queue that uploads automatically later.
Accomplishments That I'm proud of
- Built solo, overnight, from a business-management background.
- You can genuinely hear 2008, Brexit and COVID — and the AI explains them.
- Every single note has a reason you can read.
What I learned
- Music theory basics (cadences, voice-leading, Alberti bass) and how to turn data into sound (sonification).
- Working with live APIs under real-world problems: rate limits, timeouts, blocked networks, changing key formats.
- How to build with an AI coding agent responsibly — keeping a project file (CLAUDE.md) as shared memory and recording sessions with Entire.
What's next for Curren-Sing
- Live intraday FX feeds (true real-time listening).
- More instruments and user-composed orchestras shared through the Gallery.
- Accessibility mode for visually-impaired analysts.