:notes: Cross-platform music player

Overview

Exaile

Build Status Translate with Weblate

Exaile is a music player with a simple interface and powerful music management capabilities. Features include automatic fetching of album art, lyrics fetching, streaming internet radio, tabbed playlists, smart playlists with extensive filtering/search capabilities, and much more.

Exaile is written using Python and GTK+ and is easily extensible via plugins. There are over 50 plugins distributed with Exaile that include advanced track tagging, last.fm scrobbling, support for portable media players, podcasts, internet radio such as icecast and Soma.FM, ReplayGain, output via a secondary output device (great for DJs!), and much more.

For more information see https://www.exaile.org/

Comments
  • Port to Gtk3/PyGobject/GST 1.x

    Port to Gtk3/PyGobject/GST 1.x

    Start from: https://bugs.launchpad.net/exaile/+bug/846379

    Some blockers I can think of for PyGI/GTK3:

    • [X] I don't want to not have a way to select output devices, and GST 1.x got rid of the property probe interface. See https://bugzilla.gnome.org/show_bug.cgi?id=678402 (which is marked as resolved, but it's not clear to me whether it is or not) -> FIXED in Gst 1.4
    • [ ] For Windows and OSX (both of which I use, and hope to continue to support), we currently rely on the GStreamer SDK for python bindings to GTK. As far as I can tell, it doesn't support GTK3 or GST 1, and still has the old PyGTK bindings on it. I could be wrong though.
    • [ ] Right now, I don't care enough about this to do it, and besides Johannes there isn't anyone else actively doing work on the project. Will probably want to push this off as long as we can, until more people join the project.
    Type: enhancement Help wanted GTK3/GST1.x 
    opened by thiblahute 43
  • [gapless playback] exaile mutes playback if FLAC is played after one or two MP3 files (details unclear)

    [gapless playback] exaile mutes playback if FLAC is played after one or two MP3 files (details unclear)

    Sometimes when exaile plays music from large playlists (randomly play songs, repeat everything active), it does the following:

    1. The song which was started plays until the end
    2. exaile loads the next song (and file, according to logging). This includes title information (above playlists) and cover, title length (progress bar below playlists).
    3. In some cases exaile does not start playing the song. In fact the progress bar is stuck at 0:00 seconds though it should play (and it is not paused).
    4. after some time exaile suddently starts playing the file (often just the last 1…3 seconds of the file) and then switches to step 2. again.

    When clicking somewhere after 3. happened into the progress bar makes exaile behave normal and play the file.

    I keep on running into this problem for quite a while but I am unsure how to reproduce it. The only thing I found out is that it only affects huge playlists. So it seems like exaile reacts special on some rare files (file types?). This could also be an issue with some gstreamer plugin, I don't know for sure.

    It looks like this primarily affects flac files. When they are played often the first few seconds go missing. In this case the progress bar misses some seconds (e.g. 0:01 and 0:03). It looks to me like exaile desperately tries to play a file the moment it should start without caring whether it is already loaded. I might be wrong but it looks to me like a caching (and: hard disk file access time) issue.

    This does not happen with VLC media player nor with totem (gnome's default media player using gstreamer). So it seems to be an issue with exaile only.

    opened by genodeftest 27
  • RTL control bar is reversed

    RTL control bar is reversed

    No physical DVD/Video player has its controllers set from right-to-left.

    FORCE LTR WIDGET DIRECTION.

    See: http://sourceforge.net/p/smplayer/bugs/584/ https://git.gnome.org/browse/ekiga/commit/?id=76c9b23 https://trac.gajim.org/changeset/5f8bfea2054a

    Type: enhancement 
    opened by GreenLunar 22
  • Need to split out the msys pieces from building a release

    Need to split out the msys pieces from building a release

    As discussed on IRC.... this really needs to be done. One of the things holding back release(s) is that it's difficult to build a full release unless you're on Windows, because of the msys dependency which is constantly changing.

    Ideally, the msys stuff could be packaged separately into something that could be reused and repackaged from Linux. Then, all we would need to do is push a tag, and travis would magically bundle everything together and push a release to github.

    One thought is to use pyinstaller in a more controlled way. We could bundle the source code of exaile with the installer, using the same base pyinstaller exe each time. This base could be primed with all of the builtin imports we need (somehow?), and the external stuff too. If the stub just executed the main exaile source, we wouldn't need to rebuild the pyinstaller exe each time.

    More ideas welcome. And.. I need to put together a VM with msys so we can get 4.0 out the door.

    Type: enhancement Platform: Windows Component: build system 
    opened by virtuald 20
  • [WIP] Improve build: Makefile and more tests in Travis CI

    [WIP] Improve build: Makefile and more tests in Travis CI

    Missing items:

    • [x] (optional) Run documentation and style checks only on one machine, preferably a separate one
    • [x] build all the code to check whether it compiles
    • [x] add sphinx to docker images (see exaile/exaile-testimg#2)
    • [x] build sphinx documentation during tests
    • [ ] add pychecker to docker images (see exaile/exaile-testimg#2)
    • [ ] check code style using pychecker
    • [x] put built .pyc / .pyo files where we can write them.

    Code style:

    $ pycodestyle --exclude=plugins/daapserver/spydaap/*.py --max-line-length=160 --statistics --count --ignore=E203,E241,E265,E266,E305,E402,E722,E731,E741,W293,W503 .
    

    Deferred:

    • [ ] add pytest-flakes to docker images (through pip install, see exaile/exaile-testimg#2
    opened by genodeftest 18
  • TypeError upon exit

    TypeError upon exit

    Hello,

    I'm seeing an regression between 11885d6 (20170907) and 9ba2cc8 (20171020). Every time I'm quitting exaile via File -> Quit Exaile menu item, I get this in terminal:

    Exception TypeError: "'NoneType' object is not callable" in <object repr() failed> ignored
    Exception TypeError: "'NoneType' object is not callable" in <object repr() failed> ignored
    

    Here is the full log with --debug, but it doesn't seem contain any clues about the error: https://dpaste.de/BDWQ/raw

    opened by mexicarne 18
  • Namespace Gst not available

    Namespace Gst not available

    Can't start on xubuntu 12.04 (maybe after update), version from PPA. ~$ exaile Traceback (most recent call last): File "/usr/local/lib/exaile/exaile.py", line 68, in <module> main() File "/usr/local/lib/exaile/exaile.py", line 65, in main exaile = main.Exaile() File "/usr/local/lib/exaile/xl/main.py", line 254, in __init__ _do_heavy_imports() File "/usr/local/lib/exaile/xl/main.py", line 51, in _do_heavy_imports gi.require_version('Gst', '1.0') File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 48, in require_version raise ValueError('Namespace %s not available' % namespace) ValueError: Namespace Gst not available

    ~$ exaile --version Exaile 4.0.0dev

    Git version also suddenly don't work, but don't got the output (sorry).

    opened by ghost 18
  • Add Preferences shortcuts to the player

    Add Preferences shortcuts to the player

    I was wondering if it was possible to add shortcuts from the preferences to the main player. For example, I'd like to 'Disallow playing new tracks when another track is playing' when I am actively DJing. I'd love to actively add a shortcut to the main player, on the bottom line where all it seems to do currently is display 'x songs showing, yzzx in collection' on the bottom right

    As a sidenote, is it possible to disable that line or change what is displayed on that particular line?

    This might also help with another issue I raised in the past (#708) about actively be able to change the delay between songs. If I can add a shortcut to the main player, I can easily a delay time in (milli)seconds and change it as I DJ

    Environment

    • Operating System and version: Windows 10
    • Exaile Version: 4.0.2 GStreamer: 1.16.0 GTK+: 3.24.8 GTK+ theme: Adwaita Locale: English_United States 1252 Mutagen: 1.40.0 PyGObject: 3.32.1 Python: 2.7.16
    Type: enhancement Help wanted Good first issue Component: plugin 
    opened by phalgunlolur 17
  • Exaile 4 Windows Installer flagged as Trojan

    Exaile 4 Windows Installer flagged as Trojan

    Steps to Reproduce (for bugs)

    1. Download the RC4 installer at https://github.com/exaile/exaile/releases/download/4.0.0-rc4/exaile-4.0.0-rc4.exe
    2. Run it on Windows 10
    3. Windows Defender kicks in and Quarantine the file
    4. Here's a screenshot.

    Expected Behavior

    The Installer should not be flagged :)

    Current Behavior

    Exaile cannot be installed.

    Possible Solution

    I've looked up this issue and it seems that other open source software has run into it as well. Obviously we should look into the release process to make sure that it does not contain virus/trojan, but I'm leaning towards Windows Defender flagging some unsigned binaries right now.

    Environment

    • Operating System and version: Windows 10 version 1809
    • Exaile Version: 4.0.0 RC4
    opened by dangmai 17
  • MP3 tags not read

    MP3 tags not read

    MP3 tags not read

    Steps to Reproduce (for bugs)

    Add folder to collection.

    Expected Behavior

    Tags should be properly imported for all supported media files.

    Current Behavior

    Tags for ogg and flac files work just fine, but all MP3 files show up without any tag information.

    Further information

    • Probably not a problem with mutagen per se since other programs that use it (I tested puddletag) work without problems.
    • Interestingly, if I edit the tag info within exaile, it shows up correctly afterwards.

    Environment

    • Operating System and version: Debian testing (buster), x86_64
    • Exaile Version: 4.0.0-rc2
    • mutagen-1.41.1
    Type: bug Type: regression 
    opened by ghost 17
  • Segmentation fault when adding too many files from sftp mounted dir

    Segmentation fault when adding too many files from sftp mounted dir

    Exaile crashes when adding too big files to the playlist

    Steps to Reproduce (for bugs)

    1. Mount a directory with mp3s using sftp (e.g. gigolo)
    2. Browse to the directory within the files tab in exaile
    3. Try to move them in the playlist (size of all mp3s was around 71MByte

    Expected Behavior

    Should not crash

    Current Behavior

    Segmentation fault

    Environment

    source: git exaile branch: master commit: e2543b4588e30f415766b67e55ee9235fc444593

    Type: bug 
    opened by jondoe1337 17
  • Upgrade Licensing to CC-BY-4.0 to be compatible with Debian FSG

    Upgrade Licensing to CC-BY-4.0 to be compatible with Debian FSG

    To be compatible with Debian Free Software Guidelines CC-BY-2.0 needs to be upgraded to CC-BY-4.0 See https://wiki.debian.org/DFSGLicenses#Creative_Commons_Attribution-ShareAlike_3.0_Unported_.28CC_BY-SA_3.0.29

    @mathbr Do you agree?

    opened by luzip665 0
  • winmmkeys: Use pynput; remove support for other modules

    winmmkeys: Use pynput; remove support for other modules

    pynput seems to be way to go for multimedia keys support on Windows, now that keyboard doesn't work anymore (see https://github.com/exaile/exaile/issues/830).

    I suppose pyHook might still work, but I haven't tested it in a long time. Being an extension module, pyHook is more annoying to deal with compared to pynput (which uses ctypes), so let's just settle on pynput.

    I haven't tested this with the installer; was hoping to test using a CI build, but apparently this needs a new SDK build (due to requirements.txt change), which in turn requires this to be merged to master first.

    opened by sjohannes 0
  • xl/trax: search_tracks: sleep only when running in secondary thread

    xl/trax: search_tracks: sleep only when running in secondary thread

    When processing the tracks in search_tracks generator, yield the current thread's timeslice only when running in the secondary (non-main) thread. This prevents unnecessary slow-downs in the main thread, where we want to finish the operation as fast as possible (especially under python 3.11 on linux, where time.sleep(0) introduced additional overhead).

    Fixes #832.

    opened by rokm 3
  • Upgrade Icecast plugin to use https://dir.xiph.org/yp.xml

    Upgrade Icecast plugin to use https://dir.xiph.org/yp.xml

    Upgrading Icecast plugin to use https://dir.xiph.org/yp.xml for retrieving stations. Fixes #829

    For now it is quite slow. And some optimizations and cleaning needs to be done.

    But can someone check if it works correct and as before?

    opened by luzip665 4
  • Track start/end events not triggered for not local streams on track change

    Track start/end events not triggered for not local streams on track change

    Steps to Reproduce (for bugs)

    1. Enable the OSD plugin (to better appreciate the issue)
    2. Add a radio playlist, e.g. any SomaFM playlist
    3. Play it
    4. Wait for a new track to be parsed

    Expected Behavior

    I'd expect to be notified of the track change via OSD

    Current Behavior

    OSD doesn't notify the track change

    Possible Solution

    I'm proposing this PR. I'm not sure that's the best way to "save" the current track prior to tags changing.

    Environment

    • Operating System and version: Slackware Linux 15.0
    • Exaile Version: Exaile 4.1.2-beta1+70fa4d1
    opened by eri-trabiccolo 0
Releases(4.1.2)
Owner
Exaile
A cross platform audio player
Exaile
DeepMusic is an easy to use Spotify like app to manage and listen to your favorites musics.

DeepMusic is an easy to use Spotify like app to manage and listen to your favorites musics. Technically, this project is an Android Client and its ent

Labrak Yanis 1 Jul 12, 2021
Gammatone-based spectrograms, using gammatone filterbanks or Fourier transform weightings.

Gammatone Filterbank Toolkit Utilities for analysing sound using perceptual models of human hearing. Jason Heeris, 2013 Summary This is a port of Malc

Jason Heeris 188 Dec 14, 2022
TwitterMusicBot - A Twitter bot with Spotify integration.

A Twitter Music Bot 🤖 🎵 🎶 I created this project to learn more about APIs, so it only works for student purposes. Initially, delving into the Spoti

Gustavo Oliveira 2 Jan 02, 2022
A Python wrapper around the Soundcloud API

soundcloud-python A friendly wrapper around the Soundcloud API. Installation To install soundcloud-python, simply: pip install soundcloud Or if you'r

SoundCloud 84 Dec 31, 2022
In this project we can see how we can generate automatic music using character RNN.

Automatic Music Genaration Table of Contents Project Description Approach towards the problem Limitations Libraries Used Summary Applications Referenc

Pronay Ghosh 2 May 27, 2022
Oliva music bot help to play vc music

OLIVA V2 🎵 Requirements 📝 FFmpeg NodeJS nodesource.com Python 3.7+ PyTgCalls Commands 🛠 For all in group /play - reply to youtube url or song file

SOUL々H҉A҉C҉K҉E҉R҉ 2 Oct 22, 2021
Implicit neural differentiable FM synthesizer

Implicit neural differentiable FM synthesizer The purpose of this project is to emulate arbitrary sounds with FM synthesis, where the parameters of th

Andreas Jansson 34 Nov 06, 2022
Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums)

LAKH MuseNet MIDI Dataset Full LAKH MIDI dataset converted to MuseNet MIDI output format (9 instruments + drums) Bonus: Choir on Channel 10 Please CC

Alex 6 Nov 20, 2022
GiantMIDI-Piano is a classical piano MIDI dataset contains 10,854 MIDI files of 2,786 composers

GiantMIDI-Piano is a classical piano MIDI dataset contains 10,854 MIDI files of 2,786 composers

Bytedance Inc. 1.3k Jan 04, 2023
Users can transcribe their favorite piano recordings to MIDI files after installation

Users can transcribe their favorite piano recordings to MIDI files after installation

190 Dec 17, 2022
nicfit 425 Jan 01, 2023
Graphical interface to control granular sound synthesis.

Granular sound synthesis interface SoundGrain is a graphical interface where users can draw and edit trajectories to control granular sound synthesis

Olivier Bélanger 122 Dec 10, 2022
This is my voice assistant Patric!

voice-assistant This is my voice assistant Patric! You can add can add commands and even modify his name Indice How to use Installation guide How to u

Norbert Gabos 1 Jun 28, 2022
extract unpack asset file (form unreal engine 4 pak) with extenstion *.uexp which contain awb/acb (cri/cpk like) sound or music resource

Uexp2Awb extract unpack asset file (form unreal engine 4 pak) with extenstion .uexp which contain awb/acb (cri/cpk like) sound or music resource. i ju

max 6 Jun 22, 2022
Algorithmic Multi-Instrumental MIDI Continuation Implementation

Matchmaker Algorithmic Multi-Instrumental MIDI Continuation Implementation Taming large-scale MIDI datasets with algorithms This is a WIP so please ch

Alex 2 Mar 11, 2022
Frescobaldi LilyPond Editor

README for Frescobaldi Homepage: http://www.frescobaldi.org/ Main author: Wilbert Berendsen Frescobaldi is a LilyPond sheet music text editor. It aims

Frescobaldi 600 Dec 29, 2022
SolidMusic rewrite version, need help

Telegram Streamer Bot This is rewrite version of solidmusic, but it can't be deployed now, help me to make this bot running fast and good. If anyone w

Shohih Abdul 63 Jan 06, 2022
PianoPlayer - Automatic fingering generator for piano scores

PianoPlayer - Automatic fingering generator for piano scores

Marco Musy 571 Jan 02, 2023
gentle forced aligner

Gentle Robust yet lenient forced-aligner built on Kaldi. A tool for aligning speech with text. Getting Started There are three ways to install Gentle.

1.2k Dec 30, 2022
❤️ Hi There Im Cozmo Music Bot A next gen powerful telegram group Music bot for get your Songs and music @Venuja_Sadew

🎵 Cozmo MUSIC 🎵 Cozmo Music is a Music powerfull bot for playing music on telegram voice chat groups. Requirements FFmpeg NodeJS nodesource.com Pyth

Venuja Sadew 3 Jan 08, 2022