Mars is a music player for your computer, designed to easily handle
large music collections and help you discover new music.
It aims to be the best way to listen to recorded music.
With the ability to rate your favourite artists, albums and tracks,
most of the time you can quickly browse just your
favourites, but with one click you can view or search your entire
collection. It takes just a few clicks to play your two
favourite albums. You can also see the music your friends rate highly
and what they have been listening to recently, giving you ideas about
what to listen to when exploring their collection.
Mars' plug-ins integrate with Wikipedia, Google, Music Sites and
online stores, so it only takes a few clicks to discover a band's
latest album and start downloading it.
Features:
- Browse and find your favorite music quickly.
- Uncluttered display that does not look like a speadsheet.
- Use your smart-phone/iPhone as a remote so you can select albums
from the couch.
- Makes a feature of album art.
- View your friends' favorites and the music they have been
listening to recently, e.g. after copying a friend's collection you
don't just have
thousands of albums to wade through.
- Plays MP3, FLAC, Ogg Vorbis, WMA, WAV, CDs and more.
- Robust.
- Music can be viewed and maintained by artist or album rather than
as a sea of songs.
- Use last.fm to recommend new music based on your taste.
- Show history of the music you or your friends have played.
- Supports multiple users if your flatties don't share your taste
in music.
- Plugins
- Wikipedia musician information such as new releases.
- When browsing new albums play songs released as singles.
- Play the globally most popular songs of an artist
- Surf similar artists an songs
- Seach for torrents with music by an artist
- Web server to control the player remotely, select music from
your couch using your phone as a remote
- Treat a folder of songs as a CD and
automatically determine the correct names using CDDB
- Plugins can be used togeather via a dialect of HTML,
e.g one may show the artists that are similar to another, then right click
on the artist name to view artist information on Wikipedia.
- Plugins can be written in any programming language (interfaced
like CGI), i.e. Python, Java (all JVM languages), C++ or C# (all .NET languages).
Screenshot:
Code quality
Mars is of a higher quality than our major compeditors, here are some
files that cause competing programs to malfunction:
- This file caused Windows Media Player or Windows Explorer (open
file properties) to stop
working.
- Windows Media Player/Windows Explorer and iTunes don't read ID3 v2.4 tags, 6% of one music
collection I analysed.
Development Progress
2.0 beta 4
- Plugins may display windows using a dialect of HTML, this allows further
plugins to be run, e.g. The Show Similar Artists plugin shows a list of artists, using the
<artist>
tag, these may be right clicked on to run further artist plugins, such as one to show artist information on Wikipedia or search for new music by the artist.
- Plugin interfaces to run JVM (Java) or .NET
(C#)
- Port back to Linux
2.0 beta 3
- Plugins:
- Background: Use Wiimote as a remote. A real hassle as
Microsoft only implemented half of the Bluetooth protocol on Vista
- Background: Alarm plugin, set an alarm to raise in 3 minutes
time, play the bells from Pink Floyd's Time song if you have it in your
collections
- Artist: all-music page, last.fm page, you tube search, google
for torrents
- Artist: Show similar artists from last.fm, HTML results
hyperlinked to library window
- Artist: Play or show n favourites from last.fm
- Album: Play or show n favourites from last.fm
- Album: Play tracks released as singles (from discogs.com)
- Album: all-music page
- AlbumInfo: Get cover and year from last.fm
- Track: you tube search
- Track: Show similar tracks from last.fm, HTML results
hyperlinked to library window
- Library: Play all favourite tracks (*** or better)
- LibraryMaintenance: rename from CDDB loookup, rename from
CDDB file/url
- LibraryMaintenance: set track number from filenames
- LibraryMaintenance: for compilations, title = artist
- title, artist = various artits
- WebDAV ("Web Folders") support in the web server, so you can drag
and drop and entire album or artist over the web.
- Ctrl-MouseWheel to change the volume
- Suport sharing music on a dynamic IP address, share URL should
use the dynamic as a psuedo hostname, e.g. http://dynamic:2424
- Support serving files from behind a firewall if the client is
visible or
has port forwarded.
- Use Proxy servers
- Wizard for configuring sharing taste and music
- CD Writing using StarBurn SDK from The Ukraine
- Support multimedia keyboards
- Shift-Left and Shift-Right to jump 5 sec forward and back
- Override artist and album name when importing, get year and track
number from tags
when importing using regex, allow multiple imports until all files
matches
- Import Dialog: Suport path and tag parsing, artist/album/track
properties, renaming, skipping and
plugins such as search-and-replace, replace-spaces and Capitalise
- Show window of newly imported Artists/Albums/Tracks
- Files tab for browsing file system
- Added search to Web Interface, lots of enhancements, more AJAX.
Detect or select a mobile
version of the interface. The iPhone makes a geat remote!
- Moved Path Templates configuration into into [Advanced...] in
Library
configuration. Check path templates as user enters
them.
- Any volume adjustment unmutes as there is not obvious visual
indication of muted state - to avoid screen clutter. Show [MUTED] in
title bar if mute
- Infrastructure to support skins
- Object Orientates interface to Mars in Python
- Plugins can be written so you can continue to use Mars while the
plugin is running, attached=true, attached=modal to
stop Mars being accesable while th eplugin is running
- Plugin /event is now asyncronous with a timeout, so polling is
efficient, Mars only replied to the plugin
when an event is available
- Fixed: Update volume slide when adjust volume using Ctrl-Up or
Ctrl-Down
- Separate the retrievel of share URLs from retreival of taste as
with dynamic IP addreses the share URLs may change frequently, both
HTTP transactions are sent concurrently.
- Fixed Del key not working in list window
- Show dynamic buffer status in Tools | Options | Output
- Optimized writing ID3 tags
- Fixed Winamp Input Plugin/AAC playback
- Read Xing VBR MP3 header.
- Rearchitected the playback threads/objects/interfaces, use
Message Pipe for ITC, except for
the main thread getting the track pos.
2.0 beta 2
- Automatically store and retreive album covers at
www.planetearthsoftware.com
To quickly retreive album covers in an existing collection run Tools |
Get All
Album Info | Fast option.
- Copy or Move Files or Folders into the library, e.g. to import
recent
purchases or downloads
- Delete Artist, Album and Track (from properties dialogs)
- Removed Windows Explorer and Command Prompt from context menus
are tagging, renaming and deleting are all implemented inside Mars now.
Right click on background of properties dialogs still gives Windows
Explorer and Command Prompt options.
- Web interface: Filter artist by rating, show album years and
track numbers
- Ctrl-A selects all items, allows you to enqueue the whole
collection
- bug: Repaint the screen properly on exit
- Fixed renaming an album's artist when the artist only has that
album and tracks are parsed using tags
- Fixed setting album year and renaming album
- Fixed show individual menu when ony one item selected
- 118,000 lines of code, 252,000 including libraries
2.0 beta 1
- Original Graphic Design
- Playlists in their own tab
- Automatically check for new Mars releases
- Split web-server plugin into web-control and web-sharing to
simplify security, no need for
allow-control/allow-download/whitelist/backlist
- Underline artist/album/playlist/track on mouseOver to indicate
that
clicking will perform a mutating action rather than selecting
- Plugins for All Music and Amazon
- Renamed "Skins" to "Colours"
- Install with a colours scheme for each of the 16ish HTML 4 colours
- Web server polling times and be tweaked by web server
- Infrastructure for skins
- 116,000 lines of code, 250,000 including libraries
2.0 alpha 10
- View entire remote user's collection, rather than just items they
have rathed or listened too
- Download the remote user's music:
- To share: Go to Tools|Options, Sharing page, tick Share
ratings and history, then [New Account]. Enable the Web Server in the
Plugins tab, Background section. This defaults using port 2480, this
port must be forwarded though your fire wall to your machine. In the
Share URLs: fields of you Account Details enter http://<firewall-IP>:<port>,
e.g. http://201.24.9.75:2480.
- To download: In Tools|Options, Users page, hit [Search for
Remote User] and search for your friends, you may need to be authorised
to download their music.
- Surf viewers and providers in remote user search, from
Tools|Options Users screen hit [Search for Remote User], then [Viewers
Of] and [Users Viewed By]
- Web server more reliable using AJAX for updating list
- .mars file format v21, .taste file format v3
- Web server can serve all the file, using URL /mars/<artist>/[<album>/][<num>][%20][<name>]<.ext>,
share URLs default to this URL template.
- Store child process IDs in registry for clean up later
- GZip compress the taste files for transmission 1.1 MiB -> 380
KiB
- Cache downloaded taste files as they are now sizable (1.1 MiB
rather than 80 KiB)
- A 24,000 song collection (1.1 MiB compressed to 380 KiB) takes 15
sec to download (@ 256 kbps) and 20 sec to load (@ 2.2 GHz), play
history takes a neligible amount of space.
- Web Server multi-threaded
- 111,000 lines of code, 245,000 including libraries
2.0 alpha 9
- Plug-ins configured though dialogs
- Per user Plugin-in configuration
- Plug-ins have help
- Cleaned up audio fidelity when machine is busy (set thread
priorities)
- last.fm plugin
- Search for remote users rather than exchange .martian files
- Hid direct http sharing
- Automatically default .mars file in Application Data so user
don't need to think about this unless they want multiple collections
- When no music visible show message showing why
- When no music in collection show button to add music directories
- View Background Plugin's status
- Enhanced support for Winamp Input plug-ins
- Use metadata interface - allows complete .m4a support using FAAC (Download in_mp4
here
- install to c:\Program Files\Mars)
- Configure, Help and Info Box (via Track dialog)
- Mars.ini installed by default, copies to argv[0].ini for
Scanner and CDWriter
- Hack in GetFileInfo to get metadata if plug-in does not support
metadata interfaces, format title string as "For
Mars:<delimiter>:<key>=<value><delimiter><key>=<value>
"
- Plug-in Interface enhancements
- Respond to events
- track changed
- user pressed buttons
- Add menu items (enable and disable)
- Launch web browser/GUI shell/terminal
- Configuration (in script header)
- Help (in script header)
- Decoders have Configure, Help and Info Box
- Decouple Audio output towards removing SDL dependency
- Sharing is per local user (choice hidden when only one local user)
- RemoteUsers/UserSkins/sharing configuration refactored into
single Users heirarchy
- Initial COM work to support playing multiple files from Window
Explorer, very convoluted, bought a book
- Bought a book on Digital Marketing and The Tipping Point, about
phenomenons.
- Web server taste sharing uses MySQL database
- 95,000 lines of code
2.0 alpha 8
- Added menu bar
- Open files and directories
- .mp1 and .mp2 playback though DirectShow .mp3 codec
- De tooltips
- Move install file association code to C++ in DLL
2.0 alpha 1
- Play audio rather the just managing the library and controlling
Winamp (Windows) or XMMS (Linux).
- Configurable path parsing
- History
- Sharing History and Ratings
- Configuration GUI
- Named Mars (was GMT - Gene's Media Tree)
- Gapless playback - start decoded the next track before the first
has
finished playing, so there is no gap if opening the file takes 2
seconds, e.g. CD Drive.
- Port back to Windows
- Unicode