Infinite Radio is a real-time AI DJ that generates and adapts music genres based on your digital environment. By analyzing your current activity, the system shifts its soundscape to match your workflow. This setup integrates Google Magenta's music models with an intelligent context engine, offering two distinct DJ modes: one that triggers style changes based on your active desktop processes, and another that utilizes vision-language models (like InternVL3) to scan your screen and select music that fits your visual context.
To run the music generation model locally, your system must meet the following requirements:
Start the Music Container
Pull and launch the Docker image with the following command:
docker run --gpus all --network host lauriewired/musicbeats:latest
Once the container is active, navigate to http://127.0.0.1:8080 in your web browser. Click the play button to begin streaming the generated audio.
You can interact with Infinite Radio through three different methods depending on your platform and preferred level of automation.
The macOS version resides in your menu bar, serving as a central hub to launch the Process DJ or connect to the LLM DJ.
Note: The application requires screen recording permissions to analyze your display and determine the appropriate musical genre.
Download
Download the latest .app file from the releases page and launch it. Infinite Radio will appear in your system tray.
In the app settings, input the IP address and port of your running music container. From there, you can toggle between DJ modes. The Process DJ works immediately; the LLM DJ requires a running model server (refer to the LM Studio setup in Option 3).
The Process DJ monitors your operating system's active tasks. It automatically shifts the musical style based on which application currently has focus.
python process_dj.py 127.0.0.1 8080
Replace the IP and port with the specific address of your music container.
The LLM DJ performs visual analysis of your screen to select a genre that matches your current content—whether you are coding, gaming, or browsing.
Setting up the LLM in LM Studio
GET /v1/modelsPOST /v1/chat/completionsPOST /v1/completionsPOST /v1/embeddingsConnecting the Script Run the following command to link the vision analysis to the music generator:
python llm_dj.py 127.0.0.1 8080
Again, ensure the IP and port match your music container's configuration.
You can also manually control the music engine through the following endpoints:
Change the Genre
POST /genre
curl -X POST http://localhost:8080/genre \
-H "Content-Type: application/json" \
-d '{"genre": "jazz"}'
Check the Current Genre
GET /current-genre
curl http://localhost:8080/current-genre
If you prefer to package the application manually from the source code, use the following commands:
pip install py2app jaraco.text setuptools
python3 setup.py py2app
MuMuAINovel: Write Novels With AI, Minus the Clutter
Open English Dictionary: 25,000+ LLM-Refined Word Entries for Deeper Chinese Understanding
XunLong Review: AI Content Engine That Writes Reports, Fiction & Decks
Yank Note Review: A Hackable Markdown Editor That Runs Code
Strapi Setup Guide: Local Development & Cloud Deployment
NotebookLlama: An Open-Source NotebookLM Alternative with AI Voice
Zettlr Setup and Developer Guide (macOS, Windows, Linux)
Seelen UI Setup: Customizing the Windows Desktop with YAML and Tiling
Memos Self-Hosted Note App: Lightweight Markdown and API-First
Fay: Build and Deploy Your Own Talking Digital Human for Free
MusicFree: A Modular Open-Source Music Player for Android and HarmonyOS
n8n Autoscaling: Scaling Workers via Redis Queue Without Kubernetes