SkillAgentSearch skills...

Cyanrip

Bule-ish CD ripper

Install / Use

/learn @cyanreg/Cyanrip
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

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 Windows CI

Latest release Windows build

Latest Windows build

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

View on GitHub
GitHub Stars359
CategoryDevelopment
Updated1d ago
Forks17

Languages

C

Security Score

95/100

Audited on Mar 25, 2026

No findings