dotfiles/org/config/mpd.org
Lucien Cartier-Tilet 6a73bdb74e
[Bin] Remove Elisp dependencies in code generation
Remove dependency on dash.el and s.el in code generation
2021-10-23 20:25:21 +02:00

107 lines
4.9 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+title: MPD Configuration
#+setupfile: ~/org/config/headers
#+options: auto-id:t
#+html_head: <meta name="description" content="Phundraks MPD Configuration" />
#+html_head: <meta property="og:title" content="Phundraks MPD Configuration" />
#+html_head: <meta property="og:description" content="Phundraks MPD Configuration Detailed" />
#+property: header-args:emacs-lisp :lexical t :exports none :tangle no
#+property: header-args:emacs-lisp+ :noweb yes :wrap src conf-space
#+property: header-args:conf-space :tangle ~/.config/mpd/mpd.conf :noweb yes :exports code
* Introduction
:PROPERTIES:
:CUSTOM_ID: Introduction-zln38f71v8j0
:END:
As its name indicates, the [[https://www.musicpd.org/][Music Player Daemon]] --- or MPD for short
--- is a daemon that manages music files on a computer and plays them.
It can be manipulated by various front-end applications, such as the
command-line utility ~mpc~, TUI ~ncmpcpp~, or GUI ~cantata~. In my case, I
use mainly ~ncmpcpp~ and Emacs EMMS.
On my computer, MPD runs as a user daemon, as seen in [[file:bootstrap.org::#Execute_bootstrap-Enable_some_services-Mpd-f0f5b9b7][my bootstrap
file here]].
* Required Parameters
:PROPERTIES:
:CUSTOM_ID: Required-Parameters-sa4jfr71v8j0
:END:
MPD requires a few compulsory parameters that we will see below.
#+name: mpd-required-parameters
| Parameter name | Value | Comment |
|-------------------------+---------------------------+--------------------------------------------------------------------------|
| =follow_outside_symlinks= | =yes= | Whether to follow symlinks pointing outside the music directory |
| =follow_inside_symlinks= | =yes= | Whether to follow symlinks pointing inside the music directory |
| =db_file= | =~/.config/mpd/database= | Location of MPDs database |
| =sticker_file= | =~/.config/mpd/sticker.sql= | Location of the sticker database (dynamic information attached to songs) |
| =log_file= | =~/.config/mpd/log= | Location of MPDs log file |
#+name: mpd-gen-values
#+begin_src emacs-lisp :var table=mpd-required-parameters :exports results
(mapconcat (lambda (parameter)
(let* ((trim-name (lambda (parameter)
(replace-regexp-in-string (regexp-quote "=")
""
parameter)))
(name (apply trim-name `(,(car parameter))))
(value (apply trim-name `(,(cadr parameter)))))
(format "%s \"%s\"" name value)))
table
"\n")
#+end_src
#+RESULTS: mpd-gen-values
#+begin_src conf-space
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
db_file "~/.config/mpd/database"
sticker_file "~/.config/mpd/sticker.sql"
log_file "~/.config/mpd/log"
#+end_src
* Optional Parameters
:PROPERTIES:
:CUSTOM_ID: Optional-Parameters-hkw8zz71v8j0
:END:
While these values are not strictly necessary, some are still
extremely useful such as ~music_directory~ so we dont have to manually
add our music to MPD each time we run it.
#+name: mpd-optional-parameters
| Parameter | Value | Comment |
|--------------------+---------------------+-----------------------------------------------------------|
| =music_directory= | =~/Music= | Location of the music directory |
| =playlist_directory= | =~/Music/playlists= | Location of MPD playlists |
| =pid_file= | =~/.config/mpd/pid= | Location of MPDs PID |
| =state_file= | =~/.config/mpd/state= | File where the state of MPD is saved when killed |
| =bind_to_address= | =localhost= | Limit MPD to the localhost address |
| =auto_update= | =yes= | No need to manually update MPDs database with ~mpc update~ |
#+begin_src conf-space
<<mpd-gen-values(table=mpd-optional-parameters)>>
#+end_src
* Audio outputs
:PROPERTIES:
:CUSTOM_ID: Audio-outputs-emqjro81v8j0
:END:
Two audio outputs will be defined. The first one is dedicated to
Pulseaudio so I can actually hear my music. Its configuration is
simple, really.
#+begin_src conf-space
audio_output {
type "pulse"
name "pulse audio"
}
#+end_src
Another one is created, but this time for the visualizer of ~ncmpcpp~.
It is not necessary to create this one if you dont plan on using this
feature.
#+begin_src conf-space
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
#+end_src