Strawberry is a music player and music collection organizer.

Overview

🍓 Strawberry Music Player Build Status PayPal Patreon

Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles. It's written in C++ using the Qt toolkit.

Browse

Resources:

‼️ Opening an issue:

  • Search for the issue to see if it is already solved, or if there is an open issue for it already. If there is an open issue already, you can comment on it if you have additional information that could be useful to us.
  • For technical problems, questions and feature requests please use our forum on https://forum.strawberrymusicplayer.org/ that is better suited for discussion. It also better allows answers from the community instead of just the developers on GitHub.

💰 Sponsoring:

The program is free software, released under GPL. If you like this program and can make use of it, consider sponsoring or donating to help fund the project. There are currently 3 options for sponsoring:

  1. GitHub Sponsors
  2. Patreon
  3. PayPal

Funding developers is a way to contribute to open source projects you appreciate, it helps developers get the resources they need, and recognize contributors working behind the scenes to make open source better for everyone.

✔️ Features:

  • Play and organize music
  • Supports WAV, FLAC, WavPack, Ogg FLAC, Ogg Vorbis, Ogg Opus, Ogg Speex, MPC, TrueAudio, AIFF, MP4, MP3, ASF and Monkey's Audio.
  • Audio CD playback
  • Native desktop notifications
  • Playlist management
  • Smart and dynamic playlists
  • Advanced audio output and device configuration for bit-perfect playback on Linux
  • Edit tags on music files
  • Fetch tags from MusicBrainz
  • Album cover art from Last.fm, Musicbrainz, Discogs, Musixmatch, Deezer, Tidal, Qobuz and Spotify
  • Song lyrics from AudD, Genius, Musixmatch, ChartLyrics, lyrics.ovh and lololyrics.com
  • Support for multiple backends
  • Audio analyzer
  • Audio equalizer
  • Transfer music to iPod, MTP or mass-storage USB player
  • Scrobbler with support for Last.fm, Libre.fm and ListenBrainz
  • Subsonic, Tidal and Qobuz streaming support

It has so far been tested to work on Linux, OpenBSD, FreeBSD, macOS and Windows.

There currently isn't any macOS developers actively working on this project, so we might not be able to help you with issues related to macOS.

Requirements

To build Strawberry from source you need the following installed on your system with the additional development packages/headers:

Optional dependencies:

Either GStreamer or VLC engine is required, but only GStreamer is fully implemented, and works best, it is therefore recommended to use GStreamer. You should also install the gstreamer plugins base and good, and optionally bad, ugly and libav.

🔧 Compiling from source

Get the code:

git clone https://github.com/strawberrymusicplayer/strawberry

Compile and install:

cd strawberry
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

To compile with Qt 6 use:

cmake .. -DBUILD_WITH_QT6=ON

🐧 Packaging status

Packaging status

