{"id":22320211,"url":"https://github.com/giof71/mpd-alsa-docker","last_synced_at":"2025-07-29T13:32:07.344Z","repository":{"id":60846718,"uuid":"334228885","full_name":"GioF71/mpd-alsa-docker","owner":"GioF71","description":"Easily run mpd with Alsa or PulseAudio output with Docker. Upsampling 2x 4x 8x with \"Goldilocks\" settings by Archimago. Scrobbling support.","archived":false,"fork":false,"pushed_at":"2024-08-23T23:26:07.000Z","size":535,"stargazers_count":19,"open_issues_count":4,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-08-24T15:28:40.160Z","etag":null,"topics":["arm","arm64","armv5","asus-tinkerboard","audio-player","audiophile","daily-build","docker","integer-upsampling","jamendo","lastfm","librefm","mpd","mpdscribble","music-player-daemon","pulseaudio","raspberry-pi","scrobbler","systemd-service","upsampling"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GioF71.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-29T18:24:31.000Z","updated_at":"2024-08-24T15:28:40.160Z","dependencies_parsed_at":"2023-10-27T00:34:02.128Z","dependency_job_id":"c264a26d-9be1-45ed-b0f6-5959c75902b9","html_url":"https://github.com/GioF71/mpd-alsa-docker","commit_stats":null,"previous_names":[],"tags_count":160,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GioF71%2Fmpd-alsa-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GioF71%2Fmpd-alsa-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GioF71%2Fmpd-alsa-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GioF71%2Fmpd-alsa-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GioF71","download_url":"https://codeload.github.com/GioF71/mpd-alsa-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228017867,"owners_count":17856842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","arm64","armv5","asus-tinkerboard","audio-player","audiophile","daily-build","docker","integer-upsampling","jamendo","lastfm","librefm","mpd","mpdscribble","music-player-daemon","pulseaudio","raspberry-pi","scrobbler","systemd-service","upsampling"],"created_at":"2024-12-04T00:12:50.765Z","updated_at":"2025-07-29T13:32:07.320Z","avatar_url":"https://github.com/GioF71.png","language":"Shell","readme":"# mpd-alsa-docker\n\n## References\n\nFirst and foremost, the reference to the awesome projects:\n\n[Music Player Daemon](https://www.musicpd.org/)  \n[MPDScribble](https://www.musicpd.org/clients/mpdscribble/)\n\n## Support\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H7UIN5D)  \nPlease see the [Goal](https://ko-fi.com/giof71/goal?g=0).  \nPlease note that support goal is limited to cover running costs for subscriptions to music services.\n\n## Description\n\nA docker image for mpd with support for both Alsa and PulseAudio.  \nThe container image also includes `mpdscribble`. In alternative, you can use [mpd-scrobbler-docker](https://github.com/GioF71/mpd-scrobbler-docker) as the scrobbler for this image.  \nUser mode is now possible when using `alsa` outputs, and of course it is mandatory (enforced) when using `pulse` outputs.  \nUpsampling (even in integer mode) is now available via a patched version of MPD (an unmodified version is available as well).  \nAlso, thanks to a [feature request](https://github.com/GioF71/mpd-alsa-docker/issues/158) by user [XxAcielxX](https://github.com/XxAcielxX), who also contributed with the necessary documentation, we have a certain degree of support for equalization.  \nAs an alternative, if you don't want to use docker for an audio player, and still would prefer to run mpd using environment variables instead of maintaining your mpd.conf files and bothering with creating the directory structure, take a look at my new project [player-launchers](https://github.com/GioF71/player-launchers). It is still in the initial development phases, but the mpd launcher has quite some options already in place.\n\n## Available Archs on Docker Hub\n\n- linux/amd64\n- linux/arm/v7\n- linux/arm64/v8\n- linux/arm/v6 (for debian-based builds)\n- linux/arm/v5 (for debian-based builds)\n\n## Links\n\nSource: [GitHub](https://github.com/giof71/mpd-alsa-docker)  \nImages: [DockerHub](https://hub.docker.com/r/giof71/mpd-alsa)\n\n## Why\n\nI prepared this Dockerfile because I wanted to be able to install mpd easily on any machine (provided the architecture is amd64 or arm). Also I wanted to be able to configure and govern the parameters easily, allowing multiple output, also of different types.\n\n## Prerequisites\n\nSee [this](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/prerequisites.md) page.\n\n## Get the image\n\nHere is the [repository](https://hub.docker.com/r/giof71/mpd-alsa) on DockerHub.\n\nGetting the image from DockerHub is as simple as typing:\n\n`docker pull giof71/mpd-alsa`\n\nLegacy support `OUTPUT_MODE`, is still available in the `legacy` branch, as well as on the images tagged with the `legacy` prefix.  \nYou might want to use those releases as a stop-gap solution should you encounter issues migrating to the new configuration methods.  \nKeep in mind that the `legacy` branch will not be updated with new features. Only relevant bugfix changes will be ported there.  \n\n## MPD Source code\n\nThe source code for the patched MPD is in this GitHub [repo](https://github.com/GioF71/MPD).  \nThe `version-0.24.4` tag is in-line with the GitHub [upstream repo](https://github.com/MusicPlayerDaemon/MPD) at version 0.24.4.  \nThe `version-0.24.4-ups` tag contains a patch which is used when `INTEGER_UPSAMPLING` is set to `yes`. Use at your own risk.  \nTwo binaries are available in the container image:\n\n- /app/bin/compiled/mpd (upstream version)\n- /app/bin/compiled/mpd-ups (patched version)\n\nThe current mpd version is `v0.23.17` when using [giof71/mpd-compiler-docker](https://github.com/GioF71/mpd-compiler-docker) as the base image (Docker Repo [here](https://hub.docker.com/r/giof71/mpd-compiler)). The repo binary is installed also in this case.  \nVanilla versions only have the repo binary.  \nThe `mpdscribble` version depends on the base image. See the following table:\n\n### Image tags\n\nBase Image|Tags|Compiled MPD version|Repo MPD version|MPDScribble version\n:---|:---|:---|:---|:---\ngiof71/mpd-compiler:bookworm|**latest**, **stable**, bookworm|0.23.17|[0.23.12](https://packages.debian.org/bookworm/mpd)|[0.24](https://packages.debian.org/bookworm/mpdscribble)\ndebian:bookworm-slim|**vanilla-latest**, **vanilla-stable**, **vanilla**, vanilla-bookworm|-|[0.23.12](https://packages.debian.org/bookworm/mpd)|[0.24](https://packages.debian.org/bookworm/mpdscribble)\n\n## Usage\n\n### Important changes\n\nStarting with release `2023-02-04`, you will not be able to use the deprecated `PULSE` and `ALSA` as `OUTPUT_MODE`. Refer to the next chapter for more information about how to change the configuration. Please note that Alsa and PulseAudio are still supported: you just need to slightly modify your docker configurations.  \nIn case of difficulties, you can fall back to the `legacy` image versions (e.g.: `giof71/mpd-alsa:legacy-latest`), as those will still work with these deprecated configurations.  \n\n### What has changed\n\nIf you have been using this container image for a while, you might have seen that the output might contain some warnings, telling you that you are using a `deprecated` configuration. The message usually tries to suggest how to switch to a `recommended` configuration.  \nThis is happening because this whole project started with the idea of supporting ALSA only (hence the name `mpd-alsa-docker`). Down the road, I added PulseAudio support, and eventually HTTPD outputs, SHOUTCAST outputs, also in multiple instances.  \nSo now a few variables have a misleading name: the most misleading being `ALSA_DEVICE_NAME` which, despite the name, refers to the output name, and not to the device name.  \nSo currently, `OUTPUT_MODE` is not available anymore.  \nIn any case, I suggest you change the configuration as suggested, and use the variables from the appropriate sections below for [Alsa](https://github.com/GioF71/mpd-alsa-docker#alsa-additional-outputs) and [PulseAudio](https://github.com/GioF71/mpd-alsa-docker#pulseaudio-additional-outputs), otherwise, in time, your configurations will not be functional anymore.  \nPlease refer to the [legacy branch](https://github.com/GioF71/mpd-alsa-docker/tree/legacy) for the old documentation.  \nFeel free to contact me with an issue if you need support. I cannot guarantee a timing, but I will try to help if I can.  \n\n### User mode\n\nSee [this](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/user-mode.md) page.\n\n### Volumes\n\nThe following tables lists the volumes:\n\nVOLUME|DESCRIPTION\n:---|:---\n/db|Where the mpd database is saved\n/music|Where the music is stored. You might consider to mount your directory in read-only mode (`:ro`)\n/playlists|Where the playlists are stored\n/log|Where all logs are written (e.g. `mpd.log`, `scrobbler.log` etc)\n/user/config|Additional user-provided configuration files, see [this](#user-configuration-volume) paragraph for the details\n\n#### User Configuration volume\n\nSeveral files can be located in the user configuration (`/user/config`) volume. Here is a table of those files.\n\nFILE|DESCRIPTION\n:---|:---\nlastfm.txt|LastFM Credentials\nlibrefm.txt|LibreFM Credentials\njamendo.txt|Jamendo Credentials\nadditional-alsa-presets.conf|Additional alsa presets\nadditional-outputs.txt|Additional outputs, which will be added to the configuration file during the container startup phase\nasoundrc.txt|Alsa configuration file: this will be copied to `/home/mpd-user/.asoundrc` or to `/root/.asoundrc`, depending on user mode to be enabled or not\noverride.mpd.conf|User provided mpd configuration file (see [#356](https://github.com/GioF71/mpd-alsa-docker/issues/356)). Use at your own risk. If this file is available, it will be used in the final phase of the run script instead of the generated file.\n\nFor a reference for the structure of the credentials file, see the corresponding example file in the doc folder of the repository.\n\n### Environment Variables\n\nThe following tables lists all the currently supported environment variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nDATABASE_MODE|Can be `simple` (default), `proxy` or `upnp` (requires `host` networking)\nDATABASE_PROXY_HOST|MPD server hostname, only used when `DATABASE_MODE` is set to `proxy`\nDATABASE_PROXY_PORT|MPD server port, only used when `DATABASE_MODE` is set to `proxy`\nDATABASE_PROXY_PASSWORD|The password used to log in to the `master` MPD instance, only used when `DATABASE_MODE` is set to `proxy`\nDATABASE_PROXY_KEEPALIVE|Send TCP keepalive packets to the `master` MPD instance (`yes` or `no`), only used when `DATABASE_MODE` is set to `proxy`\nMUSIC_DIRECTORY|Location of music files, defaults to `/music`\nMPD_BIND_ADDRESS|The MPD listen address, more than one can be specified (just use `MPD_BIND_ADDRESS_1`, `MPD_BIND_ADDRESS_2`, etc), defaults to `0.0.0.0`\nMPD_PORT|The MPD port, defaults to `6600`\nUSER_MODE|Set to `y` or `yes` for user mode. Case insensitive. See [User mode](#user-mode). Required when using any PulseAudio outputs (so when `PULSE_AUDIO_OUTPUT_CREATE` is set to `yes`)\nPUID|User id. Defaults to `1000`. The user/group will be created when a PulseAudio output is created unless `USER_MODE` is set to `no`.\nPGID|Group id. Defaults to `1000`. The user/group will be created when a PulseAudio output is created unless `USER_MODE` is set to `no`.\nAUDIO_GID|`audio` group id from the host machine. Mandatory for `alsa` output in user mode. See [User mode](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/user-mode.md).\nINPUT_CACHE_SIZE|Sets the input cache size. Example value: `1 GB`\nSAMPLERATE_CONVERTER|Configure `samplerate_converter`. Example value: `soxr very high`. Note that this configuration cannot be used when `SOXR_PLUGIN_ENABLE` is set to enabled. There are some preset values for sox: `very_high` and `very-high` map to `soxr very high`, `high` maps to `soxr high`, `medium` maps to `soxr medium`, `low` maps to `soxr low` and `quick` maps to `soxr quick`. Refer to [this](https://mpd.readthedocs.io/en/stable/plugins.html#soxr) page for details.\nMPD_ENABLE_LOGGING|Defaults to `yes`, set to `no` to disable\nMPD_LOG_LEVEL|Can be `default` or `verbose`\nFFMPEG_ENABLED|Enable ffmpeg decoder, defaults to `no`. Plugin documentation [here](https://mpd.readthedocs.io/en/stable/plugins.html#decoder-ffmpeg)\nCURL_ENABLED|Enable CURL input plugin, defaults to `yes`. This is required if you plan to use [upmpdcli](https://github.com/GioF71/upmpdcli-docker). Input plugin documentation [here](https://mpd.readthedocs.io/en/stable/plugins.html#id6)\nCURL_PROXY|Parameter for CURL input plugin\nCURL_PROXY_USER|Parameter for CURL input plugin\nCURL_PROXY_PASSWORD|Parameter for CURL input plugin\nCURL_VERIFY_PEER|Parameter for CURL input plugin\nCURL_VERIFY_HOST|Parameter for CURL input plugin\nCURL_CACERT|Parameter for CURL input plugin\nZEROCONF_ENABLED|Set to `yes` to enable, disabled by default.\nZEROCONF_NAME|Set zeroconf name, used only if `ZEROCONF_ENABLED` is set to `yes`\nHYBRID_DSD_ENABLED|Hybrid dsd is enabled by default, set to `no` to disable. Disabled when at least one PulseAudio output is created.\nOPUS_DECODER_ENABLED|Defaults to `yes`, if set to `no`, the opus decoder will be disabled.\nMIXRAMP_ANALYZER_ENABLED|Enable MixRamp support. Set to `yes` to enable\nAUDIO_BUFFER_SIZE|Adjust the size of the internal audio buffer. Default is `4 MB` (4 MiB).\nMAX_ADDITIONAL_OUTPUTS_BY_TYPE|The maximum number of outputs by type, defaults to `20`\nRESTORE_PAUSED|If set to `yes`, then MPD is put into pause mode instead of starting playback after startup. Default is `no`.\nSTATE_FILE_INTERVAL|Auto-save the state file this number of seconds after each state change, defaults to `10` seconds\nENFORCE_PLAYER_STATE|If set to `yes`, it will remove player state information from the state file, so the player state will only depend on the environment variables. Defaults to `yes`\nFORCE_REPO_BINARY|If set to `yes`, the binary from the distro repository will be used\nDEFAULT_PERMISSIONS|Sets `default_permissions`, see [here](https://mpd.readthedocs.io/en/stable/user.html#permissions-and-passwords)\nLOCAL_PERMISSIONS|Sets `local_permissions`, see [here](https://mpd.readthedocs.io/en/stable/user.html#permissions-and-passwords)\nHOST_PERMISSIONS|Adds a `host_permissions`, you can add multiple (up to `MAX_PERMISSIONS`), append `_1`, `_2`, etc to the variable name for additional entries, see [here](https://mpd.readthedocs.io/en/stable/user.html#permissions-and-passwords)\nPASSWORD|Adds a `password`, you can add multiple (up to `MAX_PERMISSIONS`), append `_1`, `_2`, etc to the variable name for additional entries, see [here](https://mpd.readthedocs.io/en/stable/user.html#permissions-and-passwords)\nMAX_PERMISSIONS|Specify the maximum number of host_permissions and passwords, defaults to `10`\nSTDERR_ENABLED|Print messages to the standard error, enabled by default. Set to `no` to disable\nCONNECTION_TIMEOUT|If a client does not send any new data in this time period (seconds), the connection is closed. Clients waiting in “idle” mode are excluded from this. Default is `60`\nMAX_CONNECTIONS|This specifies the maximum number of clients that can be connected to MPD at the same time, default is `100`\nMAX_PLAYLIST_LENGTH|The maximum number of songs that can be in the playlist, default is `16384`\nMAX_COMMAND_LIST_SIZE|The maximum size a command list in KBYTES, default is `2048` (2 MiB)\nMAX_OUTPUT_BUFFER_SIZE|The maximum size of the output buffer to a client (maximum response size), in KBYTES, default is 8192 (8 MiB)\nAUTO_UPDATE|Set to `yes` to enable autoupdate of database\nAUTO_UPDATE_DEPTH|Limit the depth of the directories being watched, `0` means only watch the music directory itself. There is no limit by default.\nSTARTUP_DELAY_SEC|Delay before starting the application in seconds, defaults to `0`\n\n#### SOXR Plugin\n\nPlease find here the variables used to configure the SOXR plugin.\n\nVARIABLE|DESCRIPTION\n:---|:---\nSOXR_PLUGIN_ENABLE|Enable the `soxr` plugin. Do not use in conjunction with variable `SAMPLERATE_CONVERTER`\nSOXR_PLUGIN_PRESET|Presets for SOXR_PLUGIN configuration. Available presets: `goldilocks` and `extremus`\nSOXR_PLUGIN_THREADS|The number of libsoxr threads. `0` means automatic. The default is `1` which disables multi-threading.\nSOXR_PLUGIN_QUALITY|The quality of `soxr` resampler. Possible values: `very high`, `high` (the default), `medium`, `low`, `quick`, `custom`. When set to `custom`, the additional `soxr` parameters can be set.\nSOXR_PLUGIN_PRECISION|The precision in bits. Valid values `16`,`20`,`24`,`28` and `32` bits.\nSOXR_PLUGIN_PHASE_RESPONSE|Between the 0-100, where `0` is MINIMUM_PHASE and `50` is LINEAR_PHASE\nSOXR_PLUGIN_PASSBAND_END|The % of source bandwidth where to start filtering. Typical between the 90-99.7.\nSOXR_PLUGIN_STOPBAND_BEGIN|The % of the source bandwidth Where the anti aliasing filter start. Value 100+.\nSOXR_PLUGIN_ATTENUATION|Reduction in dB’s to prevent clipping from the resampling process\nSOXR_PLUGIN_FLAGS|Bitmask with additional options, see soxr documentation for specific flags\n\n#### ReplayGain Settings\n\nPlease find here the variables used to configure ReplayGain.\n\nVARIABLE|DESCRIPTION\n:---|:---\nREPLAYGAIN_MODE|ReplayGain Mode, defaults to `off`\nREPLAYGAIN_PREAMP|ReplayGain Preamp, defaults to `0`\nREPLAYGAIN_MISSING_PREAMP|ReplayGain missing preamp, defaults to `0`\nREPLAYGAIN_LIMIT|ReplayGain Limit, defaults to `yes`\nVOLUME_NORMALIZATION|Volume normalization, defaults to `no`\n\n#### Qobuz Plugin\n\nPlease find here the variables used to configure the Qobuz plugin.\n\nVARIABLE|DESCRIPTION\n:---|:---\nQOBUZ_PLUGIN_ENABLED|Enables the Qobuz plugin, defaults to `no`\nQOBUZ_APP_ID|Qobuz application id\nQOBUZ_APP_SECRET|Your Qobuz application Secret\nQOBUZ_USERNAME|Qobuz account username\nQOBUZ_PASSWORD|Qobuz account password\nQOBUZ_FORMAT_ID|The Qobuz format identifier, i.e. a number which chooses the format and quality to be requested from Qobuz. The default is `5` (320 kbit/s MP3).\n\n#### Scrobbling\n\nPlease find here the variables used to configure scrobbling. All of those are of course optional.  \nCredentials of course go in pairs, so in order to enable one serve, you must provide both username and password.\n\nVARIABLE|DESCRIPTION\n:---|:---\nLASTFM_USERNAME|Username for Last.fm\nLASTFM_PASSWORD|Password for Last.fm\nLIBREFM_USERNAME|Username for Libre.fm\nLIBREFM_PASSWORD|Password for Libre.fm\nJAMENDO_USERNAME|Username for Jamendo\nJAMENDO_PASSWORD|Password for Jamendo\nSCRIBBLE_VERBOSE|How verbose `mpdscribble`'s logging should be. Default is 1.\nSCROBBLER_MPD_HOSTNAME|Set when using host mode, defaults to `localhost`\nSCROBBLER_MPD_PORT|Set when using host mode, defaults to `6600`\nPROXY|Proxy support for `mpdscribble`. Example value: `http://the.proxy.server:3128`\n\n#### Additional Outputs\n\nYou can define additional outputs of various types. Refer to the following paragraphs.  \nFor each type, that you can add up to 20 (or what is specified for the variable `MAX_ADDITIONAL_OUTPUTS_BY_TYPE`) additional outputs for each type. In order to specify distinct values, you can add `_1`, `_2` to every variable names in this set. The first output does *not* require to specify `_0`, that index is implicit.  \nThe output name of those outputs, if not explicitly set, is created by appending with `_1`, `_2`, ... to the defaut name, so in the case of PulseAudio, the names of output will be `PulseAudio_1`, `PulseAudio_2`, ...  \n\n#### ALSA additional outputs\n\nAdditional alsa outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nALSA_OUTPUT_CREATE|Set to `yes` if you want to create an additional alsa output\nALSA_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nALSA_OUTPUT_NAME|The name of the alsa output, defaults to `alsa`\nALSA_OUTPUT_PRESET|Use an Alsa preset for easier configuration\nALSA_OUTPUT_DEVICE|The audio device. Common examples: `hw:DAC` or `hw:x20` or `hw:X20` for usb dac based on XMOS chips. Defaults to `default`\nALSA_OUTPUT_AUTO_FIND_MIXER|Allows to auto-select the mixer for easy hardware volume configuration\nALSA_OUTPUT_MIXER_TYPE|Mixer type, defaults to `hardware`\nALSA_OUTPUT_MIXER_DEVICE|Mixer device, defaults to `default`\nALSA_OUTPUT_MIXER_CONTROL|Mixer Control, defaults to `PCM`\nALSA_OUTPUT_MIXER_INDEX|Mixer Index, defaults to `0`\nALSA_OUTPUT_ALLOWED_FORMATS_PRESET|Alternative to `ALSA_OUTPUT_ALLOWED_FORMATS`. Possible values: 8x, 4x, 2x, 8x-nodsd, 4x-nodsd, 2x-nodsd\nALSA_OUTPUT_ALLOWED_FORMATS|Sets allowed formats\nALSA_OUTPUT_FORMAT|Sets output format\nALSA_OUTPUT_AUTO_RESAMPLE|If set to no, then libasound will not attempt to resample. In this case, the user is responsible for ensuring that the requested sample rate can be produced natively by the device, otherwise an error will occur.\nALSA_OUTPUT_STOP_DSD_SILENCE|If enabled, silence is played before manually stopping playback (“stop” or “pause”) in DSD mode (native DSD or DoP). This is a workaround for some DACs which emit noise when stopping DSD playback. Can be left blank or to `yes` or `no`\nALSA_OUTPUT_THESYCON_DSD_WORKAROUND|If enabled, enables a workaround for a bug in Thesycon USB audio receivers. On these devices, playing DSD512 or PCM causes all subsequent attempts to play other DSD rates to fail, which can be fixed by briefly playing PCM at 44.1 kHz. Can be left blank or to `yes` or `no`\nALSA_OUTPUT_INTEGER_UPSAMPLING|If one or more `ALSA_ALLOWED_FORMATS` are set and `INTEGER_UPSAMPLING` is set to `yes`, the formats which are evenly divided by the source sample rate are preferred. The `ALSA_ALLOWED_FORMATS` list is processed in order as provided to the container. So if you want to upsample, put higher sampling rates first. Using this feature causes a patched version of mpd to be run. Use at your own risk.\nALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWED|Allows selection of sample rates to be upsampled. If set, only specified values are allowed. The values should respect the same format user for `ALSA_OUTPUT_ALLOWED_FORMATS`\nALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWED_PRESET|Preset for `ALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWED`. Allowed values are `base` (for 44.1kHz and 48.0kHz) and `44` for 44.1kHz only\nALSA_OUTPUT_DOP|Enables Dsd-Over-Pcm. Possible values: `yes` or `no`. Empty by default: this it lets mpd handle dop setting.\n\nRefer to the MPD [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#alsa-plugin) for the meaning of the variables.  \n\n#### PulseAudio additional outputs\n\nRemember to setup [user mode](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/user-mode.md) when using PulseAudio outputs, otherwise they won't work.  \nAdditional PulseAudio outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nPULSE_AUDIO_OUTPUT_CREATE|Set to `yes` if you want to create an additional PulseAudio output\nPULSE_AUDIO_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nPULSE_AUDIO_OUTPUT_NAME|The name of the PulseAudio output, defaults to `PulseAudio`\nPULSE_AUDIO_OUTPUT_SINK|Specifies the name of the PulseAudio sink MPD should play on\nPULSE_AUDIO_OUTPUT_MEDIA_ROLE|Media role for the PulseAudio output\nPULSE_AUDIO_OUTPUT_SCALING_FACTOR|Scaling factor for the PulseAudio output\n\nRefer to the MPD [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#pulse) for the meaning of the variables.  \n\n#### HTTPD additional outputs\n\nAdditional httpd outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nHTTPD_OUTPUT_CREATE|Set to `yes` if you want to create an additional httpd output\nHTTPD_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nHTTPD_OUTPUT_NAME|The name of the httpd output, defaults to `httpd`\nHTTPD_OUTPUT_PORT|The port for the httpd output stream, defaults to `8000` if not specified\nHTTPD_OUTPUT_BIND_TO_ADDRESS|Allows to specify the bind address\nHTTPD_OUTPUT_ENCODER|The encoder defaults to `wave`, see [here](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins) for other options\nHTTPD_OUTPUT_ENCODER_BITRATE|Encoder bitrate. Refer to the encoder [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins)\nHTTPD_OUTPUT_ENCODER_QUALITY|Encoder quality. Refer to the encoder [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins)\nHTTPD_OUTPUT_MAX_CLIENTS|Sets a limit, number of concurrent clients. When set to 0 no limit will apply. Defaults to `0`\nHTTPD_OUTPUT_ALWAYS_ON|If set to `yes`, then MPD attempts to keep this audio output always open. This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped. Defaults to `yes`\nHTTPD_OUTPUT_TAGS|If set to no, then MPD will not send tags to this output. This is only useful for output plugins that can receive tags, for example the httpd output plugin. Defaults to `yes`\nHTTPD_OUTPUT_FORMAT|The output format, defaults to `44100:16:2`\nHTTPD_OUTPUT_MIXER_TYPE|Set to `software` if you want to be able to change the volume of the output stream\n\nThe port number default is calculated for each index by incrementing the default (`8000`) value.  \nWhen using multiple httpd outputs, remember to open *all* the relevant ports, not only `8000`, otherwise only the first output will work.\n\n#### Shout additional outputs\n\nVARIABLE|DESCRIPTION\n:---|:---\nSHOUT_OUTPUT_CREATE|Set to `yes` if you want to create an additional shout output\nSHOUT_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nSHOUT_OUTPUT_NAME|The name of the shout output, defaults to `shout`\nSHOUT_OUTPUT_PROTOCOL|Specifies the protocol that wil be used to connect to the server, can be `icecast2` (default), `icecast1`, `shoutcast`\nSHOUT_OUTPUT_TLS|Specifies what kind of TLS to use, can be `disabled` (default), `auto`, `auto_no_plain`, `rfc2818`, `rfc2817`\nSHOUT_OUTPUT_FORMAT|The output format, defaults to `44100:16:2`\nSHOUT_OUTPUT_ENCODER|The encoder defaults to `vorbis`, see [here](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins) for other options. BITRATE and QUALITY are typically alternative, so do not specify both of them.\nSHOUT_OUTPUT_ENCODER_BITRATE|Encoder bitrate. Refer to the encoder [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins)\nSHOUT_OUTPUT_ENCODER_QUALITY|Encoder quality. Refer to the encoder [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#encoder-plugins)\nSHOUT_OUTPUT_HOST|Sets the host name of the ShoutCast / IceCast server, defaults to `icecast`, this seems a sensible default in a docker environment\nSHOUT_OUTPUT_PORT|Connect to this port number on the specified host, defaults to `8000`\nSHOUT_OUTPUT_MOUNT|Mounts the MPD stream in the specified URI\nSHOUT_OUTPUT_USER|Sets the user name for submitting the stream to the server, defaults to `source`\nSHOUT_OUTPUT_PASSWORD|Sets the password for submitting the stream to the server, defaults to `hackme`\nSHOUT_OUTPUT_PUBLIC|Specifies whether the stream should be \"public\", defaults to `no`\nSHOUT_OUTPUT_MIXER_TYPE|Set to `software` if you want to be able to change the volume of the output stream\nSHOUT_OUTPUT_ALWAYS_ON|If set to `yes`, then MPD attempts to keep this audio output always open. This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped. Defaults to `yes`\n\n#### Null additional outputs\n\nAdditional null outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nNULL_OUTPUT_CREATE|Set to `yes` if you want to create an additional null output\nNULL_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nNULL_OUTPUT_NAME|The name of the Null output, defaults to `null`\nNULL_OUTPUT_SYNC|Sync mode for the `null` output, can be `yes` (default) or `no`\nNULL_OUTPUT_MIXER_TYPE|Set to `software` if you want to be able to change the volume of the output stream\n\nRefer to the MPD [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#null) for the meaning of the variables.  \n\n#### Snapcast additional outputs\n\nAdditional snapcast outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nSNAPCAST_OUTPUT_CREATE|Set to `yes` if you want to create an additional Snapcast output\nSNAPCAST_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nSNAPCAST_OUTPUT_NAME|The name of the Snapcast output, defaults to `snapcast`\nSNAPCAST_OUTPUT_FORMAT|Snapcast audio format\nSNAPCAST_OUTPUT_MIXER_TYPE|Snapcast mixer type, defaults to `software`\nSNAPCAST_OUTPUT_PORT|Binds the Snapcast server to the specified port, defaults to 1704\nSNAPCAST_OUTPUT_BIND_TO_ADDRESS|Binds the Snapcast server to the specified address\nSNAPCAST_OUTPUT_ZEROCONF|Publish the Snapcast server, default is yes.\n\nRefer to the MPD [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#snapcast) for the meaning of the variables.  \n\n#### Fifo additional outputs\n\nAdditional snapcast outputs can be configured using the following variables:\n\nVARIABLE|DESCRIPTION\n:---|:---\nFIFO_OUTPUT_CREATE|Set to `yes` if you want to create an additional Fifo output\nFIFO_OUTPUT_ENABLED|Sets the output as enabled if set to `yes`, otherwise mpd's default behavior applies\nFIFO_OUTPUT_NAME|The name of the Fifo output, defaults to `fifo`\nFIFO_OUTPUT_FORMAT|Fifo audio format\nFIFO_OUTPUT_MIXER_TYPE|Fifo mixer type, defaults to `software`\nFIFO_OUTPUT_PATH|Path of the fifo file\n\nRefer to the MPD [documentation](https://mpd.readthedocs.io/en/stable/plugins.html#snapcast) for the meaning of the variables.  \n\n### Examples\n\nSee some usage examples [here](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/example-configurations.md).\n\n## Support for Scrobbling\n\nIf at least one set of credentials for `Last.fm`, `Libre.fm` or `Jamendo` are provided, `mpdscribble` will be started and it will scrobble the songs you play.  \nYou can provide credential using the environment variables or using credential files stored in the volume `/user/config`.  \nThe relevant files are:\n\n- lastfm.txt\n- librefm.txt\n- jamendo.txt\n\n## Run as a user-level systemd\n\nWhen using a desktop system with PulseAudio, running a docker-compose with a `restart=unless-stopped` is likely to cause issues to the entire PulseAudio. At least that is what is systematically happening to me on my desktop systems.  \nYou might want to create a user-level systemd unit. In order to do that, move to the `pulse` directory of this repo, then run the following to install the service:\n\n```code\n./install.sh\n```\n\nAfter that, the service can be controlled using `./start.sh`, `./stop.sh`, `./restart.sh`.  \nYou can completely uninstall the service by running:\n\n```code\n./uninstall.sh\n```\n\n## Equalization support\n\nPlease find documentation [here](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/alsa-eq.md).\n\n## Build\n\nSee [this](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/build.md) document.\n\n## Change history\n\nSee [this](https://github.com/GioF71/mpd-alsa-docker/blob/main/doc/change-history.md) document.\n","funding_links":["https://ko-fi.com/H2H7UIN5D","https://ko-fi.com/giof71/goal?g=0"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiof71%2Fmpd-alsa-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiof71%2Fmpd-alsa-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiof71%2Fmpd-alsa-docker/lists"}