UPnP DLNA support in Elisa

It has been a long time since I have written about Elisa. In the meantime, I have been busy working on Elisa and also some other personal side projects. I plan to write about them later.

One area, Elisa is not fulfilling my needs is the support for UPnP DLNA. I am working actively on that but this is a lot of work and my plan is to probably release a preview of it in the next release to get feedback on it.

What is UPnP/DLNA ?

That is a way to connect different devices on your home network to share, play and control multimedia content.

One of the typical use case is to have some content stored on a NAS and use your smartphone to play it on some smart speakers.

This specification is important to me for the following reasons:

  • This is an ISO standard and is currently documented and anybody can implement support for it (as far as I understand) ;
  • This is supported on at least some widely used smart speakers (like some my family have) ;
  • This allows easy and seamless usage without requiring any configuration ;
  • This is one of the best existing solution and has wide support in existing OS and music players.

Current Status in Elisa

I have started some years ago a library written using Qt and leveraging the excellent KDSOAP library from KDAB . It is implementing both parts of UPnP:

  • The SSDP discovery protocol. It is based on HTTP, UDP and multi cast. This part of the library is partially covered by automated tests and should be mostly ready ;
  • The UPnP SOAP based communications (allow to browse music in remote servers, control a remote player, …). This part is mostly working but not enough documented nor covered by automated tests. It is developed in parallel with the matching code in Elisa.

I plan to continue working on this library to tidy it up, improve the documentation and write automated tests.

The main reason I started writing my own code is that the existing libraries I tested would require writing C code to generate XML trees using malloc and free. I am not feeling confident doing that. The other reason is that the amount of code I had to write is minimal due to using an existing SOAP library. At the moment, the main challenge is writing automated tests to stabilize the current code.

In Elisa, there is code using that library that integrates discovery of music servers. One can browse them and enqueue individual tracks for local play in Elisa.

This integration work has needed quite some re-engineering of existing code. I have used this opportunity to apply the lessons I have learned during the last years working on it. Quite clearly, this was sorely needed.

This led me to understand that re-engineering as soon as you understand what needs to be improved is much better than waiting and doing it later. Quite clearly, the features being worked by me during the past months have been hard to integrate because the code was not ready for it. The situations will soon be much better.

Next steps

The next steps is to finish a first usable state . I hope to be able to get this merged on the next stable release of Elisa. This first release will be done to get feedback on the stability of the code. I have seen exiting UPnP media servers return broken answers. I still need to find workarounds for those bugs. I suspect I will need to add a few of them.

I want to move the UPnP library through review by KDE developers to be able to make a proper release. Until that review, I will have to make beta releases. Without those beta releases, it will be hard for people to package this code and to distribute it to users.

This should also enable Elisa to interact with remote devices. That should help to integrate the support for more device types like ChromeCast for example.

Feedback is very much welcome on this work

Elisa is now published on Windows Store

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I am very happy to announce that Elisa has been published on the Windows Store.

Screenshot_20200209_161434

The challenge now is to be able to attract users and improve the support for the Windows platform. You can get it there.

The most important issue is to add support for the Windows APIs that allow to search files faster. That would allow a speed up in music discovery like Baloo allows us to do it on Plasma desktops.

If you want to help us, you are very much welcome to contribute (code, design, bug triaging, promo, …). Get involved in the KDE community. You can also find specific information on Elisa.

All this would not be possible without the KDE community. I would like to encourage people to donate to KDE to keep this possible in the future.

You can also support my work on the Patreon, Liberapay and Paypal platforms.

 

Edit: added a direct link to the store page.

Elisa has been submitted to the Windows Store

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I am very happy to announce that Elisa has been submitted to the Windows Store.

Screenshot_20200201_125643
Elisa on Windows 10 built with Craft

I strongly believe that we should push our applications on the popular computing platforms for two reasons: increase software freedom by having good free open source application easily usable and to possibly get more contributors and/or testers.

