Skip to content

GSoC:2008 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 2008 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

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

Currently, the C client library and the bindings (Python, Ruby, etc) have to be manually updated whenever a new function is introduced on the server. This work is tedious and mechanical, and the whole client API could in fact be automatically generated from a high-level description of the functions. The goal is therefore to determine the semantics of these descriptions (possibly using XML), and then use them to generate the different API source files. There is already some proof of concept.

  • Language: Python / XML
  • Level: Advanced
  • Mentor: N/A

New Media Library Database Backend (S4)

XMMS2 uses SQLite as the backend for its media library. Since XMMS2 basically maps a key-value pairing, it has been argued that using an SQL database in this case is suboptimal, especially with regards to some SQLite limitations. In this project, the student have to take advantage of the abstraction provided by Collections, and look into implementing a new backend for the XMMS2 media library. This project would include performance testing to showcase the differences with the current backend in various contexts of use.

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

XMMS2-specific GUI toolkit widgets (GTK+ or Qt)

XMMS2 clients developed for GTK+ or Qt often implement the same widgets for displaying playlists, media status, and the media library. This project would be to implement a set of widgets for developing an xmms2 client with one of the popular toolkits. The study of existing music players and an interest in HCI would be required. Advanced examples include: a rich medialib display (scriptable, see foobar2000), a graphical editor for Collections, cover art manager, preferences panel for changing configvals, etc.

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

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.

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

Collections 2.0

Collections have been merged and are now widely used as the query mechanism for our media library. However, the current implementation has its limitations and lacks some commands to allow full access to medialib information. In this project, the student would extend Collections features to support the following features (and possibly others): support for medialists in the DAG (add ordering and order-aware operators), new query functions (list all property keys for a media, list all values for a property, get N random media for a collection), aggregate functions for querying (e.g. count, average), new operators or namespace to match status-dependent media (e.g. current track, playlist context, etc), handle sources properly (select right value according to source preferences), use functions as select or matching fields (e.g. "match all media where lastplayed > NOW() - 1WEEK").

  • 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

High-level clientlib (xmmsclient-easy)

Development of a higher-level client library, that would include features many clients have in common. Current ideas for xmmsclient-easy modules include: server state caching (playlist, metadata, playback status, etc), a new modular collection pattern parser, etc.

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

New command-line interface (nycli)

Finish the development of the new official CLI, started by theefer. Nycli aims at providing a very powerful command-line interface, and new ideas are always welcome! The base code is ready (see the 'nycli' branch in theefer's tree), but not all commands are yet implemented, options must be added, along with configuration file support, advanced search pattern, etc.

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

New service clients

Development of multiple service clients, to be discussed. Random ideas: bookmark, lyrics, stop-after, alarm, party-shuffle, medialib-updater, metadata write-back, last.fm, etc. Note that this task assumes that Service Clients have been merged.

  • Language: To be discussed
  • Level: Easy to Medium
  • Mentor: N/A
Clone this wiki locally