Looking for help: Building a Awesome Open Source Music Player
-
Have you tried to use a music player lately?
Itunes is a bloated piece of junk, Windows media player hasn't seen a update in forever, Songbird is out of business, winamp looks like a chromey piece from 1980's, and Foobar 2000 has a nonexistant design. Don't get me started on open source and linux support among music players.
My goal is to build a free, open source, cross platform music player with a modern design in QT.
Currently I am working with one other person to design the music player Trackbox and have just started building a functional player.
This is our concept deisign for Trackbox:
!https://dl.dropboxusercontent.com/u/177483060/trackbox_ui_design.png(Trackbox Design Concept)!However, with just the two of use, the process is moving really slowly. We are looking for other people who might be interested in building a awesome music player.
If you would like to help, please respond to the post or send me a email at j@zatigo.com
You can also find us at trackboxfoundation on github
-
Hi,
On GitHub you mentioned "innovative features not seen in any other music player applications". Could you elaborate on your vision for these features?
Regarding "open source and linux support among music players", what are your thoughts on players like RhythmBox and Clementine? (I couldn't tell from your post if your dissatisfaction was with GUIs and features, or with lack of Linux support)
-
[quote author="JKSH" date="1375757447"]Hi,
On GitHub you mentioned "innovative features not seen in any other music player applications". Could you elaborate on your vision for these features?
Regarding "open source and linux support among music players", what are your thoughts on players like RhythmBox and Clementine? (I couldn't tell from your post if your dissatisfaction was with GUIs and features, or with lack of Linux support)[/quote]
Hi. I'm the other team member he mentioned in the post. Basically the different music library/player applications out there either have an awful interface, don't support file types like FLAC, or they aren't FOSS and cross-platform. For me, I care most about the interface and FLAC support, but FOSS and cross-platform is a big bonus I care about. Our goal is to make a great music library/player application that's FOSS and cross-platform, that supports many file formats including FLAC, and also has a really good, intuitive, modern interface.
On top of that, we have tons of features planned that are extremely helpful. One major example is this central idea of "pages." Pages can be anything, but they are something that shows you specific songs in your library. For example, if you want to listen to only songs by a specific artist, you right click or middle click or alt click or something on the artist name, and it will open a "page" with all of the songs from that artist. You can create a page from any tag, such as the album name, or even a search query. You "build" a page by adding one or more filter blocks, so you could search for "Prologue" and add that search block to a page, then add a block for an artist, and add a block for an album. You can customize your pages to temporarily get a library you want, and then you can "pin" the page so it says in your list of pages. This is also how playlists work: they are pinned pages with songs added in a specific order. The idea of playlists is annoying because they're hard to build and you probably don't like listening to the same songs in the same order. That's why pages help extend the idea of playlists by letting you create a temporary or pinned "page" that lets you quickly build what you want to play. In addition, we will replace the idea of a song's metadata "genre" with a "tag." You can have unlimited tags, so you could give a song, or all songs in an album a tag called "OST" or "soundtrack" or the genre or whatever you want. I plan to give all my songs with lyrics the tag "lyrics." Then you can build pages by adding "tag blocks." You can also filter playback to avoid specific tags. For example, I may filter playback to avoid the tag "lyrics" if I only want to hear instrumental songs. Pages and tags are extremely powerful.
We also want other simple yet helpful features, like a checkbox next to a song (iTunes has this but Songbird doesn't) to avoid playing a song. On top of that, there will be another way to check the checkbox: skip once. If you skip it once, it will skip over it but then check the box so it plays in the future and you don't have to worry about unchecking it later. There will also be a "play once" checkbox to play it once then uncheck it so it doesn't play in the future. We'll also have other simple features that other music players lack, like minimize to tray and the ability to change playback speed (slowing down or speeding up a song can totally change it and make it sound awesome, so we want to make it easy to do that). We also want the random/shuffle button to be smarter by optionally sticking to songs you play more often and generally avoiding songs you don't like. You can customize shuffle with tag blocks, star ratings, play counts, etc., and it may even learn from you skipping songs you don't like.
And above all of this is the extremely important thing: the interface. It's extremely important to have an intuitive, powerful, and modern looking interface. When I designed the (work in progress) mockup image shown in the original post, my goal was to avoid any unnecessary chrome or flair and make it look nice and act very usable. All advanced features should be easy to access but hidden when not in use.
That's pretty much the goal with trackbox: nice interface, FOSS and cross-platform, supports FLAC and other less common file formats, and has some awesome features that make listening to music super easy.
-
I have used RythmBox, but it is not cross platform, a must for us, and the interface leaves a bit to be desired. I've only used clementine briefly. It has many of the features we want to include, but I personally prefer a more itunes like interface, like our concept. It also strays into the social music field, looking up songs on last.fm and so on, something we are trying to avoid doing in trackbox.
-
At some point I may jump in and help, because I'm interested as well. Can't just yet though. But I would like to toss in 2 cents: one thing that would distinguish a music player for me is to connect the player with the concert-going experience. There are web services that track concerts; what I would love to see is a mashup that periodically checks my collections against upcoming shows by artists I love and alert me. Shows could be added to my calendar with a click and I would be reminded occasionally as the show date approached. Ticket purchase reminders could be added to. Anyway, I think this would really benefit music lovers in general.
-
[quote author="texrat" date="1377414836"]At some point I may jump in and help, because I'm interested as well. Can't just yet though. But I would like to toss in 2 cents: one thing that would distinguish a music player for me is to connect the player with the concert-going experience. There are web services that track concerts; what I would love to see is a mashup that periodically checks my collections against upcoming shows by artists I love and alert me. Shows could be added to my calendar with a click and I would be reminded occasionally as the show date approached. Ticket purchase reminders could be added to. Anyway, I think this would really benefit music lovers in general.[/quote]
Greetings! Thanks for taking an interest in the project. Your suggestion sounds like a good idea for a plugin (even an official one that could come installed with it), but goes in the opposite direction of Trackbox's vision. Trackbox aims to be very minimalistic in features that aren't for playing your local music tracks. This means that it has great features for playing your tracks, but avoids including social features, artwork/metadata retrieval, etc. The reason for this is that those features are what plague existing media players and distract them from a good interface, great music playing features, and a simple yet powerful overall application. While the basic application avoids social/other features, they would be great to include in plugins. They could come downloaded with Trackbox (possibly a different download option that includes everything), but would need to be enabled in the Plugins section of the Options menu.
It would be great if you could help with the project, even if you were to mostly work on that plugin. At the moment, we're fighting to get borderless windows to resize correctly, so development on the actual features of the application hasn't really started yet. Feel free to join in whenever you can!
-
Understood. Good idea.
-
Hi guys!
I was really looking for a project like you described! I even created a Qt account just to say that I want to help. Only problem is, I'm a complete n00b in Qt. I just recently finished my first application using BlackBerry's Cascade framework which is built on top of Qt 4.8. But I really want to learn Qt in depth.
What should I do next to get more involved on the project?
Cheers. -
Awesome! We would love the help! For more details, we are building our app with qt 5 and qt desktop c++. It looks like you were programming with qml, which we aren't using but will be a good foundation for using qt desktop c++, especially if you used c++ plugins with your qml.
The qt documentation has many good examples, if you are looking to learn about desktop c++, like http://qt-project.org/doc/qt-5.0/qtdoc/gettingstartedqt.html . Simple desktop qt stuff is a lot simpler than most people think, and pretty soon you'll forget you're using c++ .
If you need any help with anything you can always email me j@zatigo.com or post a message on this thread.
Our code is at https://github.com/TrackboxFoundation/Trackbox if you would like to look at it (currently not a lot, just a resizable and movable boarderless window).
Our list of features we are working on is at https://github.com/TrackboxFoundation/Trackbox/wiki/Planned-Features if you would like to contribute. You can edit the code by making a fork of it at github and sending us a pull request.
Currently me and my partner are communicating via chat, but that isn't a good way of communicating for more than two people, and will probably create a google group and website sometime soonish. We'll let you guys know when we do create them.
-
How does this project compare with amarok?
That one is Qt, Cross platform and very flexible UI wise...Owncloud has a pretty interesting approach too! I suggest you try it.
-
Owncloud is very cool, but it isn't really a music player, is it? It is a open sourced competitor to dropbox and drive. I was not able to install and try amarok, as their site was down, but I will try it out and take a look at it. We are shooting for a more simplistic metro style, than amarok, but are working with similar goals.
-
Owncloud is a cloud solution , and it has a music player. Its one of those "living in the browser" its all the rage these days. The UI looks remarkably like your mockup :)
I'm wondering which site you used that was down, please try this site as it typically works http://amarok.kde.org/
Notice that amarok is in all the linux distros, should you use it, to be installed from your package manager directly. -
http://amarok.kde.org/ was down temporarily, but is back up now so I will be trying out amarok. The owncloud player somewhat similar, but Trackbox will very much be a desktop app for now. Both me and my partner want a nice, offline way to play music. There already is a whole lot of online media player apps that do the job decently. It's possible that we could go online, but definitely not for a while.
-
Update on development: We are shifting design frameworks.
Even with just the few snippets of code we have written, trackbox's nonstandard design has caused normally small discrepancies like button highlighting into big issues. We have found severally bugs with QT effecting windows and boarderless frames, but as they don't appear like they are going to be resolved soon would have caused huge issues with the presentation of our application.
We are going to go with a application designed around chromium embedded.
This gives us many advantages in the short and long run including:
-
Allowing us to cover for platform discrepancies in a easy manner. Our interface will be written in html and css, but with a powerful c++ wrapper to handle low level events.
-
Since we are going with a nonstandard borderless window, we can get closer to native on every platform. We are planning on using WinAPI on windows and probably QT (or possibly GTK) on linux. This allows us to take advantage of all the features that each platform has to offer. This should allow us to have snapping, desktop notifications, and proper animations without distorting our design.
-
HTML, CSS, and JS are much easier to work with than c++, making development and bug fixing easier for people who aren't expiernced with the crazyness that can come with c++.
-
Plugin support should be much easier to implement with JS, as it doesn't have to be compiled and can have the full power to edit every high level part of out application without trouble.
-
Easy updating. As the c++ wrapper shouldn't need to be updated all the time, small updates that contain only html, css, and js can be easy to update with a built in updater, streamlining the process.
We haven't updated all of our code in the git repo yet, but it should be updated soon. We are still looking for QT developer help for the Linux wrapper. We also despratly need help in Mac OS X wrapper (most likely using qt), because none for the current developers use commuters running Mac OS X.
-
-
Hi,
What bugs did you find ? Where they reported ?
-
I found this bug: https://bugreports.qt-project.org/browse/QTBUG-33302 . Experienced this bug: https://bugreports.qt-project.org/browse/QTBUG-33541, but was not the discoverer. I also discovered that ubuntu overrides all pushbuttons with context to be highlighted orange, which completely ruins the design appearence, though that isn't qt's fault.
-
Update: Trackbox repo updated to the CEF/Winapi/QT version.