Art Can Paint Screens: Making Music “Visible”——ArtFrame for Roon

Art Can Paint Screens: Making Music “Visible”

These digital art screens ingeniously extend the auditory experience into the visual realm, transforming abstract melodies into concrete artistic imagery. This adds a richer dimension and emotional connection to music appreciation. This is the charm of music visualization—it elevates music from merely an auditory pleasure to a visually appreciable artistic experience.


1 Like

ArtFrame for Roon

ArtFrame is an album artwork display extension designed for Roon music system.

Features

  • 4K Ultra HD album artwork display

  • Adaptive fullscreen display

  • Touch screen support

  • Smart mouse hiding

  • iOS device fullscreen support

  • Automatic background blur effect

System Requirements

  • Node.js 12.0 or higher (for manual installation)

  • Roon Core 1.8 or higher

  • Modern browser (HTML5 support)

  • Docker (for Docker installation)

Installation

Method 1: Docker Installation (Recommended)

Option A: Using Docker Hub Image (Simplest)


docker run -d \

--network host \

--restart unless-stopped \

epochaudio/artframe:latest

Option B: Using Docker Compose

  1. Create a docker-compose.yml file with the following content:

version: '3'

services:

roonalbumart:

image: epochaudio/artframe:latest

network_mode: "host"

restart: unless-stopped

volumes:

- ./config:/app/config

  1. Run the container:

docker-compose up -d

The service will be available at http://localhost:3666

Usage

  1. Start Roon Core

  2. Run ArtFrame

  3. Enable ArtFrame extension in Roon settings

  4. Visit http://localhost:3666 (or your configured port)

Touch Screen Operations

  • Click cover: Toggle fullscreen mode

  • Operation tips will be shown on first visit

Keyboard Shortcuts

  • ESC: Exit fullscreen mode

Acknowledgments

This project is developed based on the following open-source projects:

  • Roon Web Controller - Original project developed by Mike Plugge
  • Roon Web Controller (Miemo Fork) - Provides an optimized interface version

Special thanks to:

  • Mike Plugge (@pluggemi) for creating the original Roon Web Controller
  • Roon Labs for their excellent music player and API
  • All developers who contributed to this project

This is very nice! What frame are you using here in the photo?

My biggest hurdle has been finding the right hardware to enable something like this. I’ve been using an old Surface Go and Roon full screen, but want a more artwork focused solution.

22-inch 1:1 and 16:9 art screens which were bought from our local!



epochaudio/artframe:2.0.4 For English





image


image

Roon Cover Art Extension

This extension displays album art from your Roon music library, offering both real-time playback visualization and a dynamic art wall mode.

Key Features:

  • Real-time Playback Display:

    • Shows the album art of the currently playing track.
    • Dynamically extracts the dominant color from the artwork to set the background.
    • Supports full-screen display for immersive viewing.
  • Art Wall Mode:

    • Automatically activates 15 seconds after playback stops.
    • Presents a grid layout of album art.
    • Includes a central clock display (except for 16.9 and small_frame options).
    • Randomly displays album art in the remaining grid positions.
    • Refreshes three images every 60 seconds with a smooth 3D flip animation.
  • Automatic Image Saving:

    • Automatically saves played album art to a designated directory.
    • Supports a custom save directory for organized storage.
    • Uses intelligent file naming conventions (e.g., Artist_Album Name).

Display Options:

  • 16.9: Optimized for 16:9 aspect ratio displays (widescreen monitors and TVs). Suitable for both landscape and portrait orientations. Does not include a clock. Recommended for 16:9 screens.
  • small_frame: Optimized for displays with a very tall, narrow aspect ratio, such as 1280x8000. Supports both portrait and landscape orientations. Does not include a clock. Ideal for specific, non-standard display types.
  • latest: Designed for square (1:1) aspect ratio displays. Includes a central clock display. Best for square screens.

Installation and Setup:

Option A: Direct Docker Deployment

  1. Pull the Docker Image:
    docker pull epochaudio/coverart:YOUR_TAG
    
    • Replace YOUR_TAG with the desired display option (16.9, small_frame, or latest).
  2. Run the Docker Container:
    docker run -d \
      --name roon-coverart \
      --network host \
      --restart unless-stopped \
      -v $(pwd)/images:/app/images \
      epochaudio/coverart:YOUR_TAG
    
    • Replace YOUR_TAG with the desired display option (16.9, small_frame, or latest).

Docker Command Explanation:

  • docker pull epochaudio/coverart:YOUR_TAG: Downloads the specified Docker image from Docker Hub.
  • docker run -d: Starts a new container in detached mode (runs in the background).
  • --name roon-coverart: Assigns the name roon-coverart to the container.
  • --network host: Allows the container to use the host’s network, enabling direct access to Roon.
  • --restart unless-stopped: Ensures the container restarts automatically unless explicitly stopped.
  • -v $(pwd)/images:/app/images: Mounts the images directory in the current directory on the host to /app/images inside the container. This is where saved artwork is stored.
  • epochaudio/coverart:YOUR_TAG: Specifies the Docker image to use for the container.

Important: Setting File Permissions

The container runs as the node user (UID 1000) and requires read/write access to the images directory.

  1. Create the images directory (if it doesn’t exist):

    mkdir -p images
    
  2. Set Permissions (Choose one option):

    • Option 1 (Recommended - More Secure):
      sudo chown -R 1000:1000 images
      sudo chmod -R 755 images
      
    • Option 2 (If Option 1 Doesn’t Work):
      sudo chmod -R 777 images
      

    Note: These commands must be executed on the host machine, not inside the container.

Configuration Options (Environment Variables - Docker)

The following environment variables can be set when running the Docker container to customize behavior:

  • SERVER_PORT: The port on which the server will listen (default is 3666).
  • ARTWORK_SAVEDIR: The directory where album art will be saved (default is /app/images).
  • ARTWORK_AUTOSAVE: Set to true to automatically save album art, false otherwise (default is true).
  • ARTWORK_FORMAT: The image format for saved artwork (jpg or png; default is jpg).

Example of setting an environment variable in the docker run command:

docker run -d \
  --name roon-coverart \
  --network host \
  --restart unless-stopped \
  -v $(pwd)/images:/app/images \
  -e SERVER_PORT=8080 \
  epochaudio/coverart:16.9
This example sets the server port to 8080.

Usage Instructions:

  1. Access the Web Interface: Open a web browser and navigate to http://localhost:3666 (or the port you configured).
  2. Enable the Extension in Roon: In the Roon settings, enable the “Roon Cover Art” extension.
  3. Select a Zone: Choose the Roon playback zone you want to display.
  4. Enjoy! Start playing music and the extension will display the album art.

Important Notes:

  1. File Permissions: Ensure the images directory has the correct read/write permissions for the node user (UID 1000). See the “Setting File Permissions” section.
  2. Docker Configuration: When using Docker, confirm that volume mappings and environment variables are configured correctly.
  3. Browser Compatibility: For the best experience, use Chrome or a Chromium-based browser.