CalcTunes is a music player designed from the ground up for power users. I wanted an Android media player that let me be in control of where files are located, what files are part of my library, and when they should be scanned. I also was tired of copying all my songs manually to my phone and having to organize them in folders and manually transcode my FLAC collection into Vorbis or MP3. To that end I found Subsonic, a GPL media server that lets you browse and automatically transcode your library via a simple XML-based API.
CalcTunes now supports a wide variety of media sources and organization types:
Libraries are user-set groups of media folders that are scanned into a database of media files. They are then organized by Artist/Album/
Track in a hierarchical list. Libraries allow you to scan in files from both organized and unorganized folders from anywhere on your
device and view them in an organized list.
Playlists are user-set lists of individual tracks. Tracks can come from any location on your device. Playlists are saved in the XSPF
XML playlist file format.
CalcTunes has a built in file browser for playing media files directly from filesystem locations without putting them into a library or
playlist first. Just open Filesystem, browse to the folder where your file resides, and select it to open it. CalcTunes also handles
Intents from other file management apps, so you can open songs from browsers like ES File Explorer and Cyanogen File Manager into
CalcTunes.
CalcTunes can connect to Subsonic servers using the mobile device API. This allows you to browse through your full Subsonic library
and download tracks to your device from it. CalcTunes supports both transcoded downloading ("streaming" in Subsonic terms) as well
as original, non-transcoded downloading. When setting up a Subsonic server source, you can select locations for both transcoded and
original file downloading. Downloaded files will automatically be saved in an Artist/Album/XX Song.ext naming convention. Note that
CalcTunes does not currently support "streaming" - that is, the entire track must completely download before you can start listening
to it. This is a limitation of the Android MediaPlayer API unfortunately, any way around it is an ugly hack or a big chunk of third
party media playback code so I don't plan on making this high priority. I mainly recommend using Subsonic as a way to get media on
to your device without having to use your PC directly, then scan in the downloaded tracks as a Library or put them in a Playlist.
Other Features:
CalcTunes has a media information view page that is displayed for the current track if you click on the album art. It shows a large
view of the artwork plus a list of all of the media file information tags as well as file path, bitrate, sample rate, and file codec
format information. I hope to eventually pull artist and album info from Wikipedia and/or Last.FM and put it on this page as well.
CalcTunes can automatically start playback when certain external events occur. These include plugging in headphones and connecting
a Bluetooth A2DP audio device. This is optional and defaults to off. When enabled, playback of a user-set media source will begin
as soon as the event occurs. Additionally, playback may be set to automatically stop and close the application when the headphones
or Bluetooth device disconnects. CalcTunes supports use of the media control buttons while minimized so you can change tracks and
pause the music from the buttons.
CalcTunes does not contain an audio effects engine in itself, but it does support the Audio Effects subsystem of Android. You may
enable Audio Effects in the settings which, when enabled, allows apps like CyanogenMod's DSP Manager and Viper's Audio For Android
to apply equalizer, bass boost, and other effects to the music. I definitely recommend using CalcTunes in conjunction with one of
these audio effects apps for the best experience.
Planned Features:
I hope to eventually add a tag editor to the Media Information view. CalcTunes uses the JAudioTagger library to read audio file
tags and this great library also supports tag writing. I hope to make use of this capability so you can fix tags without having
to use your PC.
Android maintains a system-wide media database of all the music and video files it thinks are on the device. While it can miss
files in unconventional locations (such as user-determined Samba mounts), it does a reasonable job now in newer versions of
Android and having the ability to use this source provides a quick and easy alternative when you don't care about customizing
your own Library or Playlist.
- Add a setting to enable or disable transcoding for Subsonic streaming, allowing you to stream the original format files
- Mask the password field in the Subsonic settings dialog
- Provide more sanity checking messages for un-set fields in the Subsonic settings dialog