You are not logged in.

#1 2009-01-28 20:40:35

luke
Member
From: US
Registered: 2004-06-22
Posts: 54

mpd won't resume in the middle of a track

When I stop mpd (/etc/rc.d/mpd stop) the state file (~/.mpd/mpd.state) is created/updated and the contents look to be correct. However, when I start mpd (/etc/rc.d/mpd start) mpd won't start at the same place within the track that is indicated by the state file. The correct track is played, it just always starts at the very beginning of it.

Does anyone know what may cause this? I've looked around but nothing I've tried (re-install, re-do the config from scratch, check permissions) has helped. Oh, and I'm pretty sure this started happening with the last update to 14.1.

Thanks in advance.

Offline

#2 2009-01-28 21:18:50

sm4tik
Member
From: Finland, Jyväskylä
Registered: 2006-11-05
Posts: 248
Website

Re: mpd won't resume in the middle of a track

I've noticed the same thing. It happened some time before the 0.14 release (I'm using git) so I think it's just the way latest mpd handles resuming. I'm not sure though so if you find any additional info, please let me know.

Offline

#3 2009-01-29 01:17:57

vogt
Member
From: Toronto, Canada
Registered: 2006-11-25
Posts: 389

Re: mpd won't resume in the middle of a track

For me (git from 20090115), the resume is sometimes in the spot it left off.

Offline

#4 2009-01-29 07:40:34

Rasi
Member
From: Germany
Registered: 2007-08-14
Posts: 1,914
Website

Re: mpd won't resume in the middle of a track

works fine here...

[root@freebox:/home/carnager]# mpc play
Afghan Whigs - step into the light
[playing] #5/19   0:00/3:40 (0%)
volume: 68%   repeat: off   random: off
[root@freebox:/home/carnager]# /etc/rc.d/mpd stop
:: Stopping Music Player Daemon                                                                      [DONE]
[root@freebox:/home/carnager]# /etc/rc.d/mpd start
:: Starting Music Player Daemon                                                                      [DONE]
[root@freebox:/home/carnager]# mpc
Afghan Whigs - step into the light
[playing] #5/19   0:09/3:40 (4%)
volume: 68%   repeat: off   random: off
[root@freebox:/home/carnager]#

Last edited by Rasi (2009-01-29 07:40:57)


He hoped and prayed that there wasn't an afterlife. Then he realized there was a contradiction involved here and merely hoped that there wasn't an afterlife.

Douglas Adams

Offline

#5 2009-01-29 13:11:02

luke
Member
From: US
Registered: 2004-06-22
Posts: 54

Re: mpd won't resume in the middle of a track

Rasi: would you mind posting your mpd.conf?

Offline

#6 2009-01-29 16:36:03

Nepherte
Member
From: Singapore
Registered: 2008-09-09
Posts: 427

Re: mpd won't resume in the middle of a track

