: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
A music player designed for a University Project.

A music player designed for a University Project. Very flexibe and easy to use, a real life working application with user friendly controls. Hope u enjoy!!

Aditya Johorey 1 Nov 19, 2021
Sound-Equalizer- This is a Sound Equalizer GUI App Using Python's PyQt5

Sound-Equalizer- This is a Sound Equalizer GUI App Using Python's PyQt5. It gives you the ability to play, pause, and Equalize any one-channel wav audio file and play 3 different instruments.

Mustafa Megahed 1 Jan 10, 2022
DaisyXmusic ❤ A bot that can play music on Telegram Group and Channel Voice Chats

DaisyXmusic ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more

TeamOfDaisyX 34 Oct 22, 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
We built this fully functioning Music player in Python. The music player allows you to play/pause and switch to different songs easily.

We built this fully functioning Music player in Python. The music player allows you to play/pause and switch to different songs easily.

1 Nov 19, 2021
Stevan KZ 1 Oct 27, 2021
A telegram bot for which is help to play songs in vc 🥰 give 🌟 and fork this repo before use 😏

TamilVcMusic 🌟 TamilVCMusicBot 🌟 Give your 💙 Before clicking on deploy to heroku just click on fork and star just below How to deploy Click the bel

TamilBots 150 Dec 13, 2022
Scrap electronic music charts into CSV files

musiccharts A small python script to scrap (electronic) music charts into directories with csv files. Installation Download MusicCharts.exe Run MusicC

Dustin Scharf 1 May 11, 2022
Gateware for the Terasic/Arrow DECA board, to become a USB2 high speed audio interface

DECA USB Audio Interface DECA based USB 2.0 High Speed audio interface Status / current limitations enumerates as class compliant audio device on Linu

Hans Baier 16 Mar 21, 2022
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
LibXtract is a simple, portable, lightweight library of audio feature extraction functions.

LibXtract LibXtract is a simple, portable, lightweight library of audio feature extraction functions. The purpose of the library is to provide a relat

Jamie Bullock 215 Nov 16, 2022
Deep learning transformer model that generates unique music sequences.

music-ai Deep learning transformer model that generates unique music sequences. Abstract In 2017, a new state-of-the-art was published for natural lan

xacer 6 Nov 19, 2022
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
Code for csig audio deepfake detection

FMFCC Audio Deepfake Detection Solution This repo provides an solution for the 多媒体伪造取证大赛. Our solution achieve the 1st in the Audio Deepfake Detection

BokingChen 9 Jun 04, 2022
User-friendly Voice Cloning Application

Multi-Language-RTVC stands for Multi-Language Real Time Voice Cloning and is a Voice Cloning Tool capable of transfering speaker-specific audio featur

Sven Eschlbeck 19 Dec 30, 2022
MelGAN test on audio decoding

Official repository for the paper MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis The original work URL: https://github.com

Jurio 1 Apr 29, 2022
Port Hitsuboku Kumi Chinese CVVC voicebank to deepvocal. / 筆墨クミDeepvocal中文音源

Hitsuboku Kumi (筆墨クミ) is a UTAU virtual singer developed by Cubialpha. This project ports Hitsuboku Kumi Chinese CVVC voicebank to deepvocal. This is the first open-source deepvocal voicebank on Gith

8 Apr 26, 2022
Spotifyd - An open source Spotify client running as a UNIX daemon.

Spotifyd An open source Spotify client running as a UNIX daemon. Spotifyd streams music just like the official client, but is more lightweight and sup

8.5k Jan 09, 2023
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
Okaeri-Music is a telegram music bot project, allow you to play music on voice chat group telegram.

Okaeri-Music is a telegram bot project that's allow you to play music on telegram voice chat group

Wahyusaputra 1 Dec 22, 2021