Cyanrip
Bule-ish CD ripper
Install / Use
/learn @cyanreg/CyanripREADME
cyanrip
Fully featured CD ripping program able to take out most of the tedium. Fully accurate, has advanced features most rippers don't, yet has no bloat and is cross-platform.
Features
- Automatic tag lookup from the MusicBrainz database
- Encoded and muxed via FFmpeg (currently supports flac, opus, mp3, tta, wavpack, alac, vorbis and aac)
- Drive offset compensation and error recovery via cd-paranoia
- Full pregap handling
- HDCD detection and decoding
- CD Deemphasis (TOC + subcode)
- Multi-disc album ripping
- ReplayGain v2 tagging
- Able to encode to multiple formats in parallel
- Cover image embedding in mp3, flac, aac and opus
- Automatic cover art image downloading
- Provides and automatically verifies EAC CRC32, AccurateRip V1 and V2 checksums
- Accurate ripping verification of partially damaged tracks
- Automatic drive offset finding
Installation
Alpine Linux
apk add cyanrip
Archlinux
pacaur -S cyanrip
Or use your favorite AUR installation method.
Debian (and derivatives)
apt install cyanrip
OpenSUSE
zypper install cyanrip
Void Linux
xbps-install -S cyanrip
FreeBSD
pkg install cyanrip
Or via ports: cd /usr/ports/audio/cyanrip && make install clean.
NixOS
nix-env -iA nixos.cyanrip
Docker
docker pull ep76/cyanrip
Automated Windows builds 
If the latest build is broken, you can find older ones in the nightly release page
Compiling
Complete list of dependencies:
- FFmpeg (at least 4.0, libavcodec, libswresample, libavutil, libavformat, libavfilter)
- libcdio-paranoia
- libmusicbrainz5
- libcurl
All are available on any up-to-date Linux distribution's package repositories. To compile and install on any *NIX platform:
meson build
ninja -C build
sudo ninja -C build install
cyanrip can be also built and ran under Windows using MinGW
CLI
Arguments are optional, except -s. By default cyanrip will rip all tracks from the default CD drive, output to flac only, enables all cd-paranoia error checking, performs a MusicBrainz lookup, and downloads and embeds the cover art if one is found.
| Argument | Description |
|----------------------|---------------------------------------------------------------------------------------------|
| | Ripping options |
| -d string | The path or name for a specific device, otherwise uses the default device |
| -s int | Specifies the CD drive offset in samples (same as EAC, default is 0) |
| -r int | Specifies how many times to retry a frame/ripping if it fails, (default is 10) |
| -Z int | Rips tracks until their checksums match <int> number of times. For very damaged CDs. |
| -S int | Sets the drive speed if possible (default is unset, usually maximum) |
| -p number=string | Specifies what to do with the pregap, syntax is described below |
| -P int | Sets the paranoia level to use, by default its max, 0 disables all checking completely |
| -O | Overread into lead-in/lead-out areas, if unsupported by drive may freeze ripping |
| -H | Enable HDCD decoding, read below for details |
| -E | Force CD deemphasis, for CDs mastered with preemphasis without actually signalling it |
| -W | Disable automatic CD deemphasis. Read below for details. |
| -K | Disable ReplayGain tag generation. Read replaygain for details. |
| | Output options |
| -o list | Comma separated list of output formats (encodings). Use "help" to list all. Default is flac |
| -b int | Bitrate in kbps for lossy formats, 256 by default |
| -D string | Directory naming scheme, see below |
| -F string | File naming scheme, see below |
| -L string | Log naming scheme, see below |
| -M string | CUE file naming scheme, see below |
| -l list | Comma separated list of track numbers to rip, (default is it rips all) |
| -T string | Filename sanitation, default is unicode, see below |
| | Metadata options |
| -I | Only print CD metadata and information, will not rip or eject the CD |
| -a string | Album metadata, syntax is described below |
| -t number=string | Track metadata, syntax is described below |
| -R int or string | Sets the MusicBrainz release to use, either as an index starting from 1 or an ID string |
| -c int/int | Tag multi-disc albums as such, syntax is disc/totaldiscs, read below |
| -C path or url | Sets cover image to embed into each track, syntax is described below |
| -N | Disables MusicBrainz lookup and ignores lack of manual metadata to continue |
| -A | Disables AccurateRip database query and comparison |
| -U | Disables Cover art DB database query and retrieval |
| -m | Lookup cover art with max size: 250, 500, 1200, -1 (no limit, default) |
| -G | Disables embedding of cover art images |
| | Misc. options |
| -Q | Eject CD tray if ripping has been successfully completed |
| -V | Print version |
| -h | Print usage (this) |
| -f | Find drive offset (requires a disc with an AccuRip DB entry) |
Metadata
In case the MusicBrainz database doesn't contain the disc information, is incomplete, or incorrect, you can manually add metadata via the -a argument for album metadata and -t argument for track metadata:
-a album="Name":album_artist="Artist":date="2018":random_tag="Value"
-t 1=artist="Track Artist":lyrics="Name":random_tag="Value" -t 3=artist="Someone Else"
All key=value pair tags must be separated by :. For track tags, the syntax is -t track_number=key=value:key=value. You need to specify the -t argument separately for each track.
For convenience, if any of the first 2 metadata tags of tracks are missing a key, such as with -t 2=some_title:some_artist:key=value, cyanrip will automatically prepend title= and artist= such that it becomes -t title=some_title:artist=some_artist:key=value.
A missing key in tag 1 is always considered a title while a missing key in tag 2 is always considered artist, so either can be skipped with no effect.
The same goes for album tags, with album= and album_artist= being omitable.
For album tags, if either artist or album_artist are unset, their values will be mirrored if one is available.
The precedence of tags is Track tags > Album tags > MusicBrainz tags.
Output
The output encoding(s) can be set via the -o option as a comma-separated list. Currently, the following formats are available:
| Format name | Description | Extension | Cover art embedding | Notes |
|-------------|-------------------------------------------------|-----------|---------------------|-----------------------------------------------------------|
| flac | Standard FLAC files | .flac | :heavy_check_mark: | Always uses maximum compression |
| tta | TTA (True Audio) files | .tta | ⬜ | Always uses maximum compression |
| opus | Standard Opus files (in an Ogg container) | .opus | ⬜ | VBR, use -b to adjust the bitrate, default is 256 (kbps) |
| aac | Standard AAC files | .aac | ⬜ | Use -b to adjust the bitrate, default is 256 (kbps) |
| `wavpa
