DeaDBeeF-Player / deadbeef

DeaDBeeF Player
https://deadbeef.sourceforge.io/
Other
1.64k stars 178 forks source link

Shuffle and repeat mode are spontaneously changed #2308

Closed remcohaszing closed 4 years ago

remcohaszing commented 4 years ago

Steps to reproduce the problem

What's going on? Describe the problem in as much detail as possible.

At some point both Shuffle and Repeat are changed to random values. The results vary from a song being repeated to random songs being played next. Sometimes this happens after one song, and sometimes only after playing several albums. This does affect me on a daily basis.

Information about the software:

Deadbeef version: 1.8.3-alpha.1 (https://launchpad.net/~alex-p/+archive/ubuntu/deadbeef) OS: Pop!_OS 19.10

Oleksiy-Yakovenko commented 4 years ago

I'm in doubt that you're using the version 1.8.3-alpha1, since the PPA you linked does not list it.

remcohaszing commented 4 years ago

That’s weird. The about page shows it’s version 1.8.3-alpha1, but the package version is 1.8.2+git8777-3233cb7a-1ppa1~eoan1.

image

$ dpkg -l | grep deadbeef 
ii  deadbeef                                         1.8.2+git8777-3233cb7a-1ppa1~eoan1                               amd64        ultimate music player for GNU/Linux systems
ii  deadbeef-gtk3                                    1.8.2+git8777-3233cb7a-1ppa1~eoan1                               amd64        GTK3 interface to DeaDBeeF
ii  deadbeef-mpris2-plugin                           1.12+git20190820-1ppa1~disco1                                    amd64        MPRIS

I did update this weekend though. I first encountered the issue on 1.8.2, but today (version 1.8.3) the issue appears to have gotten even worse (shuffle and repeat are changed more frequently). This might be a coincidence of course, since the issue appears randomly.

Oleksiy-Yakovenko commented 4 years ago

Do the modes literally change in the menus to something you didn't select?

remcohaszing commented 4 years ago

I mostly run deadbeef in the background. When I notice, I check what's going on by opening deadbeef, then the menu and notice the values have changed there.

JakeSFR commented 4 years ago

I have 'Shuffle' set to 'Off' and 'Repeat' to 'All Tracks', but occasionally 'Repeat' goes back to 'Off'. I wasn't able to pinpoint what triggers it, though...

laichiaheng commented 4 years ago

2306 Same here.

$ LANG=C pacman -Qi deadbeef
Name            : deadbeef-git
Version         : r8785.f381dde34-1
Description     : A GTK+ audio player for GNU/Linux (devel branch)
Architecture    : x86_64
URL             : http://deadbeef.sourceforge.net
Licenses        : GPL2
Groups          : None
Provides        : deadbeef
Depends On      : alsa-lib  desktop-file-utils  hicolor-icon-theme  jansson
Optional Deps   : gtk2: for the GTK2 interface [installed]
                  gtk3: for the GTK3 interface [installed]
                  libsamplerate: for dsp_libsrc plugin (resampler) [installed]
                  libsm: optional dependency for gtkui session client support [installed]
                  libice: optional dependency for gtkui session client support [installed]
                  alsa-lib: ALSA support [installed]
                  alsa-oss: for OSS output plugin [installed]
                  libvorbis: for ogg vorbis plugin [installed]
                  libogg: for ogg vorbis plugin [installed]
                  libmad: for mp3 plugin (mpeg1,2 layers1,2,3) [installed]
                  flac: for flac plugin [installed]
                  curl: for last.fm, vfs_curl (shoutcast/icecast), artwork plugins [installed]
                  imlib2: for artwork plugin [installed]
                  wavpack: for wavpack plugin [installed]
                  libsndfile: for sndfile plugin [installed]
                  libcdio: for cd audio plugin [installed]
                  libcddb: for cd audio plugin [installed]
                  faad2: for AAC plugin [installed]
                  dbus: for notification daemon support (OSD current song notifications) [installed]
                  pulseaudio: for PulseAudio output plugin [installed]
                  libx11: for global hotkeys plugin [installed]
                  zlib: for Audio Overload plugin (psf, psf2, etc), GME (for vgz) [installed]
                  libsidplay: for SID player plugin [installed]
                  yasm: required to build assembly portions of ffap plugin [installed]
                  libzip: for vfs_zip plugin [installed]
                  ffmpeg: for ffmpeg plugin [installed]
Required By     : deadbeef-mpris2-plugin
Optional For    : None
Conflicts With  : deadbeef
Replaces        : None
Installed Size  : 11.23 MiB
Packager        : Unknown Packager
Build Date      : 
Install Date    : 
Install Reason  : Explicitly installed
Install Script  : Yes
Validated By    : None
Oleksiy-Yakovenko commented 4 years ago

@laichiaheng ok, marking the other one as duplicate then, since this case is much better explained.

Oleksiy-Yakovenko commented 4 years ago

Do you have any additional plugins installed? Can you provide startup log of deadbeef to see which plugins may be there? I might have changed some API, and maybe a 3rd party plugin is using it. Other than that I'm out of ideas for now, and can't repro on mac or linux.

JakeSFR commented 4 years ago

As for me, I have some extra plugins, but I was just able to repro it a few times on a pristine, static build with fresh config (the only thing I altered was disabling "Resume previous session on startup").

In addition to "Repeat" changing from "All Tracks" to "Off", I also encountered "Shuffle" changing from "Off" to "Random Tracks" a couple of times.

Unfortunately, I still can't provide a reliable way to reproduce it. What I did was basically:

  1. Adding some (the more the better?) tracks to the Default playlist,
  2. Clicking 'Next' button multiple times and/or some random tracks,
  3. Sometimes removing one/few/all tracks from the playlist here and there and/or adding a bunch of new ones,
  4. Closing and re-opening DB,
  5. Going back to 2 (not using "Play" button to resume, only "Next").

And, sporadically, after restarting DB, the 'playback.loop' or 'playback.order' in config file changes from 0 to something else. But, at this very point, the relevant options in GUI are not changed yet - it requires another restart.

laichiaheng commented 4 years ago

I only have installed the deadbeef-mpris2-plugin, but it also happens if I have removed it.

starting deadbeef devel
server_start
searching for GUI plugins in /home/laichiaheng/.local/lib64/deadbeef
searching for GUI plugins in /home/laichiaheng/.local/lib/deadbeef
searching for GUI plugins in /usr/lib/deadbeef
load_plugin_dir /usr/lib/deadbeef: scandir found 54 files
found gui plugin ddb_gui_GTK2.so
added GTK2 gui plugin
found gui plugin ddb_gui_GTK3.so
added GTK3 gui plugin
load gui plugin
checking GUI plugin: GTK2
checking GUI plugin: GTK3
found selected GUI plugin: GTK3
loading plugin /usr/lib/deadbeef/ddb_gui_GTK3.so
loading plugins from /home/laichiaheng/.local/lib64/deadbeef
loading plugins from /home/laichiaheng/.local/lib/deadbeef
loading plugins from /usr/lib/deadbeef
load_plugin_dir /usr/lib/deadbeef: scandir found 54 files
loading plugin /usr/lib/deadbeef/aac.so
loading plugin /usr/lib/deadbeef/adplug.so
loading plugin /usr/lib/deadbeef/alac.so
loading plugin /usr/lib/deadbeef/alsa.so
loading plugin /usr/lib/deadbeef/artwork.so
loading plugin /usr/lib/deadbeef/cdda.so
loading plugin /usr/lib/deadbeef/converter.so
loading plugin /usr/lib/deadbeef/converter_gtk2.so
loading plugin /usr/lib/deadbeef/converter_gtk3.so
loading plugin /usr/lib/deadbeef/dca.so
loading plugin /usr/lib/deadbeef/ddb_dumb.so
loading plugin /usr/lib/deadbeef/ddb_mono2stereo.so
loading plugin /usr/lib/deadbeef/ddb_shn.so
loading plugin /usr/lib/deadbeef/dsp_libsrc.so
loading plugin /usr/lib/deadbeef/ffap.so
loading plugin /usr/lib/deadbeef/ffmpeg.so
loading plugin /usr/lib/deadbeef/flac.so
loading plugin /usr/lib/deadbeef/gme.so
loading plugin /usr/lib/deadbeef/hotkeys.so
loading plugin /usr/lib/deadbeef/in_sc68.so
loading plugin /usr/lib/deadbeef/lastfm.so
loading plugin /usr/lib/deadbeef/m3u.so
loading plugin /usr/lib/deadbeef/mms.so
loading plugin /usr/lib/deadbeef/mp3.so
loading plugin /usr/lib/deadbeef/mpris.so
loading plugin /usr/lib/deadbeef/musepack.so
loading plugin /usr/lib/deadbeef/notify.so
loading plugin /usr/lib/deadbeef/nullout.so
loading plugin /usr/lib/deadbeef/oss.so
loading plugin /usr/lib/deadbeef/pltbrowser_gtk2.so
loading plugin /usr/lib/deadbeef/pltbrowser_gtk3.so
loading plugin /usr/lib/deadbeef/psf.so
loading plugin /usr/lib/deadbeef/pulse.so
loading plugin /usr/lib/deadbeef/rg_scanner.so
loading plugin /usr/lib/deadbeef/shellexec.so
loading plugin /usr/lib/deadbeef/shellexecui_gtk2.so
loading plugin /usr/lib/deadbeef/shellexecui_gtk3.so
loading plugin /usr/lib/deadbeef/sid.so
loading plugin /usr/lib/deadbeef/sndfile.so
loading plugin /usr/lib/deadbeef/supereq.so
loading plugin /usr/lib/deadbeef/tta.so
loading plugin /usr/lib/deadbeef/vfs_curl.so
loading plugin /usr/lib/deadbeef/vfs_zip.so
dlopen error: libzip.so.5: 無法開啟共用目的檔: 沒有此一檔案或目錄
trying /usr/lib/deadbeef/vfs_zip.fallback.so...
plugin vfs_zip.so not found or failed to load
loading plugin /usr/lib/deadbeef/vorbis.so
loading plugin /usr/lib/deadbeef/vtx.so
loading plugin /usr/lib/deadbeef/wavpack.so
loading plugin /usr/lib/deadbeef/wildmidi.so
loading plugin /usr/lib/deadbeef/wma.so
starting plugin GTK3 user interface
starting plugin AAC player
starting plugin Adplug player
starting plugin ALAC player
starting plugin ALSA output plugin
starting plugin Album Artwork
starting plugin Audio CD player
starting plugin Converter
starting plugin Converter GTK2 UI
starting plugin Converter GTK3 UI
starting plugin dts decoder
starting plugin DUMB module player
starting plugin Mono to stereo
starting plugin Shorten player
starting plugin Resampler (Secret Rabbit Code)
starting plugin Monkey's Audio (APE) decoder
starting plugin FLAC decoder
starting plugin Game-Music-Emu player
starting plugin Hotkey manager
starting plugin SC68 player (Atari ST SNDH YM2149)
starting plugin last.fm scrobbler
starting plugin M3U and PLS support
starting plugin mms vfs
starting plugin MP3 player
starting plugin MPRISv2 plugin
starting plugin MusePack decoder
starting plugin OSD Notify
starting plugin Null output plugin
starting plugin OSS output plugin
starting plugin Playlist browser GTK2
starting plugin Playlist browser GTK3
starting plugin PSF player using Audio Overload SDK
starting plugin PulseAudio output plugin
starting plugin ReplayGain Scanner
starting plugin Shell commands
starting plugin Shellexec GTK2 UI
starting plugin Shellexec GTK3 UI
starting plugin SID player
starting plugin WAV/PCM player
starting plugin SuperEQ
starting plugin tta decoder
starting plugin cURL vfs
starting plugin Ogg Vorbis decoder
starting plugin VTX player
starting plugin WavPack decoder
starting plugin WildMidi player
starting plugin WMA player
starting plugin stdio vfs
starting plugin FFMPEG audio player
selected output plugin: PulseAudio output plugin
plugin Converter GTK2 UI failed to connect to dependencies, deactivated.
plugin Playlist browser GTK2 failed to connect to dependencies, deactivated.
plugin Shellexec GTK2 UI failed to connect to dependencies, deactivated.
resume: track 1757 pos 143.407043 playlist 0
Oleksiy-Yakovenko commented 4 years ago

@JakeSFR I think this might be the key

disabling "Resume previous session on startup"

Oleksiy-Yakovenko commented 4 years ago

Should be fixed now

laichiaheng commented 4 years ago

Hasn't it been merged to the master branch? I still have this issue.

Oleksiy-Yakovenko commented 4 years ago

@laichiaheng I was fixing the issue that I was able to reproduce (somewhat) as described by @JakeSFR I'm still not 100% sure that your issue is the same.

JakeSFR commented 4 years ago

Should be fixed now

Thanks! So far, so good, can't repro it anymore. :)

@laichiaheng I was fixing the issue that I was able to reproduce (somewhat) as described by @JakeSFR I'm still not 100% sure that your issue is the same.

I also think it's something else. I kinda can reproduce what's described here (https://github.com/DeaDBeeF-Player/deadbeef/issues/2306). Not sure how it's supposed to work, though, since I've never been using shuffling of any kind.

Anyway, when I have "Shuffle" set to "Album" and 4 albums added to playlist:

  1. After double-clicking the first track of the first album and then click "Next", DB usually jumps to the first track of some other, random album. Only sometimes it jumps to the next track of the same album.
  2. Clicking "Next" again and again plays subequent tracks of that album until it ends.
  3. But if I manually double-click any track (even the one that is currently playing), then clicking "Next" jumps to a different album again.

I suppose that when I double-click an item and then "Next", it should always jump to the next track (unless it was the last track in that album), not to a different album.

laichiaheng commented 4 years ago

Should be fixed now

Thanks! So far, so good, can't repro it anymore. :)

@laichiaheng I was fixing the issue that I was able to reproduce (somewhat) as described by @JakeSFR I'm still not 100% sure that your issue is the same.

I also think it's something else. I kinda can reproduce what's described here (#2306). Not sure how it's supposed to work, though, since I've never been using shuffling of any kind.

Anyway, when I have "Shuffle" set to "Album" and 4 albums added to playlist:

1. After double-clicking the first track of the first album and then click "Next", DB usually jumps to the first track of some other, random album.
   Only sometimes it jumps to the next track of the same album.

2. Clicking "Next" again and again plays subequent tracks of that album until it ends.

3. But if I manually double-click any track (even the one that is currently playing), then clicking "Next" jumps to a different album again.

I suppose that when I double-click an item and then "Next", it should always jump to the next track (unless it was the last track in that album), not to a different album.

Yes, it is what I'm talking about. @Alexey-Yakovenko Do we need to re-open that issue, or just discuss it here?

Oleksiy-Yakovenko commented 4 years ago

@laichiaheng I reopened the issue, and will copy the repro steps there

cmm commented 2 years ago

The issue, as described, still happens for me -- shuffle and repeat modes are sometimes reset to random values. I think it happens when the dock station (which is where the audio device is connected by USB) plays up, which it does at random points for unknown reasons. DB 1.9.1, Linux, Gnome 42, PA driver, the only 3rd-party plugin is mpris2.

Oleksiy-Yakovenko commented 2 years ago

@cmm please post full log. It's the only thing that can help to understand whether it's the same issue or different. Also please notice, that the issue you're commenting on has been closed in 2020, and neither me nor the original reporters were getting this problem since then -- so it's very possible that what you're seeing is something else.

cmm commented 2 years ago

sure, will open a new issue when it happens again

cmm commented 2 years ago

so it just happened again: the docking station glitched causing repeat mode to change by itself from "Off" to "All Tracks". there is nothing relevant in the log (it only has the Deadbeef start-up messages from 5 days ago). should I enable some debug switch somewhere?

Oleksiy-Yakovenko commented 2 years ago

Hmm could this be caused by MPRIS plugin then? It does have such functionality, and it can change shuffle and repeat modes.

Oleksiy-Yakovenko commented 2 years ago

So, here's what you can do:

  1. Build mrpis plugin locally, adding a -DMPRISDEBUG flag to CFLAGS. This can be done by running configure like so: `CFLAGS="-DMPRISDEBUG" ./configure`
  2. Install the mpris plugin, and run deadbeef in a terminal
  3. try to reproduce the bug that you are reporting
  4. look for the messages in terminal, such as Set property call on Player interface. sender: ..., propertyName: LoopStatus/Shuffle or status is ...

This may help to see whether MPRIS plugin is changing those settings. Although even if MPRIS does this, it doesn't mean there would be an easy fix. It can mean there's a bug in the MPRIS server.

Oleksiy-Yakovenko commented 2 years ago

In the latest version of MPRIS plugin, it is now possible to enable logging without recompiling. Download here: http://sourceforge.net/projects/deadbeef/files/plugins/x86_64/mpris-f0e5afc-linux-x86_64.zip/download

Oleksiy-Yakovenko commented 2 years ago

I have also added an option to MPRIS to disable shuffle and repeat controls. Hope this helps with testing.

cmm commented 2 years ago

I cannot really download binaries off SF, I'm running NixOS and it's weird that way :) But looks like presently I'm de-facto the DeaDBeeF maintainer in Nixpkgs because nobody else cares, and Nixpkgs is easy to hack on, so I'll run the latest master version of DeaDBeeF & MPRIS plugin and will keep you updated if I see anything interesting.

As an aside, currently Nixpkgs packages the MPRIS plugin from this fork and not yours: https://github.com/Serranya/deadbeef-mpris2-plugin. Which could explain a thing or two in itself, I suppose. I'll open an issue.

Oleksiy-Yakovenko commented 2 years ago

I cannot really download binaries off SF, I'm running NixOS and it's weird that way :)

Not sure what problem are you having, but as long as the SF is available in your country, and you can unpack a zip and run a binary -- there should not be any problems on most linux distros. Is NixOS somewhat special, and doesn't run standard linux binaries?

Oleksiy-Yakovenko commented 2 years ago

As an aside, currently Nixpkgs packages the MPRIS plugin from this fork and not yours: https://github.com/Serranya/deadbeef-mpris2-plugin. Which could explain a thing of two in itself, I suppose. I'll open an issue.

We moved it to my github org quite recently (weeks ago), because the original developer has abandoned it, and one contributor wanted to add support for the new artwork plugin.

cmm commented 2 years ago

Is NixOS somewhat special, and doesn't run standard linux binaries?

Yes, by design: it does not observe the FHS so it does not have the system libraries in the normal places, and also uses a patched ld.so. Normal Linux dynamically-linked binaries do not run out of the box. There are ways around that, but it's always saner to build from source.

We moved it to my github org quite recently (weeks ago), because the original developer has abandoned it

Gotcha, this does not call for an issue then, thanks!