<?sphp $this->text('pagetitle') ?>
 
Home of the Squeezebox™ & Transporter® network music players.

Slim Server Specification (6.5.1)

From SqueezeboxWiki

Revision as of 05:52, 12 September 2010 by Soulkeeper (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

SlimServer (6.5.1) Specification

This document is describes the SlimServer application and its behavior at the current release version, 6.5.1. Please do not use this document for feature requests. File a bug, and give it a priority of "enhancement".

Proposed changes for the next version of Slimserver are available as part of a separate document (SlimServer7Spec). When the next version is released, the changes will be integrated.

  1. Overview: In general, Slimserver is a software application which runs on an end-user's PC. It scans music files also stored on the PC, and stores information about the music files in a database. It uses the information in the database to present a user interface including information about the tracks as well managing playlists. Slimserver presents an http server on port 9000 which is accessible from the PC or from other web devices on the local network. In addition, it maintains a two-way connection with SMS hardware devices using the 'Slim Protocol' or slimproto, which is carried as TCP/IP network traffic. Slimserver does not need to be aware of how the traffic is transported, specifically. Music can be streamed to the devices for playback as well as images for the player display. Information received by the IR reciever on the device or from the controls on its front panel is passed back across the network for Slimserver to interpret.
  2. Web Interface
    1. Browse Music
      1. Browse Genres
      2. Browse Artists
      3. Browse Albums
      4. Cover art
    2. Skins
      1. Each skin needs to be tested for some set of basic UI functionality
        1. Can get to Player Settings
        2. Can get to Server Settings
        3. Can perform playlist functions
          1. Loading
          2. Adding
          3. Removing
          4. Moving
          5. Save
          6. Clear
          7. Play
        4. Can perform browsing functions
          1. By Album
          2. By Artist
      2. Bagpuss
      3. Dark
      4. Default
      5. Light
      6. ExBrowse3
      7. Fishbone
      8. Handheld
      9. Touch
      10. Moser
      11. Nokia770
      12. Purple
    3. Settings
      1. Player Settings
        1. /Need to enumerate all the pages and all the settings/
        2. Need to verify all settings are getting written to the prefs, and all prefs are being read in correctly.
        3. Basic
          1. Player Name
          2. Title Format
          3. Now Playing Information
          4. Screensavers
          5. Forget Player
          6. Player Information
          7. Version Info
        4. Alarm
          1. Fade alarms in
          2. Each alarm time works
        5. Audio
          1. Power on Resume
          2. Turn off Audio
          3. Crossfade
          4. Crossfade duration
          5. Digital Volume Control
          6. Preamp volume control
          7. Audio startup time
          8. Bitrate limiting
          9. Volume Adjustment/Replay Gain
          10. MP3 Streaming method
        6. Menus
          1. Home Menu
            1. All options are listed:
              1. Now Playing
              2. Browse
              3. Search
              4. Random Mix
              5. Favorites
              6. Playlists
              7. Internet Radio
              8. Settings
              9. Plugins
              10. SqueezeNetwork
            2. They can be removed and moved successfully
            3. Removed items appear in the inactive list
            4. Inactive items can be added to the main list
              1. Albums
              2. Artists
              3. Games
              4. Genres
              5. Music Folder
              6. New Music
              7. Screensavers
              8. Search for Albums
              9. Search for Artists
              10. Search for Songs
              11. Songs
              12. Years
            5. Plugins can be added to the main list
              1. Date and Time Screensaver
              2. Live Music Archive
              3. Live365 Internet Radio
              4. Network Test
              5. Podcasts
              6. RSS News Ticker
              7. RadioTime
              8. Rescan Music Library
              9. SHOUTcast Internet Radio
              10. Save Playlist
              11. Slim Devices Picks
              12. SlimTris
              13. Snow Screensaver
              14. Visualizer Screensaver
              15. radioio.com - no boundaries
        7. Display
          1. Brightness
            1. Brightness when on
            2. Brightness when off
            3. Brightness when idle
            4. Automatic Display Brightness
          2. Font
            1. All selected items appear on the device in the selected order
            2. light, high, standard, threeline, and full are selectable
          3. Standby Font
            1. All selected items appear on the device in the selected order
            2. light, high, standard, threeline, and full are selectable
          4. Scroll Mode
            1. Standard scrolling
            2. Scroll once and stop
            3. Do not scroll
          5. Scroll Pause
            1. Single line (in seconds)
            2. Double-Size (in seconds) (wtf does this do?)
          6. Scroll Rate
            1. Single line (in seconds)
            2. Double-Size (in seconds)
          7. Scroll Pixels
            1. Single Line Scroll Pixels
            2. Double-Size Scroll Pixels
        8. Remote
          1. Slimdevices Remote
          2. JVC Remote
      2. Server Settings
        1. /Need to enumerate all the pages and all the settings/
        2. Basic Settings
          1. Language: Selects the web and player interface language. Localized strings are stored in /SlimServer/server/strings.txt.
          2. Music Folder: Specifies the top-level directory under which Slimserver scans for music. All subfolders should be scanned.
          3. Playlists Folder: Specifies the top-level directory under which Slimserver scans for playlist files. All subfolders should be scanned.
          4. iTunes: Enables or disables a set of behaviors to ease use of Slimserver with iTunes. The behaviors include:
            1. Scanning the iTunes Music Library.xml file for tracks, track info, and playlists.
          5. Rescan Music Library: Triggers a rescan of the user's music and playlists folder. There are three options and a 'Rescan' button. All rescan operations will take place 'in the background' and do not block the server's operation.
            1. Look for new and changed music. This mode will leave all existing information present within the database and only check for files whose timestamp has changed, or which are not known in the database. If a timestamp on a file has changed from that in the database (including if it no longer exists on the filesystem) its database entry will be replaced with that of the details from the filing system. If new files are added to the filesystem they will be added to the database. ((the filing system covers, eg 'folder.jpg', details may not be updated by this method; is this a fault or a design ?))
            2. Clear library and rescan everything. This mode will first remove all information from the database (no changes are made to the playlists or the user's configuration) before searching the filing system for files as with the above option.
            3. Only rescan playlists. This mode only looks for new and changed playlists. Any playlist which was added or modified outside of the server will be updated by this scan.
          6. Version Info section:
            1. The Slimserver version is inserted into the application at build time.
            2. The Perl version Slimserver believes it is running on
            3. The MySQL version
            4. The IP address Slimserver believes it is serving from is displayed here.
        3. Behavior
          1. Play other songs in album: When you select a single song and press PLAY, while browsing albums or folders, you can choose to play just that song or all the songs in that album or directory, starting with that song.
        4. Debugging
        5. File Types
        6. Formatting
        7. Interface
        8. iTunes
        9. Network
        10. Performance
        11. Plugins
        12. Internet Radio
        13. Security
    4. Current Playlist
    5. Transport Controls
    6. Internet Radio
      1. Tune-in URL
      2. Live365
      3. Live Music Archive
    7. Help
    8. XML interface
    9. JSON interface
    10. TelCanto Support
  3. General UI Principles
    1. Songs should be sorted by title, artist, album, and track num. In cases where a user has added a group of songs to a list, the sorting of songs as they go into the playlist should be the same as you browse them (i.e. If you add a whole artist, the songs should be sorted first by the album, then by the song number). /See bug(s) 4466./
  4. Player UI
    1. See also UserInterfaceGuidelines
    2. Behaviors
      1. Browsing to 'Browse -> Artists' or other top-level browse heading and hitting 'play' should not play anything due to the fact that it's likely to be an erroneous button press. /See bug(s) 4572./
      2. Browsing to the title of a specific track and pressing 'play' should play that track according to the Server Settings -> Behavior selected. /See bug(s) 4421./
    3. IR/Button Input
      1. Remote Control
        1. Supported IR Code Sets: Both the JVC DVD and Slim Devices Remote code sets are supported. They can be enabled and disabled on a per-player basis on the Player settings -> Remote page.
        2. Number buttons in sorted lists: "Sorted lists" are those that are sorted alphabetically and should use the number keys as on a phone (i.e. press 2 to jump to the first item that starts with a 'B'). All others should use the number keys as numbers: press 1 to jump to the first item, 0 to jump to the last, and the other digits to jump proportionally within the list. This behavior should be encapsulated in the INPUT.list mode. /See bug(s) 4437./
      2. Front Panel Controls
        1. Knob
        2. Buttons
    4. Player Display Output
      1. Fonts
        1. Unicode/TrueType
        2. Player-specific fonts
      2. Home Menu
      3. Visualizers/VU Meters
      4. Power Off
        1. Clock
      5. Alarm Clock
      6. Volume Control
      7. Browse Music
        1. Browse Genres
        2. Browse Artists
        3. Browse Albums
        4. Browse Playlists
      8. Favorites
      9. Settings
      10. Song Info
      11. Station Info
      12. Synchronization
      13. Screensavers
        1. Now Playing
        2. Now Playing (Jump Back On Wake)
        3. Clock
    5. Player Specific Functions
      1. SLIMP3
      2. Squeezebox1
      3. Squeezebox2/3
      4. Transporter
        1. Knob
        2. Front Panel
        3. Digital Inputs
      5. SoftSqueeze
  5. Audio
    1. Streamed from files
      1. Supported file formats
        1. MP3 - Audio MPEG 1, 2 and 2.5, layer I, II and III. ((need to confirm that layer I is supported; ISTR seeing something about the decoder chip not supporting it, possibly on SliMP3s only)).
        2. FLAC
        3. WMA
          1. WMA Lossless
          2. WMA Voice
          3. WMA
        4. AIFF
        5. WAV
        6. Ogg Vorbis
        7. AAC
        8. QuickTime Movies
        9. Apple Lossless
        10. Apple Music Store
        11. Shorten
        12. Monkey's Audio
        13. Musepack
    2. Internet Radio
      1. Icecast/Shoutcast HTTP streaming
      2. Ogg Vorbis
      3. WMA
        1. WMA MMS
        2. WMA via HTTP
      4. Podcasts
      5. Slim Devices Picks
      6. RadioIO
      7. ShoutCast
    3. Other Sources
      1. Rhapsody
      2. UPnP
    4. Awareness of Player-Implemented Codecs
      1. Transcoding
    5. Shoutcast/Icecast streaming (i.e. stream.mp3)
  6. Playlists
    1. Formats
      1. ASX - MSDN document appears to be a good starting point - http://msdn2.microsoft.com/en-us/library/aa386633.aspx
      2. CUE - as specified at http://wyday.com/cuesharp/specification.html
      3. PLS - no official format seems to exist, although http://forums.winamp.com/showthread.php?threadid=65772 seems to be reasonable given its lineage
      4. M3U - no official format seems to exist, although http://forums.winamp.com/showthread.php?threadid=65772 seems to be reasonable given its lineage
      5. WPL - ((cannot find a proper specification on the MSDN site))
      6. XML - ((don't know what this is; XML is an data transfer format, rather than a specification of playlists))
      7. XSPF - as specified at http://www.xspf.org/xspf-v1.html
  7. Database
    1. Scanner
      1. File System
        1. Album Art
      2. iTunes
      3. MoodLogic
      4. Music Magic
    2. Compilation/Various Artists Albums
    3. Best of Albums
    4. Tags
      1. Tag sources
        1. MP3
          1. ID3v1 - as specified at http://www.id3.org/id3v1.html
            1. Title field (30 chars) is processed as the TITLE tag.
            2. Artist field (30 chars) is processed as the ARTIST tag.
            3. Album field (30 chars) is processed as the ALBUM tag.
            4. Year field (30 chars) is processed as the YEAR tag.
            5. Track number (1 byte) is processed as the TRACKNUM tag, but only if the comment field is terminated at character 28.
            6. Comment field (28 chars if track present, 30 chars otherwise) is processed as the COMMENT tag.
            7. All strings are presumed to be ISO-8859-1, although a 'guess' is made as to other encodings.
            8. Trailing nuls will be stripped from the strings; other embedded data may be retained (eg 'name<nul>junk<nul><nul>' would be processed as 'name<nul>junk').
          2. ID3v2 - as specified at http://www.id3.org/develop.html
            1. ID3v2.2 is processed.
            2. ID3v2.3 is processed.
            3. ID3v2.4 is processed.
            4. ID3v2.4 footers are processed.
            5. Embedded (inline with stream) ID3v2 tags are not processed - only headers and footers are processed.
            6. ID3v2.4 headers inset by a short amount (junk at start of file) are processed (include size that will be searched?)
            7. TSOA frames are processed as the ALBUMSORT tag.
            8. TSOP frames are processed as the ARTISTSORT tag.
            9. XSOP frames (compatibility with other clients? not in ID3v2 specification) are processed as the ARTISTSORT tag.
            10. TSOT frames are processed as the TITLESORT tag.
            11. TP1/TPE1 frames are processed as the ARTIST tag.
            12. TCM/TCOM frames are processed as the COMPOSER tag.
            13. TP2/TPE2 frames are processed as the BAND tag. This is per the ID3 spec. However, note that iTunes uses the BAND tag as 'Album Artist'.
            14. TP3/TPE3 frames are processed as the CONDUCTOR tag.
            15. PIC/APIC frames are processed as the PIC tag.
              1. Only the first picture in the tag will be processed; others are ignored. The format, picture type and description are ignored.
            16. TBP/TBPM frames are processed as the BPM tag.
            17. RVA/RVAD/RVA2 frames are processed as the REPLAYGAIN_TRACK_GAIN and REPLAYGAIN_TRACK_PEAK tags.
            18. ULT/USLT frames are processed as the LYRICS tag.
            19. TCP/TCMP frames (compatibility with iTunes, not in the ID3v2 specification) are processed as the COMPILATION tag.
            20. TT2/TIT2 frames are processed as the TITLE tag.
            21. TAL/TALB frames are processed as the ALBUM tag.
            22. TYE/TYER frames are processed as the YEAR tag.
            23. TDRC frames are processed as the YEAR tag (though they may contain more accurate information than just a year).
            24. TCON frames are processed as the GENRE tag.
              1. Bracketed number genres are processed into their textual equivalent.
              2. Bracketed number genres with refinements (subsequent textual description) will be processed but the refinement will be used as the genre name (numeric genre discarded).
            25. COM/COMM frames are processed as the COMMENT tag.
              1. R.River Media centre comments (with the text 'Media Jukebox') are processed as TXXX frames, for compatibility.
            26. TXX/TXXX frames are ??? (not sure of processing)
            27. TRK/TRCK frames are processed as the TRACKNUM tag.
            28. TPA/TPOS frames are processed as the SET tag.
            29. Textual data in ID3v2.4 tags may contain multiple entries per tag, separated by a nul. These will be converted into multiple entries (an array) before being passed back. For example, ID3v2.4 TIT1 tag with the content 'this<nul>that' will be processed as two TITLE tags with the content 'this' and 'that'.
            30. Textual data may be encoded in ISO-8859-1.
            31. Textual data may be encoded in UTF-16. Textual data in ID3v2.2 and ID3v2.3 tags encoded with UCS-2 will be treated as if they were UTF-16 (distinction is only in the lack of surrogate support in UCS-2 so should not be significant).
            32. Textual data may be encoded in UTF-16BE.
            33. Textual data may be encoded in UTF-8.
            34. Compressed frames are not supported.
            35. Encrypted frames are not supported.
            36. Unterminated text strings are supported (ID3v2 requires that text strings end in a terminating nul; to support non-complaint encoders unterminated strings are supported.
            37. iTunes-style ID3v2.4 tags are supported by heuristics. iTunes writes ID3v2.4 header data, with frame lengths encoded using ID3v2.3 rules. We support iTunes style broken frames by checking for the length being invalid under ID3v2.4 rules and reverting to ID3v2.3 rules.
          3. APE - as specified at http://wiki.hydrogenaudio.org/index.php?title=APEv2_specification ((need to confirm this is the official definition))
            1. TRACK tags are processed as the TRACKNUM tag.
            2. DATE tags are processed as the YEAR tag.
            3. DISCNUMBER tags are processed as the DISC tag.
            4. /add details of APE tag mappings/
            5. If no TITLE tag exists then all APE tag details are ignored.
        2. WAV
          1. ID3v2 (and v1?) (see entry under MP3)
        3. AIFF
          1. ID3v2 (and v1?) (see entry under MP3)
          2. COMMENT chunk: gets searched for iTunes normalisation, used as REPLAYGAIN_TRACK_GAIN.
        4. Ogg - as specified at http://xiph.org/vorbis/doc/v-comment.html
          1. TRACKNUMBER tags are processed as the TRACKNUM tag.
          2. DISCNUMBER tags are processed as the DISC tag.
          3. /other tags?/
        5. Musepack - http://trac.musepack.net/trac/wiki/SV8Specification (is this right?)
          1. TRACK tags are processed as the TRACKNUM tag.
          2. DATE tags are processed as the YEAR tag.
          3. DISCNUMBER tags are processed as the DISC tag.
          4. /add details of other Musepack mappings/
          5. If no TITLE tag exists then all Musepack mappings are ignored.
        6. FLAC - as specified at http://xiph.org/vorbis/doc/v-comment.html (ie Ogg comments)
          1. TRACKNUMBER tags are processed as the TRACKNUM tag.
          2. DISCNUMBER tags are processed as the DISC tag.
          3. COVERART tags are processed as the ARTWORK tag.
          4. Escient artwork application data (?) is processed as ARTWORK tag.
          5. /add details of other tags/
        7. WMA - as specified by documend linked from http://www.microsoft.com/windows/windowsmedia/forpros/format/asfspec.aspx
          1. TRACKNUMBER tags are processed as the TRACKNUM tag.
          2. ALBUMTITLE tags are processed as the ALBUM tag.
          3. AUTHOR tags are processed as the ARTIST tag.
          4. PARTOFACOMPILATION tags are processed as the COMPILATION tag.
          5. /need to check this ?/
      2. Tag processing
        1. ARTIST tag: gets placed in the 'name' column of the 'contributor' table in the Slimserver database. A version of the ARTIST tag is stripped of articles, special characters, and set to upper case, and copied into the 'artistsearch' column.
        2. ARTISTSORT tag: if it exists, is placed in the 'namesort' column. If it does not exist, the ARTIST tag is duplicated into the namesort column. The string is stripped of articles, special characters, and is set to upper case. Lists of artists in the UI are sorted by the namesort field. /See bug(s) 4427./
        3. REPLAY_GAIN_TRACK_GAIN: (position in DB needs adding)
        4. /add details of where the other tags appear in the DB?/
        5. COMMENT: tags will be stored in the ??? column. When requested by the server components these will be interpreted. That is, comment processing is performed once the data is read from the database, not on store. This allows the processing to change in later versions without requiring a reindex, at the expense of processing speed when this tag is requested. The value will be ignored if they contain the strings 'SoundJam_CDDB_', 'iTunes_CDDB_' in order to ignore the application-specific private tags used by SoundJam and iTunes. Any string which starts with a space followed by 8 hex digits then a '+' or space character, or a space followed by 2 hex digits then a '+' and 32 hex digits, will be ignored. Where multiple comments are present these will be handled as if they are concatenated together with a ' / ' sequence. Any string which begins with 'eng' will be stripped of these leading characters.
    5. SoundCheck/ReplayGain
    6. Database Notes:
      1. The 'customsearch' column is used for Stuart's popular 'LazySearch' plugin.
      2. See SlimServerDatabaseStructure for more details regarding the structure of the database.
  8. Localization/Internationalization
  9. CLI
  10. XPL
  11. Plugin API
  12. Firmware Updates
  13. Alarm clock
  14. Command line options
  15. convert.conf
  16. types.conf
  17. strings.txt
  18. Prefs file
  19. Cache directory
    1. Web page cache
    2. Font cache
    3. MySQL
      1. slimserversql.db
      2. my.cnf
    4. mdns.conf
  20. Softsqueeze
  21. Bonjour/mDNS
  22. Shipped Plugins
    1. Network Health
    2. Random Play
    3. RS232
    4. SlimTris
    5. Snow Screensaver
    6. IR Blaster
    7. Switch to SqueezeNetwork
  23. SqueezeNetwork Settings Sync
  24. Platform Specific
    1. Windows
      1. Installer
        1. Installer also installs slimtray
      2. System Tray Application (slimtray.exe)
        1. Start Slimserver
        2. Stop Slimserver
        3. Automatically run at system start
        4. Automatically run at login
        5. Go to Slimdevices web site
        6. Exit
    2. Mac
      1. Installer
      2. Preference Pane
      3. ~/Library/SlimDevices
    3. Linux
      1. RPM
      2. Debian Package

A note about SqueezeNetwork:

While Squeeze Network uses SlimServer, it is a larger project with different goals. There may be notes within this specificaton that some SlimServer feature or other is required for SqueezeNetwork. However, the specification of the Squeeze Network project is outside the scope of this document.