I would like to thanks all people that have made it possible to reach this state: Hannah von Reth, Kevin Funk, Christoph Cullman, Ben Cooksley and all people involved in Craft and the binary-factory and the Elisa contributors (Alexander Stippich and Nate Graham in particular but also new contributors Jerome Guidon, Edward Kigwana, Puneeth Chanda and others. The amount of support we get from being a part of the KDE Community is amazing and I would like to encourage people to donate to KDE.

On a side note, I have setup some accounts on Patreon, Liberapay and Paypal. Thanks a lot for the first donator that has motivated me to do that and donated some money. You can support my work via those services.

0.4.2 Release of Elisa

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I am happy to announce the release of 0.4.2 version of the Elisa music player.

The following fixes have been added to this release:

  • Fix restore of tracks with missing metadata in playlist (this was the case for tracks without album metadata) by Matthieu Gallien ;
  • Fix view selector not following the color theme (BUG 408435) by Matthieu Gallien.

Elisa with Breeze Dark
Fixed Elisa with Breeze Dark

Getting Involved

I would like to thank everyone who contributed to the development of Elisa, including code contributions, code reviews, testing, and bug reporting and triaging. Without all of you, I would have stopped working on this project.

New features and fixes are already being worked on. If you enjoy using Elisa, please consider becoming a contributor yourself. We are happy to get any kind of contributions!

We have some tasks that would be perfect junior jobs. They are a perfect way to start contributing to Elisa. There are more not yet reported here but reported in bugs.kde.org.

The flathub Elisa package allows an easy way to test this new release.

Elisa source code tarball is available here. There is no Windows setup. There is currently a blocking problem with it (no icons) that is being investigated. I hope to be able to provide installers for later bugfix versions.

The phone/tablet port project could easily use some help to build an optimized interface on top of Kirigami. It remains to be seen how to handle this related to the current desktop UI. This is something very important if we want to also support free software on mobile platforms.

0.4.1 Release of Elisa

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I am happy to announce the release of 0.4.1 version of the Elisa music player.

The following fixes have been added to this release:

  • Much improved accessibility by providing more metadata to help screen readers do their job by Matthieu Gallien ;
  • Use full-height separators in ContentView to make Elisa more consistent with other KDE applications by Nate Graham ;
  • Make Playlist items span full width (Fix bug 408210) by Nate Graham ;
  • Improve focus handling by improving keyboard navigation and usage and improving focus indicators by Matthieu Gallien ;
  • Fix delegates in the file browser to have same look than other grid view delegates (Fix bug 407945) by Nate Graham ;
  • Improve build system to require only the minimum versions and to provide better feedback (Fix bug 407790 and 407799) by Matthieu Gallien.

More fixes will probably land in the stable branch and one more bugfix release will be done.

The work on the improved accessibility is very important and more fixes need to be done in the master branch (require breaking string freeze). Elisa was not doing a good job here and that was in fact preventing a lot of people to use it. This is a real shame.

One more thing inspired me to eventually improve the accessibility by reading this old interview by the current Debian Project Leader Sam Hartman.

I have the feeling that Elisa is really making progress as you can see with this screenshot of the bugfix release:

0.4.1 Release of Elisa
0.4.1 Release of Elisa

Getting Involved

I would like to thank everyone who contributed to the development of Elisa, including code contributions, testing, and bug reporting and triaging. Without all of you, I would have stopped working on this project.

New features and fixes are already being worked on. If you enjoy using Elisa, please consider becoming a contributor yourself. We are happy to get any kind of contributions!

We have some tasks that would be perfect junior jobs. They are a perfect way to start contributing to Elisa. There are more not yet reported here but reported in bugs.kde.org.

The flathub Elisa package allows an easy way to test this new release.

Elisa source code tarball is available here. There is no Windows setup. There is currently a blocking problem with it (no icons) that is being investigated. I hope to be able to provide installers for later bugfix versions.

The phone/tablet port project could easily use some help to build an optimized interface on top of Kirigami. It remains to be seen how to handle this related to the current desktop UI. This is something very important if we want to also support free software on mobile platforms.

Elisa 0.4.0 Release

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I am happy to announce the release of 0.4.0 version of the Elisa music player.

The new features are explained in the following posts New features in Elisa, New Features in Elisa: part 2 and Elisa 0.4 Beta Release and More New Features.

There have been a couple more changes not yet covered.

Improved Grid Views Elements

Nate Graham has reworked the grid elements (especially visible with the albums view).

I must confess that I was a bit uneasy with this change (it was a part mostly unchanged since the early versions). I am now very happy about this change.

Screenshot_20190522_221314
Before

Screenshot_20190522_215801
After

Getting Involved

I would like to thank everyone who contributed to the development of Elisa, including code contributions, testing, and bug reporting and triaging. Without all of you, I would have stopped working on this project.

New features and fixes are already being worked on. If you enjoy using Elisa, please consider becoming a contributor yourself. We are happy to get any kind of contributions!

We have some tasks that would be perfect junior jobs. They are a perfect way to start contributing to Elisa. There are more not yet reported here but reported in bugs.kde.org.

The flathub Elisa package allows an easy way to test this new release.

Elisa source code tarball is available here. There is no Windows setup. There is currently a blocking problem with it (no icons) that is being investigated. I hope to be able to provide installers for later bugfix versions.

The phone/tablet port project could easily use some help to build an optimized interface on top of Kirigami. It remains to be seen how to handle this related to the current desktop UI.

 

Elisa 0.4 Beta Release and More New Features

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

In the part 1 and part 2 of this series, I have talked about some new features that landed in Elisa from several contributors.

Today, I would like to introduce the beta release of the 0.4 version and more features that will be in this version.

Android Support for Music Discovery

It is a goal to have a first class support of Android in Elisa. Currently, the only thing really done is the support for discovering your music on Android.

Android provides a service a little bit similar to Baloo allowing an application to query all the music files on a device. Elisa is supporting that and a very simple interface allow to see that.

In order to have a true support, two steps need to be done:

  • Elisa should have an user interface usable on small screens (possibly leveraging Kirigami2 much more than currently) ;
  • Elisa should be separated to allow your music to continue once your device is no longer displaying the application (related to the Android services).

Help is very much welcome on this project given I currently miss enough time to make progress on this.

Support for Embedded Cover Images

The music cover images can be embedded in the metadata of a music file. Elisa is now showing them.

Screenshot_20190504_222220
Same music in Elisa and in Dolphin showing embedded cover

I would like to thank Alexander Stippich who added support for that in KFileMetaData and made it so easy to add support in Elisa. It would probably be a good idea for anybody needing to query metadata for files in a Qt based application to have a look at KFileMetaData.

Easy Navigation to Album or Artist of the Currently Playing Track

In the header bar, it is now possible to navigate to the album or artist of the playing track by clicking on it (contributed by Diego Gangl). The mouse nicely changes to indicate that.

Screenshot_20190504_224004
Navigating to the artist of the playing track

Beta Release

We are preparing for the next stable release. As such, there is a feature freeze and an ongoing effort to squash as many bugs as possible.

We really appreciate any feedback on the current state via bugs.kde.org. We welcome bug report or feature suggestions.

You can get the next release by building from source. The windows installer is not included because the current ones are not in a releasable state (there are some platform specific code not in good shape).

For flatpak, some really nice additions to flathub has made it easy to provide builds for beta releases. The simplest way to install it is via this command:

$ flatpak install https://flathub.org/beta-repo/appstream/org.kde.elisa.flatpakref

How You Can Help

Elisa is a project that welcomes new contributors and feedback.

There are currently quite a few reported feature requests that may have to wait for a long time except if a new contributor shows up. It is really a good opportunity to contribute to a free open source project in the KDE community.

The KDE community is really a nice place to work on free and open source code.

New Features in Elisa: part 2

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

In the part 1 of this series, I have talked about the following additions:

  • libvlc as a music player alternative to QtMultimedia ;
  • progress shown directly on the taskbar entry ;
  • an improved party mode.

Today, I would like to introduce more features that will be in the future 0.4 stable version.

Undo Support when Playlist is Cleared

Elisa is currently a player with a strong focus on the current playlist. It is quite possible to have spent some time to compose a playlist. This is something valuable for the user.

What if suddenly, you hit the wrong button and lose all your work ?

A notification will be shown to undo this operation. This feature has been contributed by Jérôme Guidon. Thanks a lot for its first contribution !

Notification to allow undo a cleared playlist operation
Notification when the playlist is cleared

New Browsing Views

It is now possible to browse the most recently played tracks or the most frequently played ones.

The idea is to show the 50 last played tracks or the 50 most frequently played tracks.

The currently implemented browsing modes are the following:Screenshot_20190424_222408

It is planned to add more modes but that requires a way for the user to configure it to its liking before adding more.

A New Context View

Starting from a very good design work by Diego Gangl, the new context view is now able to show some of the metadata from the currently playing track like the composer, lyricist, play count, lyrics …

Screenshot_20190424_231427

The current support for lyrics comes from a suggestion from Nate Graham. It is only supporting lyrics written in the track metadata. Support for online services will come in the next releases.

Optimizations And Reduced Memory Usage

Elisa is now loading the views fully on demand. It means that no memory or processing power is needed until one clicks on one of them. It also means that they no longer take resources when they are hidden.

One of the consequences is a better startup time and reduced memory usage. Another one is that when loading your music a busy indicator is shown to help understand what happen.

The model that is used to show your music is also now completely generic and should allow a much greater extensibility and customization.

One of my long term goal is to offer a way to fully customize the browsing of music to the user liking or type of music or …

Conclusion

Now is a very good time to get involved as the next version is being stabilized. You can help with code, bug reporting or triaging, documentation …

Thanks a lot to all contributors to this project be a feature, a fix, ideas, reported bugs …

Thanks a lot to the KDE community that is really providing very useful and powerful tools to project like this one.

The easiest way to do that is by using flatpak or Windows installers produced by the KDE continuous build servers. I now that some distributions also have package built on top of Git.

New features in Elisa

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

I have been quiet for some months but during those months, Elisa has seen many improvements by existing and new contributors and a new stable version is planned in the coming weeks.

I will publish some blog posts about the many new features implemented in the master branch.

Support for libVLC

Today, I would like to talk about the added support for playing audio through libVLC.

One of my goals had been to be able to offer the best possible first impression when starting Elisa. With the current stable version, flatpak builds and Windows builds are not able to support many audio formats. This is a pretty bad first experience.

The big advantage of using libVLC (except the API is nice and easy to use) is the ability to easily bundle the support for many audio formats. Thanks a lot to the VideoLAN project for their work.

Support for progress bar on Plasma Desktop taskbar entries

Elisa has long had support for showing track progress when playing on Windows platform.

The next stable version will also be able to show progress when running inside Plasma workspace.

Screenshot_20190411_231225
Progress bar on Plasma workspace

Improved party mode

Elisa has been featuring a party mode since 0.3 release. It is now also featuring a simplified playlist view.

Screenshot_20190411_231616
Improved party mode

In party mode, one is now able to switch to any track by just clicking on it. This is especially nice for laptops with touchscreen. Anybody can quickly switch to a specific track by a simple touch.

Conclusion

Quite some other features are already ready. They will be the subject of other posts.

There are still some features that are still under review for the next stable release. This is the main reason no firm date are currently set for the next release.

I would like to be able to make the best possible release. In order to do that, feedback would be very welcome.

The easiest way to do that is by using flatpak or Windows installers produced by the KDE continuous build servers. I now that some distributions also have package built on top of Git.

0.3 Release of Elisa Music Player

0.3 Release of Elisa Music Player

Elisa is a music player developed by the KDE community that strives to be simple and nice to use. We also recognize that we need a flexible product to account for the different workflows and use-cases of our users.

We focus on a very good integration with the Plasma desktop of the KDE community without compromising the support for other platforms (other Linux desktop environments, Windows and Android).

We are creating a reliable product that is a joy to use and respects our users privacy. As such, we will prefer to support online services where users are in control of their data.

New Features

The post about the beta release summarizes all the new features in the 0.3 release.

Screenshot_20180912_231947
New minimal mode

Fixes

The following bugs have been worked on or fixed since the beta:

  • Bug 397446 Scrolling in the Album, Artist, etc. and Now Playing views is much too fast ;
  • Bug 398924 Status box is too small ;
  • Bug 387437 Elisa unaware of Baloo if it starts after Elisa ;
  • Bug 398718 User should be able to start typing to search after pressing Ctrl+F ;
  • Bug 396840 Elisa – High memory usage (improvements have landed in 0.3.0 release and more will come to 0.3.1) ;
  • Bug 392778 Elisa should better handle being scaled down to a small size (not yet finished but some improvements are in 0.3.0 release) ;

Getting Involved

The team would like to thank everyone who contributed to the development of Elisa, including code contributions, testing, and bug reporting.

We are already working on new features for the next release. If you enjoy using Elisa, please consider becoming a contributor yourself. We are happy for any contribution!

We have tagged some tasks as junior jobs. They are a perfect way to start contributing to Elisa.

The flathub Elisa package allows an easy way to test this new release.

Elisa source code tarball is available here. There is also a Windows setup at the same location (thanks to the Craft and binary-factory teams).