Work in progress


shoutcast player

I'm currently working on support for shoutcast streams in MythMusic. It's in a fairly good state already and I use it daily at work and at home for tunes.

Features:

  • Supports Shoutcast streams
  • Metadata editor for adding new stations
  • Can remove stations from UI
  • Parses stream metadata, format configurable
  • Displays station logo as Album Art

If you want to take it for a testdrive, apply the patch. It'll create a music_radios table with all the SomaFM and Digitally Imported stations and add a RadioMusicDBSchemaVer to your settings table. This SchemaVer is independent of the MusicDBSchemaVer, but hopefully one day will be folded into it.

And a patch for MythTV 0.21 big patch The diff was done again SVN revision 16678.

Get everything in one big patch The diff was done again SVN revision 16380.

screenshot
Screenshot of MythTV playing SomaFM's 'Secret Agent'.
screenshot
Screenshot editing a channel.

iPod support

I've started working on iPod support in MythMusic. Using the KDE ipodslave library as a base, I plan on a solution, where plugging in the iPod will make it appear on the toplevel tree right after "All My Music". There will be context sensitive menus to allow transferring albums or entire artist collections to/from the iPod.

While initially targeting the iPod, I do plan to make the mechanism generic enough that it'll be easy to add support for other mp3 players, of course, not having anything but the iPod, it'll be hard to predict what "generic enough" means...

Currently the main obstacle is the rigidness of MythMusic's tree (both the playbackbox and databasebox ones), and especially how hard it is to add new collections to it (something that I ran into while doing the shoutcast player). Untill I've worked out how to solve this (ie. redo the tree building code...) I won't get much done on the iPod support.


Patches


musictheme.tar.gz

Change the layout of mythmusic to have more screenarea allocated for the browser, and also adds some small icons for shuffle/repeat. This patch is very much a personal preference thing.

Screenshot of modified mythmusic look.

id3tag.patch

Fixes some id3 tag issues ;

  • id3v1 tags aren't removed
  • if no id3v2 tag exists, changed metadata isn't saved

Status: Filed ticket with patch

albumart.patch

Display album art in the info banner, also adds code to read the APIC frame from mp3s.

Screenshot of squares while banner is shown.

Status: Filed ticket with patch

mbanner.patch

When the track changes, display a banner at the bottom of fullscreen visualisers with the song info.

New visualiser ; Squares. Two rows of sixteen squares that change colours ala the Spectrum visualiser.

Screenshot of squares while banner is shown.

Status: In SVN pr. 2006-09-05

treebuilding.patch

Big patch that revamps how mythmusic builds tree. Greatly speeds up the building (see here for measurements).

Consists of many small initial tweaks and then a redo of the treebuilding code :

Status: In SVN pr. 2006-02-16

cdrip.patch
  • Smoother overall progress bar in the cdripper (pr. sector rather than pr. track)
  • The "Import CD" button is the one to have focus.

Status: In SVN pr. 2005-05-03

lcd.patch
  • Support for CVS version of lcdproc.
  • Optionally show "Artist - Album - Title" when playing music.
  • Reintroduced the 'music' screen instead of using 'generic' screen when playing music.
  • Cleanup of how mythmusic calls LCD.
  • Fixes to work on larger LCDs. Various fixes to the handling of screen priorities.
  • Removes need to restart frontend when changing LCD settings.

Status: In SVN pr. 2005-05-03, except fixes to mythdialogs.cpp (rejected), see lcd2.patch.

lcd2.patch

Updated fix to make MythProgressDialog properly update LCD progress bar (update to lcd.patch).

Status: In SVN pr. 2005-07-12

lcd-busy-520.patch busy.patch decoder-refactor.patch dbupdate-short2.patch
  • Reread ID3 tags for files, if nessecary, when updating mythmusic database.
  • Some refactoring in the Decoder object hierachy (move up method from subclasses into superclass, use template method to implement difference).
  • Also introduces a MythBusyDialog to show a busy-spinner style progress.
  • Fixes a missing "flush" call in lcddevice.cpp (when sending to the mythlcdserver).
  • Fixes to the LCD code so the LCD can also display a busy-spinner.

busy depends on lcd-busy-520

dbupdate-short2 depends on lcd-busy-520, busy and decoder-refactor

Status: In SVN pr. 2005-10-27

musicsplit.patch

Introduce "splitartist1" as path keyword for mythmusic, split artists into groups of (A)(B)(C)(D) instead of splitartists (ABCD).

Status: In SVN pr. 2005-05-03

observable.patch

Refactor. There were three different classes that implemented a add/removeListener & dispatch interface, and for the shoutcast code I needed a fourth, so this patch refactors that interface out to a MythObservable superclass that can be inherited to get the add/removeListener interface.

Status: In SVN pr. 2005-12-08

decoderlocking.patch

Refactoring of how to lock/unlock the mutex for Decoders. I needed this for the shoutcast decoder.

Status: In SVN pr. 2005-12-08

metaformat.patch

Patch that adds the 'format' field from the db to the object. Also something I needed for the shoutcast decoder. This is a workaround to be able to identify if a Metatata object is a stream. The cleaner alternative is to use inheritance, but I'll defer that.

Status: In SVN pr. 2005-12-08

visualisers.patch

Not sure if this is a bug or a problem with shoutcast streams. But they tended to only use 14/th of some visualiser (ie. StereoScope). Turned out that they only send 128 samples instead of 512 pr. VisualNode. This patch makes MonoScope, StereoScope and Goom handle <512 (like BumpScope).

Status: Filed ticket with patch

Patch for ; Updated March 21st 2008 for MythTV 0.21 and SVN head
  • Adds ShoutCast streaming support
  • Allround lots of patches and touches to support the shoutcast code
  • Metadata editor for streams
  • Show station logo in AlbumArt visualiser
  • Incorporated patches from Bill Cizek for support of premium DI streams.
  • Incorporated patches from Cameron Watt for more generic UI theme support.
  • Updated the default radios (SomaFM, di.fm and SKY.fm)
  • Managing radios (adding/removing) still buggy.
If you try this out, and you want to report issues, run with "-v network,playback" for debug info. Bugs/comments etc. can be mailed to me at myth atsign eskil dot org.

Status: Useable.

tree-sorting.patch

Change MythMusic's tree builder to use QPtrList::sort instead of a very duplicated copy of bubblesort. See here for profiling and timing measurements.

Status: In SVN pr. 2005-10-25

Updated March 21st 2008