mpc 를 사용한 mpd 조작.

mpd 를 mpc 로만 사용하기란 무리가 있다. 하지만, timer 기능을 이용하기 위해서는 별다른 방법이 없었다.

mpc 는 간단히 설치할 수 있다.

sudo apt install mpc

그리고 그냥 mpc 를 실행시켜주면 된다.

잠시 타이머 기능에 관해 언급하자면 이렇다.

mpd 서버는 systemd 로 실행되고, 만약 음악이 재생되는 도중 서버가 셧다운되면, 다시 켜졌을 때 음악이 그 부분부터 재생되게끔 설정되어 있다. 물론, 이걸 이렇게 안되게 설정을 할 수도 있다.
mpd.conf 에서 restore_paused "yes" 로 해주면 된다.

mpd 설정은 그대로 놔두고, 시스템 전원을 끌 때만(즉, poweroff 시) mpd 재생을 멈춤으로 바꿀 수 있는 방법은 없을까?
다시 말하면, reboot 시에는 그대로 mpd 가 자동 재생되게 놔두고, Poweroff 를 명시했을 경우에만 mpd 를 멈추게 하고 싶다! 는 얘기가 되겠다.

이건 이럴 때 필요하다.
밤에 mpd 를 듣다가, sudo shutdown -P +45 등으로 종료 타이머를 걸었다. 물론, 앰프에는 앰프대로 따로 타이머를 걸어둔다.
종료에는 전혀 문제가 없다.
문제는 그 다음 날 발생한다.

다시 서버를 켰다. 음악을 들을 일은 없었으므로 앰프는 켜지 않았다.
그런데… mpd 는 서버를 끄기 전에 재생 중이었으므로, 재시작되어도 그 상태를 유지한다. 재생목록이 무지하게 길거나 반복이 설정되어 있는 경우, 내가 전혀 인지하지도 못하는 사이 계속 mpd 는 자기 일을 하게 된다.

이걸 막아보고자 이런 노력을 하게 됐다. mpd 에 타이머가 있다면 간단한 일인데, 없으니 강제로 만드는 수밖에.

아무튼, 리눅스 세계에서, 못할 일은 없다. (물론, 가능한 일들을 꿈꿔야 하겠지만.)
타이머 자체에 대한 자세한 사항은 다른 글에 적어놨다.


문제는 mpc 인데, 그냥 실행시키니 오류가 발생한다.

$ mpc
mpd error: you don't have permission for "status"

man page 를 열심히 읽어봤으면 간단히 풀릴 문젠데.. 구글부터 찾아본게 문제다. 사실, 잘 모르는 상태에선 man page 가 그다지 도움이 안되기도 하지만..

오류 메시지의 원흉은 mpd 에 password 가 설정돼 있기 때문이다.
man page 에는 이렇게 나와있다.

--host=HOST
          The  host  to  connect  to;  if not given, the value of the environment variable MPD_HOST is checked before defaulting to localhost.  This default can be changed at compile-time.
          To use a password, provide a value of the form "password@host".
          If you specify an absolute path, mpc attempts a connection via Unix Domain Socket.

따라서, Password 를 사용하려면 다음과 같이 실행해야 한다.

mpc --host=password@localhost
mpc --host=password@/run/mpd/socket
mpc --host=password@ip
MPD_HOST=password@localhost mpc
MPD_HOST=password@/run/mpd/socket mpc
MPD_HOST=password@ip mpc

위 6가지 중 어떤 방법으로도 가능하다.
MPD_HOST 를 사용하는 방법은 Mr. Marier 에게 도움을 받았다.

mpc 간단한 명령은 play, pause, stop 등인데, 그냥 뒤에 붙여주면 된다.

mpc --host=password@/run/mpd/socket play
mpc --host=password@/run/mpd/socket pause
mpc --host=password@/run/mpd/socket stop
mpc --host=password@/run/mpd/socket prev
mpc --host=password@/run/mpd/socket next
....

끝!

안녕하세요. 글 남겨주셔서 고맙습니다.