Hyperchroma / hyperchroma

Desktop music player that animates music and images into real-time music videos
https://hyperchroma.app
34 stars 2 forks source link

Gapless/seamless playback not supported #2

Open tyzoid opened 2 years ago

tyzoid commented 2 years ago

Describe the bug Some tracks are designed to be played without a pause between them, i.e. the sound flows seamlessly between the end of one track and the start of the next. Unfortunately, hyperchroma has a gap between tracks while it loads the next track.

To Reproduce

  1. Add two tracks into the queue (tracks should be designed for seamless playback)
    • Example: Adventure, by Madeon. First three tracks are seamless: Isometric + You're On + Ok
    • Example: Dysphoria, by Crywolf. Stomach It (the 5:46 version) + Interlude - A Ghost in the Wings
  2. Play the track

Expected behavior No gap should exist between adjacent tracks.

Screenshots Video Example: https://user-images.githubusercontent.com/974758/143723520-19f114bb-d231-468d-b8f3-01a468080bed.mp4

Additional Information (please complete the following information):

Additional context System Information:

OS: Arch Linux x86_64 
Host: Inspiron 5579 
Kernel: 5.15.2-arch1-1 
Resolution: 1920x1080 
DE: Xfce 4.16 
WM: Xfwm4 
WM Theme: Materia-light 
Theme: Materia-light [GTK2/3] 
Icons: Flat-Remix-Blue-Light [GTK2/3]
CPU: Intel i5-8250U (8) @ 3.400GHz 
GPU: Intel UHD Graphics 620 
aeroheim commented 2 years ago

Thanks for filing this! This is probably going to sit in the backlog for some time, but I would like to support this.

Preloading the next track shouldn't be too much work, but it looks like true gapless playback would be quite difficult due to many factors (e.g encoder padding, compression artifacts, gapless metadata support).

I will probably implement preloading when I get around to this. True gapless playback would be much lower priority due to the amount of work required.