Infinite Radio generates endless music that automatically changes based on your current context. It combines the Magenta RealTime music model with contextual genre selection either from InternVL3 or the top processes running on your machine.
For running the music model locally, you will need:
- Docker with GPU support
- NVIDIA GPU with CUDA support
- NVIDIA Container Toolkit
-
Run the Docker Container from Dockerhub:
docker run --gpus all --network host lauriewired/musicbeats:latest
-
Access the web interface:
- Open your browser and navigate to
http://127.0.0.1:8080
or the IP where the music container is running - Click the play button to start streaming
- Open your browser and navigate to
The Mac application can start the Process DJ or connect to the LLM DJ. It lives as a tray application to easily configure and examine the music control. Note: When using the Mac application, you may need to provide additional permissions to allow the DJ to examine your screen to dynamically select the genre.
-
Download the latest release:
- Go to the releases page and download the latest version
- Run the .app file and Infinite Radio will appear in your tray
-
Configure to point to the IP and port of the music model
-
Select and run your DJ of choice
- You can run the process DJ immediately or choose the LLM DJ
- If selecting the LLM DJ, ensure the model server is running already in LM Studio (See Option 3 below for an example although you may skip the python step when using the Mac app)
The Process DJ will monitor the processes on your system and automatically change music genres based on what applications are most active.
python process_dj.py 127.0.0.1 8080 # Point this to the IP and port of the music model
The LLM DJ analyzes the data on your screen to automatically configure the genre that best suits your activity.
- Run the LLM in LM Studio:
- Download InternVL3 (or any image to text model)
- Start the server in LM Studio
- Run the Python Connection:
python llm_dj.py 127.0.0.1 8080 # Point this to the IP and port of the music model
POST /genre
curl -X POST http://localhost:8080/genre \
-H "Content-Type: application/json" \
-d '{"genre": "jazz"}'
GET /current-genre
curl http://localhost:8080/current-genre
Building the Mac application:
pip install py2app jaraco.text setuptools
python3 setup.py py2app