You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Thomas Vander Stichele 135b2f7bf2 bad gui 8 years ago
bin handle the case where we couldn't even import deps. 10 years ago
doc bumped version for development 9 years ago
etc add bash-compgen. Fixes #11. 10 years ago
examples patch by: Loïc Minier <lool at debian dot org> 13 years ago
m4 remove as-python.m4 from dist 9 years ago
misc * misc/ (added): 11 years ago
morituri Make clearer what `pycdio` is needed for 8 years ago
.gitignore Include a copy of the GPL, as it suggests 8 years ago
.gitmodules add python-deps to handle dependencies 10 years ago
AUTHORS * AUTHORS: 14 years ago
COPYING Include a copy of the GPL, as it suggests 8 years ago
ChangeLog * morituri/common/ 11 years ago
HACKING add note 10 years ago rework REVISION hackery 9 years ago
NEWS releasing 0.2.3 9 years ago
README add a symlink to make autotools happy 10 years ago Fix typo 8 years ago
RELEASE releasing 0.2.3 9 years ago
TODO bad gui 8 years ago * AUTHORS: 14 years ago bumped version for development 9 years ago
morituri.doap releasing 0.2.3 9 years ago tweak the spec file to pick up /usr/bin/python as a dep 9 years ago

morituri is a CD ripper aiming for accuracy over speed for UNIX systems. Its features are modeled to compare with Exact Audio Copy on Windows. The home page is


For a more detailed rationale, see my wiki page 'The Art of the Rip'.


  • support for MusicBrainz for metadata lookup
  • support for AccurateRip (V1) verification
  • detects sample read offset and ability to defeat cache of drives
  • performs test and copy rip
  • detects and rips Hidden Track One Audio
  • templates for file and directory naming
  • support for lossless encoding and lossy encoding or re-encoding of images
  • tagging using GStreamer, including embedding MusicBrainz id's
  • retagging of images
  • plugins for logging
  • for now, only a command line client (rip) is shipped


  • cdparanoia, for the actual ripping
  • cdrdao, for session, TOC, pregap, and ISRC extraction
  • GStreamer and its python bindings, for encoding
    • gst-plugins-base >= 0.10.22 for appsink
  • python musicbrainz2, for metadata lookup
  • python-setuptools, for plugin support
  • python-cddb, for showing but not using disc info if not in musicbrainz
  • pycdio, for drive identification (optional)
    • Required for drive offset and caching behaviour to be stored in the config file

Additionally, if you're building from a git checkout:

  • autoconf
  • automake


If you are building from a source tarball or checkout, you can choose to use morituri installed or uninstalled.

  • getting:

    • Change to a directory where you want to put the morituri source code (For example, $HOME/dev/ext or $HOME/prefix/src)

    • source: download tarball, unpack, and change to its directory

    • checkout:

        git clone git://
        cd morituri
        git submodule init
        git submodule update
  • building:

  • you can now choose to install it or run it uninstalled.

    • installing:

        make install
    • running uninstalled:

        ln -sf `pwd`/misc/morituri-uninstalled $HOME/bin/morituri-git
        morituri-git  # this drops you in a shell where everything is set up to use morituri


morituri currently only has a command-line interface called 'rip'

rip is self-documenting. rip -h gives you the basic instructions.

rip implements a tree of commands; for example, the top-level 'changelog' command has a number of sub-commands.

Positioning of arguments is important;

rip cd -d (device) rip

is correct, while

rip cd rip -d (device)

is not, because the -d argument applies to the rip command.

Check the man page (rip(1)) for more information.


To make it easier for developers, you can run morituri straight from the source checkout:



The simplest way to get started making accurate rips is:

  • pick a relatively popular CD that has a good change of being in the AccurateRip database

  • find the drive's offset by running

      rip offset find
  • wait for it to complete; this might take a while

  • optionally, confirm this offset with two more discs

  • analyze the drive's caching behaviour

      rip drive analyze
  • rip the disc by running one of

      rip cd rip  # uses the offset from configuration file
      rip cd rip --offset (the number you got before)  # manually specified offset


morituri's bug tracker is at When filing bugs, please run the failing command with the environment variable RIP_DEBUG set; for example:

RIP_DEBUG=5 rip offset find > morituri.log 2>&1
gzip morituri.log

And attach the gzipped log file to your bug report.


  • no GUI yet
  • only AccurateRip V1 CRCs are computed and checked against the online database
  • rip offset find fails to delete the temporary .wav files it creates if error occurs while ripping (thomasvs/morituri#75)
  • morituri detects the pre-emphasis flag in the TOC but doesn't add it to the cue sheet
    • To improve the accuracy of the detection the sub-channel data should be scanned too
  • CD-Text is not used when ripping CDs not available in MusicBrainz DB


  • quality over speed
  • support one-command automatic ripping
  • support offline ripping (doing metadata lookup and log rewriting later)
    • separate the info/result about the rip from the metadata/file generation/...


The configuration file is stored according to XDG Base Directory Specification when possible.

It lives in $XDG_CONFIG_HOME/morituri/morituri.conf

The configuration file follows python's ConfigParser syntax. There is a "main" section and zero or more sections starting with "drive:"

  • main section:

    • path_filter_fat: whether to filter path components for FAT file systems
    • path_filter_special: whether to filter path components for special characters
  • drive section: All these values are probed by morituri and should not be edited by hand.

    • defeats_cache: whether this drive can defeat the audio cache
    • read_offset: the read offset of the drive