Skip to content

GSoC:2010 Proposed projects

Erik Massop edited this page Nov 4, 2017 · 1 revision

The following ideas are hints at possible projects that we would like to see in XMMS2. We also welcome new ideas warmly, so please feel free to suggest your own! If you are interested in working on GSoC 2010 with us, please drop by the IRC channel to ask any questions or details, we'd be glad to discuss the projects with you before you even start writing your proposal!

Your idea here

This is where you get the chance to implement that really cool music-player related idea that has been brewing in your mind. It may be some funny interface, a crazy effect, a revolutionary way to handle collections, or something different. Surprise us! We love new ideas!

  • Language: Depends
  • Level: Depends
  • Mentor: Depends

The official client

So far the XMMS2 project is lacking an official client. Last year we tried to do a SoC for getting the ideas and the ball rolling, it was not entirely successful, we believe that the biggest reason for this was because this task is soooo big. This year we take a different approach, we will split the official client into different parts. We suggest that the parts below are written standalone but all with the Qt toolkit. Experimenting with QML is probably the way to go for much of the components.

You might want to check the post-mortem blog post from last year's student, as well as the Star Wars-themed conceptual series of posts on theefer's blog.

GUI: Collections browser

A awesome collections browser is needed for the official client. How should it look like? What would be the killer feature? iTunes like interface? We need bold imaginative ideas and mock-ups.

  • Language: C++/Qt/QML
  • Level: Hard
  • Mentor: N/A

GUI: Infrastructure

Create a awesome infrastructure for the new official client.

  • Language: C++/Qt/QML
  • Level: Hard
  • Mentor: N/A

Other clients

Mobile client

Control XMMS2 from your iPhone, Android, Pre or MeeGo. Could be either a tightly integrated native client or a generic HTML5 client.

  • Language: Any
  • Level: Medium
  • Mentor: Tobias Rundström for iPhone and/or MeeGo stuff.

Your cool experimental client

Go crazy, experimental clients for iPhone, Android, maemo or maybe a fullscreen karaoke client.

  • Language: Any
  • Level: Medium
  • Mentor: N/A

Interoperability with third-parties

Rockbox sync

Rockbox is the super cool F/OSS firmware for your music player. It stores its metadata in an ondisk format called TagCache. This project would be to split the TagCache code from Rockbox out into a library, and then write a service client that given the mount point of a rockbox device and the name of a collection would merge that collection to the player. It should hopefully support updating the TagCache on the device, but that can also be done by having the device sync itself. It should also support removing all songs from an arbitrary collection from the device.

  • Language: C
  • Level: Medium
  • Mentor: N/A

MPD Bridge

An XMMS2 client that can act as an MPD server, thus allowing to control an XMMS2 server with MPD clients. There is one such attempt in Perl by rafl and another less advanced implementation in Python by danderson, that can be used as reference (missing some parts of the MPD protocol). Not a proposed project anymore, blame danderson who's doing it on his spare time free of charge!

  • Language: Any (Python would be a good choice)
  • Level: Easy
  • Mentor: N/A

Spotify xform

Stream and browse spotify songs (probably worth taking a look at Despotify).

  • Language: C
  • Level: Medium
  • Mentor: N/A

Audio Playback Features

Effect chain clean-up and crossfade plugin

One of the most requested features is a cross-fade plugin. Right now cross-fade is not possible since effects (and all xform elements) are re-created for each song. Also the interface for enable and manage effect xforms is very clumsy. This SoC task is divided in three tasks. 1) create persistent xforms 2) revisit the effect configuration and 3) create a crossfade plugin. This project could also investigate passing data in frequency domain in xform chain (see this ml thread). The following bugs are related: 908 820 2008. I think one of the great outcomes of this project would be that except cross-fade there should be a easier way to configure, enable and chain effects.

  • Language: C
  • Level: Medium
  • Mentor: N/A

Multiple channel support

New formats like AC3 and DTS supports multiple channels. XMMS2 is technically prepared for this but without any decent support in the output plugins. The task will be to get full multiple channel support in XMMS2 for the PulseAudio, alsa and oss output (bonus if CoreAudio also supports it!)

  • Language: C
  • Level: Medium to Hard
  • Mentor: N/A

Extending Features

Social Networking

Social Networks are the new hype - can you think of innovative ways to bring a social side to XMMS2, either as a new layer or using existing services (Last.Fm, Songkick, Musicbrainz, Twitter, Flickr, Facebook, Freebase, etc). Share music, talk about music, recommend new artists, share tags and ratings, possibilities are endless!

  • Language: Any
  • Level: Medium
  • Mentor: N/A

Logtable

We miss the log table, let's bring it back, maybe as a service client.

  • Language: C
  • Level: Medium
  • Mentor: N/A

Platform support

Mac OSX integration and distribution

Mac OSX is a different kind of beast than most other unixes, this also means that it needs some extra integration. We are looking for a student that could help further the XMMS2 integration with MacOSX. Primarily it would be to modify waf to be able to build .app bundles with all dependencies in them so that XMMS2 could be distributed as a APP on a DMG. Optional goodies: xmmsclient framework to be used in XCode for developing Objective-C clients, integration with media buttons (play, next, etc), listening to signals when computer goes to sleep (to pause music), automatic import of the iTunes library and much much more.

Bindings

emacs Client library

Emacs supports everything, and is a magical land where things are still amazing and special. XMMS2 also fits some of that description, so clearly one should be able to control and program clients for xmms2 from emacs! This project would be to implement the client library in ELisp as well as a small client, or better still EMMS integration.

  • Language: elisp
  • Level: Easy to Medium
  • Mentor: N/A
Clone this wiki locally