Present Perfect


Picture Gallery
Present Perfect

morituri 0.1.0 “Youngblood” released!

Filed under: morituri — Thomas @ 16:57


This is the first release of hopefully many.

Morituri is a cd ripper that aims for quality over speed, offering features similar to Exact Audio Copy on Windows to make as perfect rips as possible.

For more information, see the trac page

The tao Fedora 11 repository has the release and dependencies.


- support for MusicBrainz for metadata lookup
- support for AccurateRip verification
- detects sample read offset of drives
- performs test and copy rip
- detects and rips Hidden Track One Audio
- templates for file and directory naming
- support for lossless encoding only for now
- tagging using GStreamer
- 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
- python musicbrainz2, for metadata lookup
- pycdio, for drive identification (optional)


  1. Morituri me salutant :) Thanks for the program (which closes a big gap in the linux world). As I can see playbin will close another one (with gapless playing, hopefully even gapless playing of lame mp3 files). Let’s see if there will be an announcement on hydrongenaudio.org…

    Comment by amano — 2009-09-26 @ 18:02

  2. playbin2 of course…

    Comment by amano — 2009-09-26 @ 18:07

  3. […] more here: Thomas Vander Stichele: morituri 0.1.0 “Youngblood” released! Share and […]

    Pingback by Thomas Vander Stichele: morituri 0.1.0 “Youngblood” released! | TuxWire : The Linux Blog — 2009-09-26 @ 18:17

  4. Any chance of an RPM for F11 or F12?

    Comment by Pieter — 2009-09-26 @ 19:42

  5. Doh I only searched with yum. The SRPM and RPM are available here:

    Comment by Pieter — 2009-09-26 @ 19:43

  6. Hi,

    this is indeed very good news. I posted a link to the trac-page in the logitech slimdevices forum (makers of the Squeezebox-line of products). I’m sure many of the users there will find this interesting.


    Comment by Bjorn — 2009-09-26 @ 20:32

  7. I did a ‘sudo checkinstall make install’ on Ubuntu, but:

    $ rip
    The rip binary cannot find its python package.
    This means that the ‘morituri’ directory containing __init__.py is not on your
    Typically this is due to a broken install.
    Please fix the problem, and verify that it is fixed by starting python and

    >>> import morituri

    and assure it doesn’t raise an exception.

    Comment by Casey — 2009-09-26 @ 20:49

  8. Hi Casey,

    just doublechecked that make install works here for me. Can you provide me with the output of sudio checkinstall make install to see what might have gone wrong ?

    Comment by Thomas — 2009-09-27 @ 07:10

  9. Will it support non-free codec?
    Would be great to have a cd-ripper software than can convert to aiff, alac

    Comment by baocrazy — 2009-09-26 @ 20:59

  10. If GStreamer can support the codec, then yes, morituri will eventually support it too. I think I tried alac but the GStreamer element wasn’t working well for me.

    Comment by Thomas — 2009-09-27 @ 07:07

  11. Wow, you are awesome! I’ve been using Grip to rip my CDs to Ogg Vorbis for a while, but I’ve been planning on re-ripping all my CDs to FLAC once I get more hard drive space. I was just going to use Grip again, but this looks like exactly what I want (unattended, perfectly accurate, lossless, etc.). I am *so* looking forward to using morituri to rip my CDs to FLAC. Thank you!

    A quick question: a couple of my CDs (in particular, Daft Punk’s Alive 2007), sometimes seem to confuse cdparanoia’s auto-correction (because of the repetitive, skip-like sounds in their music; may be specific to my laptop’s DVD drive, I don’t know). I have the auto-correction and skip detection disabled in Grip to avoid this. How do you utilize cdparanoia’s auto-correction (if at all), and does morituri disable that if one or two rips of a song prove to not match AccurateRip’s database? I don’t know if what I just asked makes sense, or if I’m way off base on how all this works!

    Thanks, again!

    Comment by Gideon "Gnafu" Mayhak — 2009-09-26 @ 21:45

  12. Hi Gideon,

    I’ve never run into this problem, sounds interesting! I’ll see if I know someone that has that CD to try it out. If what you’re suggesting makes sense in that case, then yeah, I would add that feature. I wonder how EAC handles your disc ?

    Comment by Thomas — 2009-09-27 @ 07:07

  13. It made the news-section of hydrogenaudio.org: http://www.hydrogenaudio.org/forums/index.php

    Comment by amano — 2009-09-26 @ 22:15

  14. Seriously? You named your release after a comic by Rob Liefeld? The one that has a “disease” bearing its name: http://atopfourthwall.blogspot.com/2009/05/youngblood-1.html

    I’m not sure you want your application (which is probably excellent) to be associated with that steaming pile of whatsit.

    Comment by Kasper Henriksen — 2009-09-26 @ 22:26

  15. Kasper,

    No, I didn’t name it after a Rob Liefeld comic. And before you worry, I also didn’t name it after an 80’s Rob Lowe/Patrick Swayze movie.

    Comment by Thomas — 2009-09-27 @ 07:05

  16. […] http://thomas.apestaart.org/log/?p=1040 <– “Morituri is a cd ripper that aims for quality over speed”. mmm, tasty. […]

    Pingback by Michael Gratton (mjog) 's status on Sunday, 27-Sep-09 02:53:30 UTC - Identi.ca — 2009-09-27 @ 03:56

  17. This looks like a very useful tool. I have submitted Morituri to the Mandriva package repositories.

    When ripping Radiohead’s OK Computer, I get a Python backtrace at then end when it’s calculating the Accurate checksums. It looks like tickets #5 and #6 in the bug tracker, so I guess there’s no need to report it again?

    AccurateRip URL http://www.accuraterip.com/accuraterip/a/8/a/dBAR-012-00188a8a-00e12645-a60c870c.bin
    24 AccurateRip reponses found
    Traceback (most recent call last):
    File “/usr/bin/rip”, line 28, in
    File “/usr/lib/python2.6/site-packages/morituri/rip/main.py”, line 12, in main
    ret = c.parse(argv)
    File “/usr/lib/python2.6/site-packages/morituri/extern/command/command.py”, line 295, in parse
    return self.subCommands[command].parse(args[1:])
    File “/usr/lib/python2.6/site-packages/morituri/extern/command/command.py”, line 295, in parse
    return self.subCommands[command].parse(args[1:])
    File “/usr/lib/python2.6/site-packages/morituri/extern/command/command.py”, line 271, in parse
    ret = self.do(args)
    File “/usr/lib/python2.6/site-packages/morituri/rip/cd.py”, line 295, in do
    prog.verifyImage(runner, responses)
    File “/usr/lib/python2.6/site-packages/morituri/common/program.py”, line 403, in verifyImage
    self._verifyImageWithChecksums(responses, cuetask.checksums)
    File “/usr/lib/python2.6/site-packages/morituri/common/program.py”, line 433, in _verifyImageWithChecksums
    csum, i + 1, j + 1, response.checksums[i])
    AssertionError: checksum 3167620132 for 6 matches wrong response 15, checksum 930599b2

    Comment by Frederik Himpe — 2009-09-27 @ 11:01

  18. Thomas: I’ll try to make some time to do a test run of morituri with that album and let you know how it goes. I believe it was primarily during track 10 that it (cdparanoia/Grip) had issues.

    Comment by Gideon "Gnafu" Mayhak — 2009-09-27 @ 19:09

  19. Hi Thomas

    I got Morituri working on my Debian testing/unstable system. It correctly figured out the drive offset (I had this already so I know it’s correct) and I then proceeded to make a rip. The rip is fine, the accuraterip checks and musicbrainz lookups all worked as expected. But what I can’t find how to do is set “templates for file and directory naming” as mentioned in the feature set.

    At the moment all the filenames in the cue and log include the full path. It would better if there were no path information, only the names, for various reasons but most importantly so that the cue is portable without being edited.

    It would be good to be able to set different file naming and numbering schemes too.

    I’m impressed. I think in your version 0.1 you’ve exceeded a certain ruby project which has been banging away at this task for years. Up until now I’ve been using RipIt, a perl script which uses cdparanoia to extract audio and cdrdao to read a toc (the script also handles the encoding, CDDB lookup, directory creation and file naming+tagging etc) and that seems close to ideal except when sharing the music, when Windows users insist on a non-compliant cue and not a toc. So it’s interesting to see a project combine everything in one application whose output sits comfortably with the majority.

    Comment by Julian Hughes — 2009-09-28 @ 20:22

  20. Hi Julian,

    good to hear things worked as I intended! Thanks for the praise as well.

    As for the naming of files, see this output:

    [thomas@ana todo]$ rip cd rip -h
    Usage: rip cd rip

    rip CD

    -h, –help show this help message and exit
    -o OFFSET, –offset=OFFSET
    sample read offset (defaults to 0)
    output directory (defaults to current directory)
    -T TOC_PICKLE, –toc-pickle=TOC_PICKLE
    pickle to use for reading and writing the TOC
    template for track file naming (default %A – %d/%t. %a
    – %n)
    template for disc file naming (default %A – %d/%A –
    –profile=PROFILE profile for encoding (default ‘flac’, choices ‘wav’,
    ‘wavpack’, ‘alac’, ‘flac’)
    [thomas@ana todo]$

    so the options you’re looking for are track-template and disc-template

    The format is not well-described; I probably copied it from another app, you can check the code to see what you can put in there. I’ll probably document it when I’m happy with it.

    As for file naming, if you pass in an –output-directory that’s relative, then all paths will be relative to that path. I guess what you would want is that, by default, with no output directory given, all paths are relative to the current dir, correct ? Could you maybe open a ticket to describe exactly what you want, then I see if I need an option or if it is a sane default ?

    Comment by Thomas — 2009-09-28 @ 21:04

  21. I find the morituri help is inaccessible, example:

    $ rip cd rip -h
    rip [OPTION…] – GStreamer initialization

    Help Options:
    -h, –help Show help options
    –help-all Show all help options
    –help-gst Show GStreamer Options

    I have made sure the morituri bash-completion script is installed and sourced and that there is no other binary or script named ‘rip’. Any ideas?

    btw I made a google search and found this: http://fr.pastebin.ca/1580996 which is someone experiencing a similar issue on a Fedora system.

    But at least I can see the help in your reply to my earlier post, and the template option works fine.

    I raised a ticket about file names and paths https://thomas.apestaart.org/morituri/trac/ticket/10

    Comment by Julian Hughes — 2009-09-29 @ 00:09

  22. I found that ‘rip -h’ or ‘rip drive -h’ or ‘rip offset -h’ always give that erroneous gstreamer help message, but ‘rip help’ or ‘rip drive help’ ‘rip offset help’ gives the morituri help as desired and expected.

    I raised a ticket. https://thomas.apestaart.org/morituri/trac/ticket/12

    btw I’ve been making some tests with different rippers on Windows XP and GNU/Linux. I rip and encode to flac and then decode a flac to wav to compare (rules out metadata and encoder version/config differences). Morituri, EAC and RipIt produce absolutely identical wavs, as verified by md5sum check and by EAC’s wav analyzer. Not bad! I’ve not yet tried this across several different optical drives but so far it looks very good.

    Comment by Julian Hughes — 2009-09-30 @ 13:42

  23. I wonder if some Linux ripping frontends (Sound Juicer, Rythmbox, Banshee) will pick up Morituri as the backend. This would be great.

    Comment by amano — 2009-10-14 @ 22:03

  24. amano: it would be nice, but I kind of doubt it. I don’t think any of them would want to take on a python backend. What does seem doable is to feed back ideas from morituri to some other libraries; for example teach GStreamer about CD offsets.

    I am planning to write a moovida plugin for it though.

    Comment by Thomas — 2009-10-15 @ 10:50

  25. Hello ! I have the exact same problem as Casey…
    The rip binary cannot find its python package.
    This means that the ‘morituri’ directory containing __init__.py is not on your
    Typically this is due to a broken install.
    Please fix the problem, and verify that it is fixed by starting python and

    >>> import morituri

    and assure it doesn’t raise an exception.

    Comment by Oliv — 2010-03-08 @ 11:15

  26. Second try:
    I’ve uninstalled morituri then reinstalled it through
    “alien -i morituri-0.1.0-1.fc11.noarch.rpm”

    Same problem.

    (BTW, I’m using Linux Mint 8, based on Ubuntu 9.10)

    Comment by Oliv — 2010-03-08 @ 11:36

  27. @Oliv and @Casey: I commited a patch to trunk that adds the /usr/local-based python directory in to sys.path in case it is missing. This should solve your use case (configure;make; sudo checkinstall make install) and I tested it on a ubuntu machine and it worked.

    Comment by Thomas — 2010-03-15 @ 16:34

  28. Thanks for the patch… but, I’m just a bit confused: how do I get it?

    Comment by Oliv — 2010-03-26 @ 23:22

  29. Oliv, if he committed the patch to trunk then you can just check out the current SVN and the change should be present.

    Comment by Chronon — 2010-03-29 @ 02:50

  30. Sorry. Now that I have actually poked around a bit I don’t see info on CVS/SVN or similar. Disregard my last comment.

    Comment by Chronon — 2010-03-29 @ 02:52

  31. Hi,

    Here’s the change: https://thomas.apestaart.org/morituri/trac/changeset/347

    Comment by Thomas — 2010-04-06 @ 12:37

  32. Here is the content of the control file:

    Package: morituri
    2 Priority: extra
    3 Section: Applications/Archiving
    4 Installed-Size: 1308
    5 Maintainer: root@niol-783-desktop
    6 Architecture: amd64
    7 Version:{?dist}
    8 Depends: cdparanoia
    9 cdrdao > 1.2.3-0.rc2.2
    10 gstreamer-plugins-good >= 0.10.16
    11 gstreamer-python
    12 python-musicbrainz2
    13 pycdio
    14 Provides: morituri
    15 Description: CD ripper
    16 Package created with checkinstall 1.6.1

    Does this help?

    Comment by Oliv — 2010-03-29 @ 10:16

  33. Sorry, I hadn’t the time to investigate further before today.

    Instead of filing a “bug” to checkinstall, I figured a workaround.

    The problem was caused by unneeded [*] information (lines 9 to 13 from the msg 31).
    When checkinstall proposes to change the value of those auto-generated infos,
    I change the “Depends” info to blank (“”) and everything went fine!

    [*] that’s not exactly true but, in this case, I don’t care

    Comment by Oliv — 2010-04-27 @ 15:19

  34. I feel really stupid:
    now that i’ve done all the installation steps [*]
    what do i have to do to lauch morituri? Help! :-)

    Thanks in advance!

    1. ./autogen.sh
    2. ./configure
    3. make
    4. sudo checkinstall make install

    Comment by Oliv — 2010-04-27 @ 15:35

  35. Hi Oliv,

    you should be able to just run ‘rip’. Check the README for some more info, or the wiki page. Make sure you run morituri 0.1.1 by the way as that was released recently.

    Comment by Thomas — 2010-04-27 @ 15:42

  36. Oops, right, thanks Thomas!

    Here is my question of the day:

    When I try the “rip drive list”, I get
    No drives found.
    Create /dev/cdrom if you have a CD drive,
    or install pycdio for better detection.

    But pycdio is already installed on my systems as shows the command “easy_install pycdio”
    Searching for pycdio
    Best match: pycdio 0.16
    Processing pycdio-0.16-py2.6-linux-x86_64.egg
    pycdio 0.16 is already the active version in easy-install.pth

    Using /usr/local/lib/python2.6/dist-packages/pycdio-0.16-py2.6-linux-x86_64.egg
    Processing dependencies for pycdio
    Finished processing dependencies for pycdio

    What’s the problem? What can I do?

    Comment by Oliv — 2010-04-29 @ 10:07

  37. Any idea how to solve my issue?
    BTW, I’m using Linux Mint 8 Helena x64.

    Comment by Oliv — 2010-05-11 @ 10:44

  38. Hi Oliv,

    You have pycdio installed in /usr/local while your python is in /usr

    Generally speaking you shouldn’t mix stuff like this – you should install a package for pycdio for your distro that installs in /usr instead.

    Comment by Thomas — 2010-05-11 @ 16:05

  39. Thanks Thomas! But…

    I tried resinstalling the pycdio egg to /usr. This went fine:
    Searching for pycdio
    Best match: pycdio 0.16
    Processing pycdio-0.16-py2.6-linux-x86_64.egg
    pycdio 0.16 is already the active version in easy-install.pth

    Using /usr/lib/python2.6/dist-packages/pycdio-0.16-py2.6-linux-x86_64.egg
    Processing dependencies for pycdio
    Finished processing dependencies for pycdio

    But then when trying the “rip drive list” command I still get
    No drives found.
    Create /dev/cdrom if you have a CD drive,
    or install pycdio for better detection.

    Heeeeelp! :’-(

    Comment by Oliv' — 2010-05-19 @ 15:28

  40. I uninstalled pycdio then reinstalled it in /usr but it didn’t change a thing:
    I get the very same error message (see msg 36) when I try “rip drive list”.
    Could you help me please?

    Comment by Oliv — 2010-05-22 @ 23:22

  41. im tryng to use morituri, but i have no skill about commands and option how do i get title and rip and how do i say flac or another type? Is the directory where morituri write the same like in paranoia (cd)?

    thanks you

    Comment by enrico tognoni — 2012-01-22 @ 20:28

  42. Right now morituri is only a command-line application, no GUI yet. Please check the README and the output of rip -h for commands.

    Comment by Thomas — 2012-04-02 @ 10:37

RSS feed for comments on this post. TrackBack URL

Leave a comment