Music player and manager written in PLT Racket.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
etc
extensions
screenshots
.gitignore
README.md
_config.yml
cwb-mp3-db.scm
cwb-scrobble.scm
cwb-twitter.scm
in-alist.ss
schemep3-backend-mplayer.scm
schemep3-backend-vlc.scm
schemep3-backend.scm
schemep3-context-menu-manager.scm
schemep3-context-menu.scm
schemep3-converter.scm
schemep3-database.scm
schemep3-dialog-playlist-search.scm
schemep3-dialog-properties.scm
schemep3-drop-handler.scm
schemep3-file-mover.scm
schemep3-frame-console.scm
schemep3-gui-helpers.scm
schemep3-helpers.scm
schemep3-main-menu.scm
schemep3-mixins-gui.scm
schemep3-panel-album-art.scm
schemep3-panel-database-filter.scm
schemep3-panel-database-query.scm
schemep3-panel-fancy-playlist-view.scm
schemep3-panel-now-playing.scm
schemep3-panel-playback-control.scm
schemep3-panel-playlist-tree.scm
schemep3-panel-playlist-view.scm
schemep3-panel-progress-view.scm
schemep3-panel-ratings.scm
schemep3-panel-tab-playlist-switcher.scm
schemep3-playback.scm
schemep3-playlist.scm
schemep3-scrobble.scm
schemep3-status.scm
schemep3-twitter.scm
schemep3.scm
taglib-extended.scm
taglib.ss
vlc-ffi.ss
vlc-test.ss
with-finalized-binding.ss

README.md

Schemep3 is a music playback and database program written in PLT Scheme. It can playback any audio format that libVLC supports and read tags in any format that TagLib understands. It uses Jay McCarthy’s SQLite module for database access.

Features

  • SQLite Database
    • Track last played and play count
  • Tags via TagLib
    • FFI interface to C wrapper functions
    • scheme extension for id3v2 frame blocks
    • scheme extension for flac comments
  • Playback
    • libvlc for playback
    • playback seek by clicking on progress bar
  • Playlist
    • Accepts dropped files or results from database query
    • Dropping an m3u loads all the files contained in it
    • Configurable format
    • Marks the current playing file in the playlist
    • Playlist ordering using meta-up, meta-down
    • multiple playlists
  • Playback Queue
    • Play next option
    • Add to queue option
  • GUI
    • Optional album art display (folder.jpg)
    • UI for changing ratings
    • Progress bar
    • keyboard controls
      • enter -> play
      • space -> pause
      • n,N -> next
  • Misc
    • playback queue viewer
    • Export to m3u (playlist context menu)
    • last.fm submission
    • store / restore database queries
    • Move to library options
      • Moves media file into my \Music\Library\A\ARTIST\YEAR – ALBUM\0x – TITLE format
      • Moves album art also
      • remove empty directories
    • copy to mini library [for mp3 player sync]
      • convert to mp3
      • input -> pcm -> mp3 via mplayer and lame
  • OS Specific
    • Windows
      • Pause on terminal lock
      • global hotkeys (C-A-Space => Pause, C-A-Right Arrow => Next )
  • Deprecated
    • external mplayer playback backend
    • id3lib ffi – deprecated for taglib
    • FLAC
      • tag parser
      • duration
    • mp3
      • id3v1 tag reader
      • id3v2 tag reader
      • estimates playback length (hacky)

Dependencies

  • PLT Racket
  • SQLite
  • libVLC
  • TagLib
  • LAME

To Do (Maybe)

In no particular order:

  • Playlist tree – primitive prototype working
  • Racket based queries
  • Audioscrobbler caching
  • Multiple databases
    • Open different sqlite db
    • Allow you to manage different libraries
      • Deskstop
      • Portable