: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 python library for working with praat, textgrids, time aligned audio transcripts, and audio files.

praatIO Questions? Comments? Feedback? A library for working with praat, time aligned audio transcripts, and audio files that comes with batteries inc

Tim 224 Dec 19, 2022
Cobra is a highly-accurate and lightweight voice activity detection (VAD) engine.

On-device voice activity detection (VAD) powered by deep learning.

Picovoice 88 Dec 16, 2022
Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications

A Python library for audio feature extraction, classification, segmentation and applications This doc contains general info. Click here for the comple

Theodoros Giannakopoulos 5.1k Jan 02, 2023
Open Sound Strip, Sequence or Record in Audacity

Audacity Tools For Blender Sound editing in Blender Video Sequence Editor with Audacity integrated. Send/receive the full edited sequence or single st

64 Dec 31, 2022
nicfit 425 Jan 01, 2023
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
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
An 8D music player made to enjoy Halloween this year!🤘

HAPPY HALLOWEEN buddy! Split Player Hello There! Welcome to SplitPlayer... Supposed To Be A 8DPlayer.... You Decide.... It can play the ordinary audio

Akshat Kumar Singh 1 Nov 04, 2021
A Simple Script that will help you to Play / Change Songs with just your Voice

Auto-Spotify using Voice Recognition A Simple Script that will help you to Play / Change Songs with just your Voice Explore the docs » Table of Conten

Mehul Shah 1 Nov 21, 2021
SomaFM Plugin for Kodi

SomaFM XBMC Plugin This description is a bit outdated. You can simply install this addon by browsing the official repositories from within Kodi. Insta

7 Jan 21, 2022
An audio digital processing toolbox based on a workflow/pipeline principle

AudioTK Audio ToolKit is a set of audio filters. It helps assembling workflows for specific audio processing workloads. The audio workflow is split in

Matthieu Brucher 238 Oct 18, 2022
:notes: Cross-platform music player

Exaile Exaile is a music player with a simple interface and powerful music management capabilities. Features include automatic fetching of album art,

Exaile 327 Dec 19, 2022
Omniscient Mozart, being able to transcribe everything in the music, including vocal, drum, chord, beat, instruments, and more.

OMNIZART Omnizart is a Python library that aims for democratizing automatic music transcription. Given polyphonic music, it is able to transcribe pitc

MCTLab 1.3k Jan 08, 2023
Tradutor de um arquivo MIDI para ser usado em um simulador RISC-V(RARS)

Tradutor_MIDI-RISC-V Tradutor de um arquivo MIDI para ser usado em um simulador RISC-V(RARS) *O resultado sai com essa formatação: nota,duração,nota,d

Gabriel B. G. 4 Sep 02, 2022
Audio2midi - Automatic Audio-to-symbolic Arrangement

Automatic Audio-to-symbolic Arrangement This is the repository of the project "Audio-to-symbolic Arrangement via Cross-modal Music Representation Lear

Ziyu Wang 24 Dec 05, 2022
Audio spatialization over WebRTC and JACK Audio Connection Kit

Audio spatialization over WebRTC Spatify provides a framework for building multichannel installations using WebRTC.

Bruno Gola 34 Jun 29, 2022
Using python to generate a bat script of repetitive lines of code that differ in some way but can sort out a group of audio files according to their common names

Batch Sorting Using python to generate a bat script of repetitive lines of code that differ in some way but can sort out a group of audio files accord

David Mainoo 1 Oct 29, 2021
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
Muzic: Music Understanding and Generation with Artificial Intelligence

Muzic is a research project on AI music that empowers music understanding and generation with deep learning and artificial intelligence.

Microsoft 2.6k Dec 30, 2022
A python script that can play .mp3 URLs upon the ringing or motion detection of a Ring doorbell. The sound plays through Sonos speakers.

Ring x Sonos A python script that plays .mp3 files whenever a doorbell is rung or a doorbell detects motion. Features Music! Authors @braden Running T

braden 0 Nov 12, 2021