GioF71 / mpd-alsa-docker

Easily run mpd with Alsa or PulseAudio output with Docker. Upsampling 2x 4x 8x with "Goldilocks" settings by Archimago. Scrobbling support.
Apache License 2.0
18 stars 5 forks source link

See stickers db, but not mpd db #396

Closed bonelifer closed 2 months ago

bonelifer commented 2 months ago

Just setting this up. In the db folder I only see Stickers, State and not the mpd db.

docker-compose.yml:

---
services:
  mpd-alsa:
    container_name: mpd-alsa
    devices:
      - /dev/snd
    ports:
      - 6600:6600
    environment:
      - PULSE_AUDIO_OUTPUT_CREATE=${PULSE_AUDIO_OUTPUT_CREATE:-yes}
      - MPD_BIND_ADDRESS=${MPD_BIND_ADDRESS:-192.168.1.80}
      - MPD_PORT=${MPD_PORT:-6600}
      - PUID=${PUID:-1000}
      - GUID=${GUID:-1000}
      - HTTPD_OUTPUT_CREATE=${HTTPD_OUTPUT_CREATE:-yes}
      - HTTPD_OUTPUT_ENABLED=${HTTPD_OUTPUT_ENABLED:-yes}
      - HTTPD_OUTPUT_NAME=${HTTPD_OUTPUT_NAME:-httpd}
      - HTTPD_OUTPUT_PORT=${HTTPD_OUTPUT_PORT:-8000}
      - HTTPD_OUTPUT_BIND_TO_ADDRESS=${HTTPD_OUTPUT_BIND_TO_ADDRESS}
      - HTTPD_OUTPUT_ENCODER=${HTTPD_OUTPUT_ENCODER:-wave}
      - HTTPD_OUTPUT_ENCODER_BITRATE=${HTTPD_OUTPUT_ENCODER_BITRATE}
      - HTTPD_OUTPUT_ENCODER_QUALITY=${HTTPD_OUTPUT_ENCODER_QUALITY}
      - HTTPD_OUTPUT_MAX_CLIENTS=${HTTPD_OUTPUT_MAX_CLIENTS:-0}
      - HTTPD_OUTPUT_ALWAYS_ON=${HTTPD_OUTPUT_ALWAYS_ON:-yes}
      - HTTPD_OUTPUT_TAGS=${HTTPD_OUTPUT_TAGS:-yes}
      - HTTPD_OUTPUT_FORMAT=${HTTPD_OUTPUT_FORMAT:-44100:16:2}
      - HTTPD_OUTPUT_MIXER_TYPE=${HTTPD_OUTPUT_MIXER_TYPE:-software}
    volumes:
      - /media/william/OracleHarbor/LidarMusic/CLEAN/:/music:ro
      - ./data/.mpd/playlists:/playlists
      - ./data/.mpd/log:/log
      - ./data/.mpd/config:/user/config
      - ./data/.mpd/db:/db
      - /run/user/${PUID}/pulse:/run/user/${PUID}/pulse
    network_mode: "host"  # Add host mode networking
    image: giof71/mpd-alsa

.env:

HTTPD_OUTPUT_CREATE=yes
HTTPD_OUTPUT_ENABLED=yes
HTTPD_OUTPUT_NAME=httpd
HTTPD_OUTPUT_PORT=8000
HTTPD_OUTPUT_BIND_TO_ADDRESS=192.168.1.80
HTTPD_OUTPUT_ENCODER=wave
HTTPD_OUTPUT_ENCODER_BITRATE=128k
HTTPD_OUTPUT_ENCODER_QUALITY=3
HTTPD_OUTPUT_MAX_CLIENTS=0
HTTPD_OUTPUT_ALWAYS_ON=yes
HTTPD_OUTPUT_TAGS=yes
HTTPD_OUTPUT_FORMAT=44100:16:2
HTTPD_OUTPUT_MIXER_TYPE=software
PULSE_AUDIO_OUTPUT_CREATE=yes
PUID=1000
GUID=1000
bonelifer commented 2 months ago

Okay, once the db update process finished, it created tag_cache, which I assume is the name you chose for the mpd db.

GioF71 commented 2 months ago

Hello, yes, it is configured like this in a simple generate configuration file. See the snippet I got from a running instance:

database {
  plugin "simple"
  path "/db/tag_cache"
}

Do you need the path to be configurable? If so, I assume you only need to change the "tag_cache" part, is that right?

bonelifer commented 2 months ago

No, my library has grown to 50,000+ tracks. So I'm not used to db file not showing up immediately. After it finally finished updating and it appeared, with that large a library it took awhile.

GioF71 commented 2 months ago

Also I just wanted to point out those three settings:

HTTPD_OUTPUT_ENCODER=wave
HTTPD_OUTPUT_ENCODER_BITRATE=128k
HTTPD_OUTPUT_ENCODER_QUALITY=3

don't make a lot of sense together. Bitrate/Quality are not required for wave. If you want wave as default, I would change the defaults in the compose like this:

      - HTTPD_OUTPUT_ENCODER=${HTTPD_OUTPUT_ENCODER:-wave}
      - HTTPD_OUTPUT_ENCODER_BITRATE=${HTTPD_OUTPUT_ENCODER_BITRATE:-}
      - HTTPD_OUTPUT_ENCODER_QUALITY=${HTTPD_OUTPUT_ENCODER_QUALITY:-}

so bitrate and quality are empty unless set in the env. Also the port is not needed with host networking, but you can change the exposed port using the variable MPD_PORT if you don't want it on port 6600.

Just my 2 cents.

GioF71 commented 2 months ago

No, my library has grown to 50,000+ tracks. So I'm not used to db file not showing up immediately. After it finally finished updating and it appeared, with that large a library it took awhile.

so no changes are needed for this issue, is that so?

GioF71 commented 2 months ago

I also noticed that the file does not appear until the scan is over. I assume this is done in order to avoid lots of i/o. The data are probably kept in memory and written as the final step of the scan.