DEV Community

Cover image for My GitHub profile sings now, and you can add a line to the song
Nishal K
Nishal K

Posted on

My GitHub profile sings now, and you can add a line to the song

My GitHub profile has two songs on it now. One is made from my own contribution graph. The other is made by whoever stops by, and right now it's one verse long. I'd like it to be longer.

Song one: my commits as a beat

Every night a GitHub Action reads my contribution calendar and turns the last 12 months into a 90-second track. Each bar is one week of the calendar, and the lyrics come from the same numbers, so when my stats change the song changes too.

The player shows the beat grid as it plays. You can also open the remix panel, mute parts, change the tempo and share your mix as a link. There's a 45-second year trailer cut on the beat of the same song.

Contribution song card

Song two: the visitor song

This is the one I posted about on X. You open an issue from a short form, pick a note and an instrument (everything is in A minor, so any note fits), and if you want, write up to two lyric lines of 60 characters each. That night a script adds your note to the track, puts your lines into the lyrics and credits them to your @username. The song gets a little longer every time someone joins.

You get a comment on your issue with a link to the exact second your part plays. You also get your own poster in four sizes (wide, feed, square and story), each with a QR code that starts the song at your line.

A visitor poster

The lyrics play as a lyric video in the browser on the video page, and the same video is rendered to an MP4 and attached to a release.

Who sings it

The vocals come from ACE-Step 1.5 by ACE Studio and StepFun (Apache-2.0). The workflow tries acemusic.ai first. If that fails, it runs ACE-Step on the GitHub Actions runner's CPU. If both fail, the last good take stays up, so the page never ends up with a broken song.

AI singers mumble, so every take gets checked. faster-whisper transcribes the vocals and compares them to the lyrics, and a take with missing or repeated lines gets thrown out. Then Demucs separates the vocals so I can mix them louder than the music and you can make out the words. The lyrics page says which voice sang that night's take.

Today the backup CPU voice did it, because acemusic.ai was overloaded. It took a while, but it worked, and that's why the fallback is there.

The player

The player has four looks you can switch between: Vinyl, Poster, Editorial and Sketch. The doodles around it are from Open Doodles, which are CC0.

What it costs

Nothing. It all runs on free GitHub Actions and GitHub Pages. The MP3s, MP4s and posters go into releases instead of the git history, so the repo stays small even though it renders audio and video every night.

Add your line

The song is short because hardly anyone has added to it yet. Pick a note, write a line if you feel like it, and your name goes in the credits tonight:

👉 Add a note to the visitor song

One note per person per week. Keep it kind. You can listen to the current take first, and the code is all in nishal21/nishal21.

Top comments (0)