Skip to content
sampsyo edited this page Apr 15, 2012 · 2 revisions

This page contains disorganized notes regarding what we can learn from other projects that have gone before.

Library Management

Well-respected OSS media players and how they've accomplished library management.

Banshee

Written in C#. Browse source. Checkout: svn co http://svn.gnome.org/svn/banshee/trunk/ng-banshee

  • Banshee.Services/Banshee.Database/BansheeDbConnection.cs: pragma synchronous=off for speed
  • Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs takes care of database initialization (not just migration as name would suggest); schema in InitializeFreshDatabase
    • has TrackID, ArtistID, and AlbumID with correspinding CoreTracks, CoreAlbums, and CoreArtists tables for efficient access to artists/albums; CoreTracks has indexes on ArtistID and AlbumID; CoreArtists and CoreAlbums have indexes on their names

Exaile

Written in Python. Browse source. Checkout: bzr branch lp:exaile

  • Schema in sql/db.sql.
    • tracks table primary key is path (which is an integer?! -- what's going on?)
    • like Banshee, also has artist, album tables

Amarok

Written in C++. Browse source. Checkout: svn co svn://anonsvn.kde.org/home/kde/trunk/extragear/multimedia/amarok/

Quod Libet

Need to look at this.

et cetera

Playback

Quod Libet has a Gstreamer player module that seems highly refined. It's a very tempting playbook page to steal. They even have gapless working. Check it out.

Cloning MPD

librmpd includes a "fake" MPD server for testing. Interesting! The file.

Automatic Tagging

Related autotaggers, mostly in Python:

Clone this wiki locally