Issues
  • Song ratings

    Song ratings

    Is your feature request related to a problem? Please describe.

    To allow me to prefer certain songs in my playlists, to e.g. have a list of "the best" songs and "the good" songs, some way to express such a preference on a per-song basis is needed.

    Describe the solution you'd like

    It would be great to have song ratings. I started assigning ratings to songs in the Amarok 1.4 days, and it took a lot of work to set them.

    Describe alternatives you've considered

    A possibility it to generate playlists based on my old Amarok 2 database using SQL, but that would be a lot of work.

    Additional context

    It also seems to be important for #132 to be efficient, and it is also mentioned in the example queries there.

    enhancement 
    opened by kjetilk 38
  • Strawberry has glitches while using it on mac

    Strawberry has glitches while using it on mac

    Hi, While working with Strawberry 0.6.8 on mac os 10.15.2 (imac 21.5" 4k) the GUI has a lot of glitches, i don't if this has happened with previous version of Strawberry as this is my first time using Strawberry on mac os. For example image 1, i closed a playlist and the placement of the other playlists did not display correctly until I either create a new playlist or minimize and maximize Strawberry. Image 2, I added a few songs to a playlist and the from the top the playlist does not display correctly, even when scrolling the playlist it causes these glitches. This happens randomly as i work with Strawberry. I also tried running Strawberry in "low resolution" and the same thing happens. Things that remedy the situation is if I change to another playlist and back or minimize and maximize Strawberry until it happens again.

    Image 1. https://imgur.com/ChzI1Qu Image 2. https://imgur.com/NgIIClg

    Strawberry 0.6.8 Mac OS 10.15.2 iMac 21.5 Retina 4k

    help wanted 
    opened by Master-baker 32
  • High memory usage with Qt 6.0.0

    High memory usage with Qt 6.0.0

    I'm experiencing very high memory usage with Qt 6.0.0 over time. In a few weeks the program uses almost 1 GB of memory. The only patch I have is for https://bugreports.qt.io/browse/QTBUG-89176 because without it, Qt 6.0.0 frequently crashes. Compiled with Qt 5.15.2, the program uses steadily around 200 MB. LeakSanitizer is showing no leaks (just few alsa and fontfconfig ones that have always been there, but nothing related to my code or Qt). I can reproduce the same on both openSUSE LP 15.2 and tumbleweed. Using Valgrind, I can see some leaks, but I suspect they are false-positives, and I see the same thing with Qt 5.15.2. I also have problems with Valgrind crashing. I normally use LeakSanitizer because Valgrind is so slow. I suspect that Qt 6 is allocating some memory that isn't freed but is still ref'ed and free'ed on exit. Anyone else seen this? The program only uses base, but all modules. I want to open a bug report to Qt, but I don't think I have enough to go on.

    opened by jonaski 27
  • strawberry crash Version 0.5.2-53-g384209b

    strawberry crash Version 0.5.2-53-g384209b

    Application: strawberry (strawberry), signal: Segmentation fault during normal playback operation

    opened by dandydon414 27
  • (macOS) MP3 GStreamer error

    (macOS) MP3 GStreamer error

    Describe the bug I get the error message when trying to play MP3. (See screenshot) Any of AAC, FLAC, Opus – no error.

    To Reproduce

    1. Install Strawberry.
    2. Try to play MP3.

    Expected behavior Strawberry is playing MP3.

    Screenshots: Снимок экрана 2020-01-09 в 17 15 04

    System Information:

    • Operating system: MacOS 10.13.6
    • Strawberry Version: 0.6.8

    Additional context System GStreamer is untouched from the start.

    bug confirmed 
    opened by dayfuaim 26
  • TIDAL lossless

    TIDAL lossless

    Excellent player, but unfortunately the lossless and high quality TIDAL stream don't work for me. (I have TIDAL HI-FI subscription and play master, lossless quality on other platforms without a problem)

    System Information:

    • Operating system: Linux Arch
    • Strawberry Version: 0.6.3

    When I select lossless or hi-resolution in the tidal settings and try to play any track this error pops up: Could not determine type of stream. when I change/downgrade the setting just to quality "high" it changes in the playlist from a file type "stream" to MP4 AAC and plays-streams without a problem.

    How to get the lossless stream quality? Thanks in advance.

    wontfix 
    opened by hvrba 25
  • Fix buildbot PPA builder to only update stable repository on releases (python)

    Fix buildbot PPA builder to only update stable repository on releases (python)

    The stable PPA is still updated even when INCLUDE_GIT_REVISION is set to OFF. If someone knows Python and can look into it, the function is MakePPABuilder in https://github.com/strawberrymusicplayer/strawberry-buildbot/blob/master/config/master/strawberry/builders.py My Python knowledge isn't great.

    opened by jonaski 24
  • Scrobble to last.fm

    Scrobble to last.fm

    Hi. Have been using Clementine for years and tested Strawberry but the only feature I want is missing and thats is to scrobble to last.fm

    enhancement 
    opened by hype3 24
  • Playback sometime block at song end instead of switching to next song

    Playback sometime block at song end instead of switching to next song

    Sometime, when the song end occur the playback is blocking instead of switching to next song (Icon still show it is playing, not stopped or paused). If I manually click on the next track button, the playback continue as normal.

    Strawberry Version: 0.5.2 (From package manager) System info: Fedora 29 x86_64, KDE Plasma 5.14.5

    help wanted 
    opened by JGoutin 21
  • Strawberry crashes when tries to play a song no longer available in Subsonic media server

    Strawberry crashes when tries to play a song no longer available in Subsonic media server

    Describe the bug Strawberry crashes when tries to play a song no longer available in the catalog of a subsonic media server.

    To Reproduce add a song from a subsonic media server to your playlist add a song from the same subsonic media server but located in a different folder to your playlist rename the folder where is located the song added in the step 2 play the song added in the step 1 Result: when the current song finishes and Strawberry tries to play the song located in the previously renamed folder, a crash occurs

    Expected behavior no crash

    System Information:

    • Operating system: neon unstable, based on ubuntu 20.04
    • Strawberry Version: 0.7.2-221-g8abb3ea2
    
    Thread 51 (Thread 0x7fff79ffb700 (LWP 22997)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a89483 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff613c307 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #3  0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 50 (Thread 0x7fff59ffb700 (LWP 22996)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a895a6 in g_cond_wait_until () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a0c561 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff5a6632a in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 48 (Thread 0x7fff34d3a700 (LWP 22994)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a89483 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff613c307 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #3  0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 45 (Thread 0x7fff3554b700 (LWP 22972)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a89483 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007fffb33db015 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
    #3  0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #4  0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #5  0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #6  0x00007ffff60f3c9b in gst_proxy_pad_chain_default () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #7  0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #8  0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #9  0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #10 0x00007ffff60f3c9b in gst_proxy_pad_chain_default () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #11 0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #12 0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #13 0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #14 0x00007ffff4828440 in  () at /lib/x86_64-linux-gnu/libgstbase-1.0.so.0
    #15 0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #16 0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #17 0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #18 0x00007ffff4828440 in  () at /lib/x86_64-linux-gnu/libgstbase-1.0.so.0
    #19 0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #20 0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #21 0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #22 0x00007ffff60f3c9b in gst_proxy_pad_chain_default () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #23 0x00007ffff6104eff in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #24 0x00007ffff6106f61 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #25 0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #26 0x00007fffb33cf744 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
    #27 0x00007ffff613c107 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #28 0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #29 0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #30 0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #31 0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 44 (Thread 0x7fff5affd700 (LWP 22971)):
    #0  0x0000555555decbbb in GstEnginePipeline::HandoffCallback(_GstPad*, _GstPadProbeInfo*, void*) (pad=0x5555583b0360, info=0x7fff5affc8f0, self=0x555556f1c0c0) at /home/stalker/strawberry/src/engine/gstenginepipeline.cpp:680
    #1  0x00007ffff610336e in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #2  0x00007ffff5a2b836 in g_hook_list_marshal () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff61029ee in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #4  0x00007ffff6106e2a in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #5  0x00007ffff610dd73 in gst_pad_push () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #6  0x00007fffb33dceb1 in  () at /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstcoreelements.so
    #7  0x00007ffff613c107 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #8  0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #9  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #10 0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #11 0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 42 (Thread 0x7fff597fa700 (LWP 22969)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a89483 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff613c307 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #3  0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 39 (Thread 0x7fff5a7fc700 (LWP 22967)):
    #0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
    #1  0x00007ffff5a89483 in g_cond_wait () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff613c307 in  () at /lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
    #3  0x00007ffff5a661d4 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 38 (Thread 0x7fff5b7fe700 (LWP 22965)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff5c010a10, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007fffb301599d in  () at /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 37 (Thread 0x7fff5bfff700 (LWP 22964)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff4c004ef0, nfds=3, timeout=73) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff62061d6 in  () at /lib/x86_64-linux-gnu/libpulse.so.0
    #2  0x00007ffff61f7841 in pa_mainloop_poll () at /lib/x86_64-linux-gnu/libpulse.so.0
    #3  0x00007ffff61f7ec3 in pa_mainloop_iterate () at /lib/x86_64-linux-gnu/libpulse.so.0
    #4  0x00007ffff61f7f70 in pa_mainloop_run () at /lib/x86_64-linux-gnu/libpulse.so.0
    #5  0x00007ffff620611d in  () at /lib/x86_64-linux-gnu/libpulse.so.0
    #6  0x00007ffff4a2767c in  () at /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-13.99.so
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 35 (Thread 0x7fff78ff9700 (LWP 22961)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff54005240, nfds=2, timeout=134900) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff54000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fff78ff8a60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555557df4cd0) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 32 (Thread 0x7fff7a7fc700 (LWP 22958)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff7a7fb9d0, clockid=<optimized out>, expected=0, futex_word=0x7fff70005884) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fff7a7fb9d0, clockid=<optimized out>, mutex=0x7fff70005830, cond=0x7fff70005858) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x7fff70005858, [email protected]=0x7fff70005830, [email protected]=0x7fff7a7fb9d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x7fff70005830, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x7fff70005830) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]ry=0x7fff700054a0, [email protected]=0x7fff80004cf8, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x7fff70005490) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x7fff70005490) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 31 (Thread 0x7fff7affd700 (LWP 22957)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff70004250, nfds=2, timeout=134733) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff70000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fff7affca60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555557764b00) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 29 (Thread 0x7fff94d04700 (LWP 22954)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff94d039d0, clockid=<optimized out>, expected=0, futex_word=0x7fff80005290) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fff94d039d0, clockid=<optimized out>, mutex=0x7fff80005240, cond=0x7fff80005268) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x7fff80005268, [email protected]=0x7fff80005240, [email protected]=0x7fff94d039d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x7fff80005240, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x7fff80005240) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]=0x7fff80004fa0, [email protected]=0x7fff80004cf8, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x7fff80004f90) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x7fff80004f90) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 28 (Thread 0x7fff7bfff700 (LWP 22955)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff6c004250, nfds=2, timeout=134923) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff6c000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fff7bffea60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x5555582f3f10) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 27 (Thread 0x7fff95505700 (LWP 22953)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff80003a30, nfds=1, timeout=129747) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84eab in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff80000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fff95504a60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555557f52400) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 26 (Thread 0x7fff95d06700 (LWP 22952)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fff95d059d0, clockid=<optimized out>, expected=0, futex_word=0x555556a162f4) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fff95d059d0, clockid=<optimized out>, mutex=0x555556a162a0, cond=0x555556a162c8) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x555556a162c8, [email protected]=0x555556a162a0, [email protected]=0x7fff95d059d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x555556a162a0, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x555556a162a0) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]=0x555556a16340, [email protected]=0x555556846998, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x555556a16330) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556a16330) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 25 (Thread 0x7fffb3fff700 (LWP 22951)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffb3ffe9d0, clockid=<optimized out>, expected=0, futex_word=0x5555569c69b0) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fffb3ffe9d0, clockid=<optimized out>, mutex=0x5555569c6960, cond=0x5555569c6988) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x5555569c6988, [email protected]=0x5555569c6960, [email protected]=0x7fffb3ffe9d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x5555569c6960, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x5555569c6960) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]=0x555556842350, [email protected]=0x555556846998, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x555556842340) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556842340) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 24 (Thread 0x7fffc9ffb700 (LWP 22950)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffc9ffa9d0, clockid=<optimized out>, expected=0, futex_word=0x555556a0eaf4) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fffc9ffa9d0, clockid=<optimized out>, mutex=0x555556a0eaa0, cond=0x555556a0eac8) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x555556a0eac8, [email protected]=0x555556a0eaa0, [email protected]=0x7fffc9ffa9d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x555556a0eaa0, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x555556a0eaa0) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]=0x555556a0efc0, [email protected]=0x555556846998, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x555556a0efb0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556a0efb0) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 23 (Thread 0x7fffcaffd700 (LWP 22949)):
    #0  futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7fffcaffc9d0, clockid=<optimized out>, expected=0, futex_word=0x555556a62974) at ../sysdeps/nptl/futex-internal.h:320
    #1  __pthread_cond_wait_common (abstime=0x7fffcaffc9d0, clockid=<optimized out>, mutex=0x555556a62920, cond=0x555556a62948) at pthread_cond_wait.c:520
    #2  __pthread_cond_timedwait ([email protected]=0x555556a62948, [email protected]=0x555556a62920, [email protected]=0x7fffcaffc9d0) at pthread_cond_wait.c:656
    #3  0x00007ffff6a4e098 in QWaitConditionPrivate::wait_relative(QDeadlineTimer) (this=0x555556a62920, deadline=...) at thread/qwaitcondition_unix.cpp:136
    #4  QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x555556a62920) at thread/qwaitcondition_unix.cpp:144
    #5  QWaitCondition::wait(QMutex*, QDeadlineTimer) ([email protected]=0x555556aa5450, [email protected]=0x555556846998, deadline=...) at thread/qwaitcondition_unix.cpp:225
    #6  0x00007ffff6a4b6c1 in QThreadPoolThread::run() (this=0x555556aa5440) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:270
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556aa5440) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 22 (Thread 0x7fffc97fa700 (LWP 22948)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffac0498f0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffac082cd0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffc97f9a60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x7fffc402e0b0) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 21 (Thread 0x7fff967fc700 (LWP 22740)):
    #0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555582356e8) at ../sysdeps/nptl/futex-internal.h:183
    #1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555558235698, cond=0x5555582356c0) at pthread_cond_wait.c:508
    #2  __pthread_cond_wait ([email protected]=0x5555582356c0, [email protected]=0x555558235698) at pthread_cond_wait.c:638
    #3  0x00007fffb074c97b in cnd_wait (mtx=0x555558235698, cond=0x5555582356c0) at ../include/c11/threads_posix.h:155
    #4  util_queue_thread_func ([email protected]=0x55555811d1a0) at ../src/util/u_queue.c:275
    #5  0x00007fffb074c58b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
    #6  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #7  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 20 (Thread 0x7fff96ffd700 (LWP 22739)):
    #0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555582356e8) at ../sysdeps/nptl/futex-internal.h:183
    #1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555558235698, cond=0x5555582356c0) at pthread_cond_wait.c:508
    #2  __pthread_cond_wait ([email protected]=0x5555582356c0, [email protected]=0x555558235698) at pthread_cond_wait.c:638
    #3  0x00007fffb074c97b in cnd_wait (mtx=0x555558235698, cond=0x5555582356c0) at ../include/c11/threads_posix.h:155
    #4  util_queue_thread_func ([email protected]=0x55555811cfc0) at ../src/util/u_queue.c:275
    #5  0x00007fffb074c58b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
    #6  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #7  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 19 (Thread 0x7fff977fe700 (LWP 22738)):
    #0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555582356e8) at ../sysdeps/nptl/futex-internal.h:183
    #1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555558235698, cond=0x5555582356c0) at pthread_cond_wait.c:508
    #2  __pthread_cond_wait ([email protected]=0x5555582356c0, [email protected]=0x555558235698) at pthread_cond_wait.c:638
    #3  0x00007fffb074c97b in cnd_wait (mtx=0x555558235698, cond=0x5555582356c0) at ../include/c11/threads_posix.h:155
    #4  util_queue_thread_func ([email protected]=0x55555811d000) at ../src/util/u_queue.c:275
    #5  0x00007fffb074c58b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
    #6  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #7  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 18 (Thread 0x7fff97fff700 (LWP 22737)):
    #0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5555582356e8) at ../sysdeps/nptl/futex-internal.h:183
    #1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x555558235698, cond=0x5555582356c0) at pthread_cond_wait.c:508
    #2  __pthread_cond_wait ([email protected]=0x5555582356c0, [email protected]=0x555558235698) at pthread_cond_wait.c:638
    #3  0x00007fffb074c97b in cnd_wait (mtx=0x555558235698, cond=0x5555582356c0) at ../include/c11/threads_posix.h:155
    #4  util_queue_thread_func ([email protected]=0x55555811d020) at ../src/util/u_queue.c:275
    #5  0x00007fffb074c58b in impl_thrd_routine (p=<optimized out>) at ../include/c11/threads_posix.h:87
    #6  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #7  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 17 (Thread 0x7fffb17fa700 (LWP 22736)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff9802a3e0, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c533 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff5e23eda in  () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 16 (Thread 0x7fffb1ffb700 (LWP 22735)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff98011620, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff5a3c331 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff5a65931 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 15 (Thread 0x7fffb27fc700 (LWP 22734)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fff98057140, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fff98000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffb27fba60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555557679100) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 14 (Thread 0x7fffb2ffd700 (LWP 22733)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffa4004c30, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffa4000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffb2ffca60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555557679180) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 9 (Thread 0x7fffca7fc700 (LWP 22720)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffb4008310, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffb4000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffca7fba60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x5555569e90d0) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 7 (Thread 0x7fffcb7fe700 (LWP 22718)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffbc004a60, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffbc000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffcb7fda40, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x0000555555f0a6ea in Thread::run() (this=0x5555569c4190) at /home/stalker/strawberry/src/core/thread.cpp:27
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x5555569c4190) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 6 (Thread 0x7fffcbfff700 (LWP 22717)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffc4004e60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffc4000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffcbffea60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x5555569ceb50) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 5 (Thread 0x7fffe8d20700 (LWP 22716)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffd0004e60, nfds=1, timeout=9990) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffd0000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffe8d1fa60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x5555569c8910) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 4 (Thread 0x7fffea5d5700 (LWP 22715)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffcc004a60, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffcc000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffea5d4a60, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556950fa0) at thread/qthread_unix.cpp:342
    #7  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #8  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 3 (Thread 0x7fffeae2a700 (LWP 22714)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7fffe401b4b0, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff5a3c1ae in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #2  0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #3  0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffe4000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #4  0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffeae29a30, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #5  0x00007ffff6a47082 in QThread::exec() ([email protected]=0x7ffff7f51d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #6  0x00007ffff7ecef2b in QDBusConnectionManager::run() (this=0x7ffff7f51d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
    #7  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x7ffff7f51d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:342
    #8  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #9  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 2 (Thread 0x7ffff16f6700 (LWP 22693)):
    #0  0x00007ffff5c28aff in __GI___poll (fds=0x7ffff16f5968, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
    #1  0x00007ffff46b4c1a in  () at /lib/x86_64-linux-gnu/libxcb.so.1
    #2  0x00007ffff46b690a in xcb_wait_for_event () at /lib/x86_64-linux-gnu/libxcb.so.1
    #3  0x00007ffff1ce2978 in QXcbEventQueue::run() (this=0x555556849030) at qxcbeventqueue.cpp:228
    #4  0x00007ffff6a4820c in QThreadPrivate::start(void*) (arg=0x555556849030) at thread/qthread_unix.cpp:342
    #5  0x00007ffff70ec609 in start_thread (arg=<optimized out>) at pthread_create.c:477
    #6  0x00007ffff5c35293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
    
    Thread 1 (Thread 0x7ffff2109b40 (LWP 22652)):
    #0  0x00007ffff5554350 in hb_unicode_funcs_get_default () at /lib/x86_64-linux-gnu/libharfbuzz.so.0
    #1  0x00007ffff54aa93d in  () at /lib/x86_64-linux-gnu/libharfbuzz.so.0
    #2  0x00007ffff54ab75d in hb_buffer_create () at /lib/x86_64-linux-gnu/libharfbuzz.so.0
    #3  0x00007ffff735602b in QTextEngine::shapeTextWithHarfbuzzNG(QScriptItem const&, unsigned short const*, int, QFontEngine*, QVector<unsigned int> const&, bool, bool) const ([email protected]=0x555557c7b9b0, si=..., [email protected]=0x7fffb8269a28, [email protected]=3, [email protected]=0x555556c73250, itemBoundaries=..., kerningEnabled=true, hasLetterSpacing=false) at text/qtextengine.cpp:1618
    #4  0x00007ffff7358fe6 in QTextEngine::shapeText(int) const ([email protected]=0x555557c7b9b0, [email protected]=0) at ../../include/QtGui/5.15.0/QtGui/private/../../../../../src/gui/painting/qfixed_p.h:174
    #5  0x00007ffff7359c99 in QTextEngine::shape(int) const ([email protected]=0x555557c7b9b0, [email protected]=0) at text/qtextengine.cpp:2028
    #6  0x00007ffff735f05b in QTextEngine::shapeLine(QScriptLine const&) (this=0x555557c7b9b0, line=...) at text/qtextengine.cpp:1342
    #7  0x00007ffff736132a in QTextLineItemIterator::QTextLineItemIterator(QTextEngine*, int, QPointF const&, QTextLayout::FormatRange const*) (this=0x7fffffff8550, _eng=<optimized out>, _lineNum=<optimized out>, pos=..., _selection=<optimized out>) at text/qtextengine.cpp:4052
    #8  0x00007ffff73651bc in QTextLine::draw(QPainter*, QPointF const&, QTextLayout::FormatRange const*) const ([email protected]=0x7fffffff8b90, [email protected]=0x7fffffffa0c8, pos=..., [email protected]=0x0) at text/qtextlayout.cpp:2524
    #9  0x00007ffff7366a86 in QTextLayout::draw(QPainter*, QPointF const&, QVector<QTextLayout::FormatRange> const&, QRectF const&) const ([email protected]=0x7fffffff9090, [email protected]=0x7fffffffa0c8, pos=..., selections=..., clip=...) at text/qtextlayout.cpp:1262
    #10 0x00007ffff79eed19 in QCommonStylePrivate::viewItemDrawText(QPainter*, QStyleOptionViewItem const*, QRect const&) const (this=<optimized out>, [email protected]=0x7fffffffa0c8, [email protected]=0x7fffffff9830, rect=...) at ../../include/QtCore/../../src/corelib/tools/qarraydata.h:257
    #11 0x00007ffff79f5675 in QCommonStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const ([email protected]=0x5555568febb0, [email protected]=QStyle::CE_ItemViewItem, [email protected]=0x7fffffff9830, [email protected]=0x7fffffffa0c8, [email protected]=0x555556f34c80) at styles/qcommonstyle.cpp:2330
    #12 0x00007fffeae86e7b in Breeze::Style::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0x5555568febb0, element=QStyle::CE_ItemViewItem, option=0x7fffffff9830, painter=0x7fffffffa0c8, widget=0x555556f34c80) at ./kstyle/breezestyle.cpp:1009
    #13 0x00007ffff7a2a593 in QStyleSheetStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0x555556e80d90, ce=<optimized out>, opt=0x7fffffff9970, p=0x7fffffffa0c8, w=<optimized out>) at styles/qstylesheetstyle.cpp:4175
    #14 0x00007ffff7c0a378 in QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (this=0x555556e80ca0, painter=0x7fffffffa0c8, option=..., index=...) at itemviews/qstyleditemdelegate.cpp:389
    #15 0x0000555555b9f2fb in CollectionItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (this=0x555556e80ca0, painter=0x7fffffffa0c8, opt=..., index=...) at /home/stalker/strawberry/src/collection/collectionitemdelegate.cpp:116
    #16 0x00007ffff7c509fa in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const (this=<optimized out>, painter=0x7fffffffa0c8, option=..., index=...) at /usr/include/c++/9/bits/atomic_base.h:413
    #17 0x00007ffff7c56823 in QTreeView::drawTree(QPainter*, QRegion const&) const ([email protected]=0x555556f34c80, [email protected]=0x7fffffffa0c8, region=...) at ../../include/QtCore/../../src/corelib/tools/qarraydata.h:61
    #18 0x00007ffff7c5b857 in QTreeView::paintEvent(QPaintEvent*) (this=0x555556f34c80, event=0x7fffffffa7a0) at ../../include/QtGui/../../src/gui/kernel/qevent.h:452
    #19 0x0000555555d95957 in InternetCollectionView::paintEvent(QPaintEvent*) (this=0x555556f34c80, event=0x7fffffffa7a0) at /home/stalker/strawberry/src/internet/internetcollectionview.cpp:292
    #20 0x00007ffff79b1db6 in QWidget::event(QEvent*) ([email protected]=0x555556f34c80, [email protected]=0x7fffffffa7a0) at kernel/qwidget.cpp:8671
    #21 0x00007ffff7a62062 in QFrame::event(QEvent*) (this=0x555556f34c80, e=0x7fffffffa7a0) at widgets/qframe.cpp:550
    #22 0x00007ffff7bec322 in QAbstractItemView::viewportEvent(QEvent*) ([email protected]=0x555556f34c80, [email protected]=0x7fffffffa7a0) at itemviews/qabstractitemview.cpp:1745
    #23 0x00007ffff7c5c9bf in QTreeView::viewportEvent(QEvent*) (this=0x555556f34c80, event=0x7fffffffa7a0) at itemviews/qtreeview.cpp:1314
    #24 0x00007ffff6c2a413 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (event=<optimized out>, receiver=<optimized out>) at kernel/qcoreapplication.cpp:1187
    #25 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) ([email protected]=0x555556f73390, [email protected]=0x7fffffffa7a0) at kernel/qcoreapplication.cpp:1176
    #26 0x00007ffff796ecb2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ([email protected]=0x555556847f70, [email protected]=0x555556f73390, [email protected]=0x7fffffffa7a0) at kernel/qapplication.cpp:3665
    #27 0x00007ffff7977c70 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd7c0, receiver=0x555556f73390, e=0x7fffffffa7a0) at kernel/qapplication.cpp:3417
    #28 0x00007ffff6c2a6aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555556f73390, event=0x7fffffffa7a0) at ../../include/QtCore/5.15.0/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
    #29 0x00007ffff79aa3ca in QWidgetPrivate::sendPaintEvent(QRegion const&) ([email protected]=0x555556d59610, toBePainted=...) at kernel/qwidget.cpp:5468
    #30 0x00007ffff79aabf2 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556d59610, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at kernel/qwidget.cpp:5418
    #31 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556f34080, pdev=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #32 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556f34080, pdev=0x555556f35f40, siblings=..., index=4, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #33 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556f34080, pdev=0x555556f35f40, siblings=..., index=5, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #34 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x555556f34080, [email protected]=0x555556f35f40, siblings=..., index=7, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #35 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556f34080, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #36 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x555556e042d0, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #37 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556e042d0, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #38 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x5555571624b0, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #39 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555571624b0, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #40 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x555556d1dc80, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #41 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x555556d1dc80, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #42 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x55555792b0f0, pdev=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #43 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x55555792b0f0, [email protected]=0x555556f35f40, siblings=..., index=1, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #44 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x55555792b0f0, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #45 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x55555768c3e0, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #46 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x55555768c3e0, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #47 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576ad650, pdev=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #48 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x5555576ad650, [email protected]=0x555556f35f40, siblings=..., index=0, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #49 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576ad650, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #50 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x5555576ac740, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #51 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576ac740, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #52 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576a1ed0, pdev=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #53 0x00007ffff79abed6 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x5555576a1ed0, [email protected]=0x555556f35f40, siblings=..., index=2, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at kernel/qwidget.cpp:5585
    #54 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576a1ed0, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #55 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x5555576ac540, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #56 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) (this=0x5555576ac540, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., sharedPainter=<optimized out>, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #57 0x00007ffff79abff3 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x555556845a20, [email protected]=0x555556f35f40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=..., sharedPainter=0x0, repaintManager=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:124
    #58 0x00007ffff79aa90c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) ([email protected]=0x555556845a20, pdev=0x555556f35f40, rgn=..., offset=..., flags=..., [email protected]=..., [email protected]=0x0, repaintManager=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qlist.h:176
    #59 0x00007ffff79815e9 in QWidgetRepaintManager::paintAndFlush() ([email protected]=0x555558233c70) at ../../include/QtCore/../../src/corelib/tools/qpoint.h:122
    #60 0x00007ffff7982094 in QWidgetRepaintManager::sync() (this=0x555558233c70) at kernel/qwidgetrepaintmanager.cpp:770
    #61 0x00007ffff79aba95 in QWidgetPrivate::syncBackingStore() (this=0x555556845a20) at kernel/qwidget.cpp:1757
    #62 0x00007ffff79b27ac in QWidget::event(QEvent*) ([email protected]=0x7fffffffd930, [email protected]=0x555557dbfd50) at kernel/qwidget.cpp:8972
    #63 0x00007ffff7acaa18 in QMainWindow::event(QEvent*) (this=0x7fffffffd930, event=0x555557dbfd50) at widgets/qmainwindow.cpp:1341
    #64 0x00007ffff796ecc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ([email protected]=0x555556847f70, [email protected]=0x7fffffffd930, [email protected]=0x555557dbfd50) at kernel/qapplication.cpp:3671
    #65 0x00007ffff7977c70 in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd7c0, receiver=0x7fffffffd930, e=0x555557dbfd50) at kernel/qapplication.cpp:3417
    #66 0x00007ffff6c2a6aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fffffffd930, event=0x555557dbfd50) at ../../include/QtCore/5.15.0/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
    #67 0x00007ffff6c2cfa1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x555556836260) at kernel/qcoreapplication.cpp:1815
    #68 0x00007ffff6c85837 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x555556845e50) at kernel/qeventdispatcher_glib.cpp:277
    #69 0x00007ffff5a3bfbd in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #70 0x00007ffff5a3c240 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #71 0x00007ffff5a3c2e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #72 0x00007ffff6c84e92 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555556917ca0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
    #73 0x00007ffff6c291bb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ([email protected]=0x7fffffffd6d0, flags=..., [email protected]=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
    #74 0x00007ffff6c31354 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
    #75 0x0000555555a64bd6 in main(int, char**) (argc=1, argv=0x7fffffffde18) at /home/stalker/strawberry/src/main.cpp:292
    
    
    bug help wanted 
    opened by glaubersm 20
  • Most global shortcuts don't work

    Most global shortcuts don't work

    Describe the bug I tried to configure global keyboard shortcut for Play/Pause. But it does nothing when pressed.

    I checked in KDE settings, and it recognized Strawberry, but has only 2 shortcuts instead. These 2 shortcuts work, the other don't.

    To Reproduce Every time. I even tried to remove strawberry shortcuts from kde settings, and upon startup, it creates only these 2.

    Expected behavior When I press the key, the action should happen. This was working fine with Clementine.

    Screenshots:

    Настройки_246

    Комбинации клавиш  — Параметры системы_001

    System Information:

    • Operating system: Gentoo Linux, KDE Plasma, kernel 5.10.68-x86_64
    • Strawberry Version: 1.0.0-125-g4c6251bf

    Additional context Add any other context about the problem here.

    opened by DarthGandalf 10
  • Seek bar stops showing progress

    Seek bar stops showing progress

    The seek bar stops tracking playback progress after a while, and once it is in that state, it does not recover until I restart Strawberry. Once it that state, when I change songs, the bar updates itself to some seemingly random position on playback start, but won't move further. The seek functionality itself still works.

    Context: I'm playing Flac files.

    I have not been able to create a reliable instruction how to reproduce this, but on my machine it only takes a few seconds of random seeking. Sometimes the bar gets stuck on the first seek already. I made a screen recording that is representative of the issue. First I thought it might happen after Strawberry loses focus, but it's not that.

    https://youtu.be/NQEprp0uYr4

    I'm on MacOS Monterey 12.1 beta (M1 Max), and updated from 1.0.0 to 1.0.0-125-g4c6251bf before opening this issue, but the issue is still there. This is a new mac. I don't recall having had this issue on my previous Big Sur intel machine.

    opened by geroyche 1
  • Strawberry doesn't recognize ReplayGain values stored in cue sheet

    Strawberry doesn't recognize ReplayGain values stored in cue sheet

    Describe the bug CUE sheets may contain ReplayGain values, and foobar2000 for example may write such values. Strawberry seems to ignore them completely. It clearly uses "fallback-gain" for such files, as if they didn't have ReplayGain values.

    There doesn't seem to be any workaround to let it use ReplayGain information for music albums stored as a single audio file + cue sheet.

    To Reproduce

    1. find any music CD stored as FLAC + CUE
    2. add ReplayGain information to the CUE file, so it would have these values at the top level (example):
    REM REPLAYGAIN_ALBUM_GAIN -5.53 dB
    REM REPLAYGAIN_ALBUM_PEAK 0.994629
    

    and something like this before first INDEX of every track:

        REM REPLAYGAIN_TRACK_GAIN -3.46 dB
        REM REPLAYGAIN_TRACK_PEAK 0.994629
    
    1. Set fallback-gain to -60 dB (just to make it obvious if RG info was used)
    2. Start playback, music will be almost inaudible, because it doesn't see RG values and thus uses fallback-gain
    3. Try the same steps with FLAC files where RG tags are written into individual tracks (and each track is in its own file), then ReplayGain works as expected, and not using fallback-gain

    Expected behavior ReplayGain gets properly used, like in e.g. foobar2000 or any other music player supporting this syntax.

    System Information:

    • Operating system: Arch Linux
    • Strawberry Version: 1.0

    Additional context Add any other context about the problem here.

    opened by magicgoose 2
  • Extended Latin characters not showing in lyrics for MP4 AAC

    Extended Latin characters not showing in lyrics for MP4 AAC

    For technical issues, questions and feature suggestions/requests please use the forum on https://forum.strawberrymusicplayer.org/

    Check the Changelog to see if the issue is already fixed: https://github.com/strawberrymusicplayer/strawberry/blob/master/Changelog

    If it's fixed, try the latest development build from: https://builds.strawberrymusicplayer.org/

    Describe the bug Strawberry does not show some special character of the Latin alphabet when editing the track information, although they are shown correctly in the context window.

    To Reproduce Type the leters ä, å or any other of the extended Latin alphabet and you'll obtain ä, Ã¥ etc. after saving the lyrics.

    Expected behavior Characters ä, å etc. should be shown as such everywhere

    Screenshots: see attached

    System Information:

    • Operating system: Windows 10 Pro - Version 21H1 - OS Build 19043.1348
    • Strawberry Version: 1.0

    Additional context Add any other context about the problem here. strawberry 1 0

    bug confirmed 
    opened by iteqla 2
  • macOS Performance: constant high CPU usage

    macOS Performance: constant high CPU usage

    System Information:

    • Operating system: macOS 11.6.1
    • Strawberry Version: Open Strawberry Version 1.0.0-116-g0fbe5d88

    Constant high CPU usage on macOS.

    To Reproduce With Strawberry open and doing nothing (no scrolling or playing a track or any interaction at all) Strawberry constantly sits at over 40% CPU usage Screenshot 2021-11-13 at 17 46 43

    Playing a track it sits at over 60% while sometimes spiking at over 100%: Screenshot 2021-11-13 at 17 50 27

    Expected behavior CPU usage is too high. Comparing with Apples music app which sits at 0,1% when idle and goes up to under 2% when playing a track.

    Additional context Spin Dump: https://bin.disroot.org/?73b77829f80a251e#5vwiHDcJRRTccyUMsLmNgUidDriH9xRhv6HMAEW8hoUn Process Sample: https://bin.disroot.org/?103ce9f6c263e0fb#HzSkmVV7rWMBXs5GyL1nzbP6h6cA92XRhmUJc6ATSDKw

    bug help wanted 
    opened by foss- 6
  • Use toPercentEncoding for XSPF playlist writer

    Use toPercentEncoding for XSPF playlist writer

    Fix for #821

    This change adds percent encoding to the location tag on exported XSPF playlists. Tested encoded XSPF with VLC.

    toPercentEncoding has built-in UTF-8 conversion per the docs, so no need to do it twice: https://doc.qt.io/qt-5/qurl.html#toPercentEncoding

    opened by buckmelanoma 2
  • Playlist export does not URL encode paths

    Playlist export does not URL encode paths

    Describe the bug

    When exporting to xspf or m3u (haven't tried the others) the resulting file paths are not URL encoded.

    For xspf this is explicitly called out as a requirement here: https://xspf.org/xspf-v1.html#rfc.section.6.2 (and implicitly at 4.1.1.2.5 by specifying the as URIs).

    M3U is a bit murkier though presumably the U stands for URL (c.f. VLC devs struggling with this in https://code.videolan.org/videolan/vlc/-/issues/19567).

    To Reproduce

    1. Create a playlist where a track has a bracket ([) in its file path.
    2. Export to .xspf
    3. Visually inspect the file

    Alternatively,

    1. Open .xspf in VLC
    2. See it not playing that track

    Expected behavior Paths in playlist exports are URL encoded, and thus conforming to spec.

    Screenshots:

    System Information:

    • Operating system: Linux
    • Strawberry Version: 0.9.2

    Additional context Note that most players, including VLC, do a lot of the work themselves. For example, spaces () are interpreted correctly despite not being URL encoded. For VLC in particular these helpful assists stop at brackets ([).

    I would suggest to also take into account that Strawberry is exporting playlists as UTF-8 anyway and only URL encode RFC 3986 section 2.2 Reserved Characters rather than "anything non ascii". I.e. please leave non-latin script readable :-).

    opened by eduarrrd 3
  • Arrow of stop button is missing from Strawberry built against Qt6

    Arrow of stop button is missing from Strawberry built against Qt6

    Describe the bug Strawberry from Arch Linux repos is built against Qt6 and I noticed that its stop button does not have an arrow. Strawberry-qt5 available in AUR has said arrow.

    To Reproduce use Strawberry built against Qt6 observe the stop button below the playlist

    Expected behavior stop button of Strawberry built against Qt6 should have an arrow too

    Screenshots: Strawberry built against Qt5, stop button with arrow, as expected: qt5

    Strawberry built against Qt6, missing arrow: qt6

    System Information:

    • Operating system: Arch Linux
    • Strawberry Version: 1.0

    Additional context Add any other context about the problem here.

    bug confirmed 
    opened by glaubersm 9
  • Remove lazy loading and FTS5

    Remove lazy loading and FTS5

    This is an attempt to fix some of the problems with the current collection model. It is currently a work-in-progress, and only currently intended as a proof-of-concept. Still unsure whether to do this or not.

    What this does:

    • Completely removes the lazy-loading mechanism, loads all songs from the DB when the model is reset.
    • Changes the collection search to use a filter (similar to the playlist search), completely drops the need for FTS5.

    Advantages:

    • Never need to reset the entire model when songs are deleted.
    • No longer need to reset the model on searches.
    • Cover art is always removed from pixmap cache when changed as long as Strawberry is running.
    • No freeze when adding or right clicking many songs in the collection at the same time.

    Disadvantages:

    • It takes longer for the model to load, approximately 3.5 seconds for my collection with 24.600 songs.
    • It takes longer to switch between groupings and filter by age.

    I've tested:

    • Collection searches, and by tags behaves like before, it is still fast.
    • Filter age and groupings still work, particularity switching groupings is very slow now.

    CC: @NucleaPeon if you want to test.

    Fixes #392

    opened by jonaski 1
  • (macOS) High CPU Usage when scrolling in Playlist View on a high-DPI Retina Screen

    (macOS) High CPU Usage when scrolling in Playlist View on a high-DPI Retina Screen

    Describe the bug Probably a macOS, QT-specific issue (as it also exists on Clementine 1.3.1), but scrolling in Playlist View (even when not playing any tracks in the background) is very choppy in performance, with large CPU spikes and a tanking framerate (down to 8-10 frames on my high-spec Mac Pro, worse if glowing track animation is turned on, and there is a large list to scroll through). Scrolling the playlist view with a track playing will also tank the framerate of the block analyser.

    To Reproduce Add a list of songs to Playlist Views and scroll using mouse wheel.

    Expected behavior Scroll smoothly, as there shouldn't be anything CPU-heavy happening when scrolling a relatively static/non-dynamic playlist view.

    System Information:

    • Operating system: macOS 10.13.6
    • Strawberry Version: 0.7.2.107
    bug help wanted 
    opened by Tibokan 40
Releases(1.0.0)
MP3 Player/Organizer

I ♡ Music I ♡ Music is an MP3 player and organizer. It is designed for handling collections of albums in MP3 format, and it is very visual, attempting

Mattias Gustavsson 12 Dec 3, 2021
Arduino Audio Tools (Music Player, Music Recorder supporting I2S, Microphones, DAC, ADC, A2DP, Url)

Arduino Audio Tools Some basic header-only C++ classes that can be used for Audio Processing provided as Arduino Library: a simple I2S class (to read

Phil Schatzmann 53 Nov 29, 2021
A music player based on RT-thread and AB32VG1.

A music player based on RT-thread and AB32VG1.

杨澄 5 Nov 16, 2021
Standalone player of Monkey Island PC-Speaker music

Standalone player of Monkey Island PC-Speaker music

Thanassis Tsiodras 25 Aug 27, 2021
Library and command line backend for the Raspberry Pi OPL3 emulator and midi player

About this repository This repository holds the source code for the pioplemidi backend. You can compile it if you only want to use the library or the

iAmInAction 2 Dec 2, 2021
The latest and greatest version of my Gameboy Audio Player program!

GBAudioPlayerV3 Version 3.0 of the incredible Gameboy Audio Player, rebuilt from the ground up in C as a command line program, along with heavily impr

null 2 Nov 28, 2021
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)

Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) digital scores into SVG images. Verovio also contain

RISM Switzerland 431 Dec 2, 2021
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.

PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music

Mohammadreza Anvari 1 Nov 22, 2021
A next generation media player, with vim-like bindings

MusicKid A next generation media player, with vim-like bindings Installation Clone the repo git clone <git-url> cd MusicKid/Final Install dependencies

null 2 Sep 22, 2021
Implement a universal audio player

qiaopcmusic 实现一个万能音频播放器 添加依赖方式: To get a Git project into your build: Step 1. Add the JitPack repository to your build file Add it in your root build.

null 6 Oct 15, 2021
C++ Audio and Music DSP Library

_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|

Mick Grierson 1.2k Nov 24, 2021
a library for audio and music analysis

aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.

aubio 2.6k Dec 1, 2021
projectM - cross-platform music visualization. Open-source and Milkdrop-compatible

projectM - cross-platform music visualization. Open-source and Milkdrop-compatible

projectM Visualizer 2k Dec 3, 2021
By controlling the frequency at which the output Pins of MSP430 are turned off and on, we can make music.

By controlling the frequency at which the output Pins of MSP430 are turned off and on, we can make music.

Premkumar Vincent 1 Nov 9, 2021
A lightweight music DSP library.

Soundpipe Soundpipe is a lightweight music DSP library written in C. It aims to provide a set of high-quality DSP modules for composers, sound designe

Paul Batchelor 102 Nov 26, 2021
A simple CLI to extract & save artwork of a 🎵 music/audio file.

artwork-extractor A simple CLI to extract & save artwork of a ?? music/audio file. Usage Dependencies MediaInfoLib On Debian based distros, one may in

Hitesh Kumar Saini 5 Aug 4, 2021
Linux client for Archo Music written in C++, uses Qt Framework.

ArchoMusicLinux Linux client for Archo Music written in C++, uses Qt Framework. For the original client, visit Archo Music Compiling Setting up the li

GianXD 2 Nov 13, 2021
C/C++ library for converting a stream of OPL FM synth chip commands to the OPB music format

OPBinaryLib C/C++ library for converting a stream of OPL FM synth chip commands to the OPB music format Basic usage Store your OPL commands as a conti

Emma Maassen 9 Nov 20, 2021
A light-weight music Discord bot using Orca.

What's the "Music Discord bot with C"? A light-weight music Discord bot using Orca for it's bot. It's easy to use and install. How to download and use

ThePedro 6 Nov 12, 2021