It works for me too. I'm using 0.14.1-3. Here's my ~/.mpdconf file (I don't use the system wide one):

# An example configuration file for MPD
# See the mpd.conf man page for a more detailed description of each parameter.

# Required files and directories ##############################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database.
#
music_directory "~/Muziek/"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use 
# playlist files not created by the server but only if they are in the MPD
# format.
#
playlist_directory "~/.mpd/playlists/"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the 
# server is not up.
#
db_file "~/.mpd/mpd.db"
# 
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
log_file "~/.mpd/mpd.log"
error_file "~/.mpd/mpd.error"
###############################################################################


# Optional files ##############################################################
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default.
#
pid_file "~/.mpd/mpd.pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default.
#
state_file "~/.mpd/mpdstate"
#
###############################################################################


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as, if set. MPD should
# never run as root and you may use this setting to make MPD change its user 
# id after initialization. Do not use this setting if you start MPD as an
# unprivileged user. This setting is disabled by default, and the server will
# run as root.
#
user "bart"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon.
#
# For network
#bind_to_address        "any"
#
# And for Unix Socket
#bind_to_address        "~/.mpd/socket"
#
# This setting is the port that is desired for the daemon to get assigned to.
#
port                "6600"
#
# This setting controls the type of information which is logged. Available 
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
# argument is recommended for troubleshooting, though can quickly stretch
# available resources on limited hardware storage.
#
#log_level            "default"
#
# If you have a problem with your MP3s ending abruptly it is recommended that 
# you set this argument to "no" to attempt to fix the problem. If this solves
# the problem, it is highly recommended to fix the MP3 files with vbrfix
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
# point gapless MP3 playback can be enabled.
#
#gapless_mp3_playback            "yes"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists    "no"
#
# This setting defines a list of tag types that will be extracted during the 
# audio file discovery process. Optionally, 'comment' can be added to this
# list.
#
#metadata_to_use    "artist,album,title,track,name,genre,date,composer,performer,disc"
#
###############################################################################

# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following 
# symbolic links outside of the configured #music_directory "path_to_your_music_collection"
#
follow_outside_symlinks    "yes"
#
# If this setting is set to "yes, MPD will discover audio files by following
# symbolic links inside of the configured #music_directory "path_to_your_music_collection"
#
follow_inside_symlinks        "yes"
#
###############################################################################

# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled        "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network.
#
#zeroconf_name            "Music Player"
#
###############################################################################


# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# can setting can be specified multiple times for different password profiles.
#
#password                        "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in. 
#
#default_permissions             "read,add,control,admin"
#
###############################################################################


# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple 
# audio outputs at the same time, through multiple audio_output settings 
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of 
# other audio outputs.
#
# An example of an ALSA output:
#
audio_output {
    type            "alsa"
    name            "My ALSA Device"
#    device            "hw:0,0"    # optional
#    format            "44100:16:2"    # optional
}
#
# An example of an OSS output:
#
#audio_output {
#    type            "oss"
#    name            "My OSS Device"
#    device            "/dev/dsp"    # optional
#    format            "44100:16:2"    # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
#    type            "shout"
#    encoding        "ogg"            # optional
#    name            "My Shout Stream"
#    host            "localhost"
#    port            "8000"
#    mount            "/mpd.ogg"
#    password        "hackme"
#    quality            "5.0"
#    bitrate            "128"
#    format            "44100:16:1"
#    protocol        "icecast2"        # optional
#    user            "source"        # optional
#    description        "My Stream Description"    # optional
#    genre            "jazz"            # optional
#    public            "no"            # optional
#    timeout            "2"            # optional
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
#audio_output {
#    type            "pulse"
#    name            "My Pulse Output"
#    server            "remote_server"
#    sink            "remote_server_sink"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
#    type            "null"
#    name            "My Null Output"
#}
#
# This setting will change all decoded audio to be converted to the specified
# format before being passed to the audio outputs. By default, this setting is
# disabled.
#
#audio_output_format        "44100:16:2"
#
# If MPD has been compiled with libsamplerate support, this setting specifies 
# the sample rate converter to use.  Possible values can be found in the 
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter        "Fastest Sinc Interpolator"
#
###############################################################################


# Volume control mixer ########################################################
#
# MPD has limited volume controls, to use them pick one below. If one is not
# specified it may be autodetected at startup, depending on the dependencies
# which were compiled into the server.
#
# An example for controlling an ALSA mixer:
#
mixer_type            "alsa"
mixer_device            "default"
mixer_control            "Master"
#
# An example for controlling an OSS mixer:
#
#mixer_type            "oss"
#mixer_device            "/dev/mixer"
#mixer_control            "PCM"
#
# This example is a general volume control mixer, it is used to adjust the 
# volume of the audio sent to the audio output, and will work with all outputs.
#
#mixer_type            "software"
#
###############################################################################


# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "album" or "track". See <http://www.replaygain.org> for more
# details. By default this setting is disabled.
#
#replaygain            "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp        "0"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has 
# equal "loudness".
#
#volume_normalization        "no"
#
###############################################################################


# MPD Internal Buffering ######################################################
#
# This setting adjusts the size of internal decoded audio buffering. Changing
# this may have undesired effects. Don't change this if you don't know what you
# are doing.
#
#audio_buffer_size        "2048"
#
# This setting controls the percentage of the buffer which is filled before 
# beginning to play. Increasing this reduces the chance of audio file skipping, 
# at the cost of increased time prior to audio playback.
#
#buffer_before_play        "10%"
#
###############################################################################


# HTTP Streaming Proxy ########################################################
#
# This setting specifies the HTTP proxy to use for playing HTTP streams. By
# default, these settings will be disabled.
#
#http_proxy_host        "proxy.isp.com"
#http_proxy_port        "8080"
#http_proxy_user        "user"
#http_proxy_password        "password"
#
###############################################################################


# Resource Limitations ########################################################
#
# These settings are various limitations to prevent MPD from using too many
# resources. Generally, these settings should be minimized to prevent security
# risks, depending on the operating resources.
#
#connection_timeout        "60"
#max_connections        "10"
#max_playlist_length        "16384"
#max_command_list_size        "2048"
#max_output_buffer_size        "8192"
#
###############################################################################


# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you 
# may need to modify this setting. After modification of this setting mpd 
# --create-db must be run to change the database.
#
#filesystem_charset        "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
#id3v1_encoding            "ISO-8859-1"
#
###############################################################################

Offline

#7 2009-01-29 22:43:51

sm4tik
Member
From: Finland, Jyväskylä
Registered: 2006-11-05
Posts: 248
Website

Re: mpd won't resume in the middle of a track

Nepherte wrote:

It works for me too. I'm using 0.14.1-3. Here's my ~/.mpdconf file (I don't use the system wide one):

Do you start mpd at all at boot and do you start it as root? I figured starting mpd, stopping it and then starting it again all as a normal user, resumes playing from the middle of the song. When starting as user, I get this

sm4tik $ mpd                                                                      ~
cannot init supplementary groups of user "sm4tik": Operation not permitted

which is predictable when having a user defined in the config file, but the wierd thing is that this way mpd works as it's supposed to, but not when starting the daemon as root and not getting any errors..? hmm

Last edited by sm4tik (2009-01-29 22:44:22)

Offline

#8 2009-01-29 23:18:16

vogt
Member
From: Toronto, Canada
Registered: 2006-11-25
Posts: 389

Re: mpd won't resume in the middle of a track

Try this script to restart mpd repeatedly:

#!/bin/bash

log=mpdstart

while true; do
        sleep 2 &&
        mpd --kill
        sleep 0.2 &&
        mpd
        echo "test (total)" >> $log
        sleep 1 && mpc | grep "0:0[0-3]" | sed -e "s/.*.0:0.*/bad/" >> $log
done

And then a < mpdstart | sort | uniq -c shows how many times it started a new song (pick a decently long one, and you can be sure that the another song started very few, if any times;

In about 10 minutes of that stuttery testing, I get:
      10 bad
    150 test (total)

This is with a 280k state file though.

With just a single song playlist, I get:
      7 bad
     56 test (total)

So it seems pretty independent of the playlist size; how about the rest of you?

EDIT: And I never manage to get more than say, 2 minutes into the song.

EDIT2: Graphed; out of ~25 restart failures, 546 trials, the sort of distribution of failures is:

grphij4.th.png

Last edited by vogt (2009-01-30 00:41:59)

Offline

#9 2009-01-30 09:41:27

Nepherte
Member
From: Singapore
Registered: 2008-09-09
Posts: 427

Re: mpd won't resume in the middle of a track

sm4tik wrote:

Do you start mpd at all at boot and do you start it as root? I figured starting mpd, stopping it and then starting it again all as a normal user, resumes playing from the middle of the song. When starting as user, I get this

sm4tik $ mpd                                                                      ~
cannot init supplementary groups of user "sm4tik": Operation not permitted

which is predictable when having a user defined in the config file, but the wierd thing is that this way mpd works as it's supposed to, but not when starting the daemon as root and not getting any errors..? hmm

I never start mpd when booting. Just when I feel like listening to music and I always run it as a user. Btw I do get the same init supplementary groups error, but that's not something to worry about, mpd will still work the way it should be.

Offline

#10 2009-01-30 10:11:57

Rasi
Member
From: Germany
Registered: 2007-08-14
Posts: 1,914
Website

Re: mpd won't resume in the middle of a track

Just for clarification:

If you want to start mpd as a normal user you should copy /etc/mpd.conf to ~/.mpdconf and REMOVE the user line from that file.


He hoped and prayed that there wasn't an afterlife. Then he realized there was a contradiction involved here and merely hoped that there wasn't an afterlife.

Douglas Adams

Offline

#11 2009-01-30 11:36:02

sm4tik
Member
From: Finland, Jyväskylä
Registered: 2006-11-05
Posts: 248
Website

Re: mpd won't resume in the middle of a track

Rasi wrote:

Just for clarification:

If you want to start mpd as a normal user you should copy /etc/mpd.conf to ~/.mpdconf and REMOVE the user line from that file.

Good to clear things up to prevent further unnecessary questions.

@All ..so, any ideas why it's working when started as a normal user, but not when run (the daemon script or not) as root?

Offline

#12 2009-01-30 15:14:04

luke
Member
From: US
Registered: 2004-06-22
Posts: 54

Re: mpd won't resume in the middle of a track

Well, I have had some success with this, but I'm not sure why, and it's still not completely right.

I took Nepherte's config above and changed my setup to match. The only difference was the placement of my (empty) playlists directory and the name of my state file. My state file was named ~/.mpd/mpd.state, so I moved it to ~/.mpd/mpdstate. (I also moved the playlist directory into the ~/.mpd directory just to be exactly the same as Nepherte, but I don't think that has anything to do with it.)

Now, for whatever reason, mpd will resume in the middle of a track most times that I do:

/etc/rc.d/mpd stop 
/etc/rc.d/mpd start

After reading everyone else's comments, I'm thinking that I should try moving the config file from /etc/mpd.conf to ~/.mpdconf. If I do that, can I have mpd start at boot?

Oh, and thanks for everyone's help!

Offline

#13 2009-01-31 03:09:28

vogt
Member
From: Toronto, Canada
Registered: 2006-11-25
Posts: 389

Re: mpd won't resume in the middle of a track

I would be quite messed up if the location of the config file affected whether the resume was in the middle of the song.

If you use a ~/.mpdconf, you could then start mpd with your .xinitrc, or some other script that runs a boot; otherwise you'd have to mess around with su, to get it to run the mpd command as your user in something like /etc/rc.local

@sm4tik: I've managed to have the resume be weird, running it as a normal, unpriviledged user, with the config in ~/.mpdconf, I'm using oss4:
it doesn't seem correlated to the time that has passed, and the contents of the state (any size) file look normal before the resume doesn't find the previous position.

Offline

#14 2009-01-31 21:30:53

sm4tik
Member
From: Finland, Jyväskylä
Registered: 2006-11-05
Posts: 248
Website

Re: mpd won't resume in the middle of a track

A bit more tinkering on the subject, I realized resuming worked in all my tests as user and root when started with

$ mpd --no-daemon

I don't think this is arch related, so maybe reporting upstream would help to get rid of it wink ..not sure though but souds like something's not right in mpd itself

Last edited by sm4tik (2009-01-31 21:31:52)

Offline

#15 2009-02-03 02:06:17

sm4tik
Member
From: Finland, Jyväskylä
Registered: 2006-11-05
Posts: 248
Website

Re: mpd won't resume in the middle of a track

FTR, the latest (2009-02-02) git seems to work the way it should.

Offline

#16 2009-02-03 08:27:54

Zariel
Member
Registered: 2008-10-07
Posts: 446

Re: mpd won't resume in the middle of a track

Hm, didnt for me. mpd --kill && mpd just went to the next track

Offline

Board footer

Powered by FluxBB