diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | audiocue2bincue | 90 | ||||
-rw-r--r-- | audiocue2bincue.1 | 92 | ||||
-rw-r--r-- | audiocue2bincue.html | 441 | ||||
-rw-r--r-- | audiocue2bincue.rst | 78 | ||||
-rw-r--r-- | cuerecover.1 | 2 | ||||
-rw-r--r-- | cuerecover.html | 4 | ||||
-rw-r--r-- | miragextract.1 | 23 | ||||
-rw-r--r-- | miragextract.html | 23 |
9 files changed, 742 insertions, 17 deletions
@@ -39,9 +39,9 @@ RST2HTML=rst2html4.py PROJ=miragextract VERSION=0.2.0 -BINS=$(PROJ) cuerecover -MANS=$(PROJ).1 cuerecover.1 -HTMLS=$(PROJ).html cuerecover.html +BINS=$(PROJ) cuerecover audiocue2bincue +MANS=$(PROJ).1 cuerecover.1 audiocue2bincue.1 +HTMLS=$(PROJ).html cuerecover.html audiocue2bincue.html DOCS=README FAQ ChangeLog LICENSE $(PROJ).html cuerecover.html SNDFILE_CFLAGS:=$(shell pkg-config --cflags sndfile) diff --git a/audiocue2bincue b/audiocue2bincue new file mode 100644 index 0000000..84c1582 --- /dev/null +++ b/audiocue2bincue @@ -0,0 +1,90 @@ +#!/usr/bin/env perl -w + +# Convert an audio file based CD image into a raw bin/cue. +# Uses libsndfile to do the audio file decoding and conversion, +# except for mp3 files (use lame for those). + +# Please don't try to convince me to use CPAN modules for things like +# cue sheets or audio format conversions. This is me using perl as a +# 'glue' language, not an 'enterprise applications platform'. + +($self = $0) =~ s,.*/,,; + +if(!@ARGV || $ARGV[0] eq '--help') { + print <<EOF; +Usage: $self [-s] [input.cue] [output.cue] +See man page for details. +EOF + exit 0 +} + +if($ARGV[0] eq '-s') { + $swapbytes = 1; + shift @ARGV; +} + +if($ARGV[1] && $ARGV[1] ne '-') { + open $out, ">", $ARGV[1]; + select $out; +} + +# Everyone always complains about regex looking like gibberish, +# so here's my attempt at writing a readable(ish) one. +$match_file = qr{ + ^\s* # optional leading space/tabs + FILE # required token + \s+ # required one or more spaces before the filename + "? # optional quote (spec doesn't require it) + ([^"]+) # actual filename goes in $1 + "? # optional quote afterwards + \s+ # required space(s) before the type + (\w+) # type (BINARY, WAVE, MP3 maybe, etc) goes in $2 +}x; + +@ARGV = ($ARGV[0]); + +%audiofiles = (); + +while(<>) { + if(/$match_file/) { + my ($file, $type) = ($1, $2); + $audiofiles{$file}++; + print fix_line($_, $file, $type); + } else { + print; + } +} + +for(keys %audiofiles) { + my $newfilename = $new_filenames{$_}; + (my $rawfilename = $newfilename) =~ s/\.bin$/.raw/; + + my @cmd = (); + + if($_ =~ /mp3$/i) { + @cmd = ( "lame", "-t", "--quiet", "--decode" ); + push @cmd, "-x" if $swapbytes; + push @cmd, ( $_, $rawfilename ); + } else { + my $endarg = "-endian=" . ($swapbytes ? "big" : "little"); + @cmd = ( "sndfile-convert", "-pcm16", $endarg, $_, $rawfilename ); + } + + warn "Converting $_ to raw .bin with $cmd[0]\n"; + system(@cmd); + rename($rawfilename, $newfilename); +} + +sub fix_line { + my ($line, $filename, $type) = @_; + my $newfilename; + + if($type eq 'BINARY') { + warn "$filename is already type BINARY, leaving as-is\n"; + return $line; + } + + ($newfilename = $filename) =~ s/(?:\.\w+)?$/.bin/; + $new_filenames{$filename} = $newfilename; + return "FILE \"$newfilename\" BINARY\r\n"; +} diff --git a/audiocue2bincue.1 b/audiocue2bincue.1 new file mode 100644 index 0000000..7097cc6 --- /dev/null +++ b/audiocue2bincue.1 @@ -0,0 +1,92 @@ +.\" Man page generated from reStructuredText. +. +.TH AUDIOCUE2BINCUE 1 "2020-05-13" "0.2.0" "Urchlay" +.SH NAME +audiocue2bincue \- convert audio file based CD images to raw binary +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" RST source for audiocue2bincue(1) man page. Convert with: +. +.\" rst2man.py audiocue2bincue.rst > audiocue2bincue.1 +. +.\" rst2man.py comes from the SBo development/docutils package. +. +.\" note to self: don't forget to check the generated man and html pages +. +.\" into git since we don't want to require our users to have rst2man.py. +. +.SH SYNOPSIS +.sp +audiocue2bincue [\fB\-s\fP] [\fB\-n\fP] [\fBinput.cue\fP] [\fBoutput.cue\fP] +.SH DESCRIPTION +.sp +If you have a CD image that consists of a .cue (or .ccd, .mds, etc) file +and a .wav (or .ogg, .mp3, etc) audio file instead of a raw binary image, +you won\(aqt be able to use it with miragextract. +.sp +Since libmirage currently (as of 3.2.4) doesn\(aqt seem to support these, +the audiocue2bincue script is provided as a quick & dirty conversion tool. +.sp +audiocue2bincue reads the .cue sheet from standard input and writes the modified .cue +to standard output if no filenames are given. +.sp +Default action (without \-n) is to go ahead and convert the audio file(s) listed +in the .cue file to raw CD audio. +.SH OPTIONS +.INDENT 0.0 +.TP +.B \-s +Swap byte order during audio conversion. +.TP +.B \-n +Don\(aqt convert audio file(s) to .bin image, just write a .cue (which +won\(aqt be very useful, but it\(aqs good for testing). +.UNINDENT +.SH NOTES +.sp +audiocue2bincue is written in Perl, so you\(aqll need your OS\(aqs perl package +installed. It doesn\(aqt use any CPAN modules, so there aren\(aqt a ton of +perl\-blah dependencies. +.sp +Make sure you\(aqve got libsndfile installed, including the sndfile\-convert command on +your $PATH. +.sp +If you have an mp3\-based image, you\(aqll need lame installed and on your $PATH, since +libsndfile doesn\(aqt support mp3. +.sp +audiocue2bincue hasn\(aqt been thoroughly tested. It seems to work fine, but +you may run into nonstandard/weird/broken .cue files that it can\(aqt handle. +.SH AUTHOR +.sp +audiocue2bincue was written by B. Watson <\fI\%yalhcru@gmail.com\fP> and +released under the WTFPL: Do WTF you want with this. +.SH SEE ALSO +.sp +miragextract(1), cuerecover(1), sndfile\-convert(1), lame(1) +.\" Generated by docutils manpage writer. +. diff --git a/audiocue2bincue.html b/audiocue2bincue.html new file mode 100644 index 0000000..28abe75 --- /dev/null +++ b/audiocue2bincue.html @@ -0,0 +1,441 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" /> +<title>audiocue2bincue</title> +<meta name="date" content="2020-05-13" /> +<style type="text/css"> + +/* +:Author: David Goodger (goodger@python.org) +:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $ +:Copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the HTML output of Docutils. + +See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to +customize this style sheet. +*/ + +/* used to remove borders from tables and images */ +.borderless, table.borderless td, table.borderless th { + border: 0 } + +table.borderless td, table.borderless th { + /* Override padding for "table.docutils td" with "! important". + The right padding separates the table cells. */ + padding: 0 0.5em 0 0 ! important } + +.first { + /* Override more specific margin styles with "! important". */ + margin-top: 0 ! important } + +.last, .with-subtitle { + margin-bottom: 0 ! important } + +.hidden { + display: none } + +.subscript { + vertical-align: sub; + font-size: smaller } + +.superscript { + vertical-align: super; + font-size: smaller } + +a.toc-backref { + text-decoration: none ; + color: black } + +blockquote.epigraph { + margin: 2em 5em ; } + +dl.docutils dd { + margin-bottom: 0.5em } + +object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { + overflow: hidden; +} + +/* Uncomment (and remove this text!) to get bold-faced definition list terms +dl.docutils dt { + font-weight: bold } +*/ + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.admonition, div.attention, div.caution, div.danger, div.error, +div.hint, div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.admonition p.admonition-title, div.hint p.admonition-title, +div.important p.admonition-title, div.note p.admonition-title, +div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title, .code .error { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +/* Uncomment (and remove this text!) to get reduced vertical space in + compound paragraphs. +div.compound .compound-first, div.compound .compound-middle { + margin-bottom: 0.5em } + +div.compound .compound-last, div.compound .compound-middle { + margin-top: 0.5em } +*/ + +div.dedication { + margin: 2em 5em ; + text-align: center ; + font-style: italic } + +div.dedication p.topic-title { + font-weight: bold ; + font-style: normal } + +div.figure { + margin-left: 2em ; + margin-right: 2em } + +div.footer, div.header { + clear: both; + font-size: smaller } + +div.line-block { + display: block ; + margin-top: 1em ; + margin-bottom: 1em } + +div.line-block div.line-block { + margin-top: 0 ; + margin-bottom: 0 ; + margin-left: 1.5em } + +div.sidebar { + margin: 0 0 0.5em 1em ; + border: medium outset ; + padding: 1em ; + background-color: #ffffee ; + width: 40% ; + float: right ; + clear: right } + +div.sidebar p.rubric { + font-family: sans-serif ; + font-size: medium } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, +h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { + margin-top: 0.4em } + +h1.title { + text-align: center } + +h2.subtitle { + text-align: center } + +hr.docutils { + width: 75% } + +img.align-left, .figure.align-left, object.align-left, table.align-left { + clear: left ; + float: left ; + margin-right: 1em } + +img.align-right, .figure.align-right, object.align-right, table.align-right { + clear: right ; + float: right ; + margin-left: 1em } + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left } + +.align-center { + clear: both ; + text-align: center } + +.align-right { + text-align: right } + +/* reset inner alignment in figures */ +div.align-right { + text-align: inherit } + +/* div.align-center * { */ +/* text-align: left } */ + +.align-top { + vertical-align: top } + +.align-middle { + vertical-align: middle } + +.align-bottom { + vertical-align: bottom } + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.attribution { + text-align: right ; + margin-left: 50% } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.rubric { + font-weight: bold ; + font-size: larger ; + color: maroon ; + text-align: center } + +p.sidebar-title { + font-family: sans-serif ; + font-weight: bold ; + font-size: larger } + +p.sidebar-subtitle { + font-family: sans-serif ; + font-weight: bold } + +p.topic-title { + font-weight: bold } + +pre.address { + margin-bottom: 0 ; + margin-top: 0 ; + font: inherit } + +pre.literal-block, pre.doctest-block, pre.math, pre.code { + margin-left: 2em ; + margin-right: 2em } + +pre.code .ln { color: grey; } /* line numbers */ +pre.code, code { background-color: #eeeeee } +pre.code .comment, code .comment { color: #5C6576 } +pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } +pre.code .literal.string, code .literal.string { color: #0C5404 } +pre.code .name.builtin, code .name.builtin { color: #352B84 } +pre.code .deleted, code .deleted { background-color: #DEB0A1} +pre.code .inserted, code .inserted { background-color: #A3D289} + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option { + white-space: nowrap } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +span.section-subtitle { + /* font-size relative to parent (h1..h6 element) */ + font-size: 80% } + +table.citation { + border-left: solid 1px gray; + margin-left: 1px } + +table.docinfo { + margin: 2em 4em } + +table.docutils { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +table.footnote { + border-left: solid 1px black; + margin-left: 1px } + +table.docutils td, table.docutils th, +table.docinfo td, table.docinfo th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +table.docutils th.field-name, table.docinfo th.docinfo-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap ; + padding-left: 0 } + +/* "booktabs" style (no vertical lines) */ +table.docutils.booktabs { + border: 0px; + border-top: 2px solid; + border-bottom: 2px solid; + border-collapse: collapse; +} +table.docutils.booktabs * { + border: 0px; +} +table.docutils.booktabs th { + border-bottom: thin solid; + text-align: left; +} + +h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, +h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { + font-size: 100% } + +ul.auto-toc { + list-style-type: none } + +</style> +</head> +<body> +<div class="document" id="audiocue2bincue"> +<h1 class="title">audiocue2bincue</h1> +<h2 class="subtitle" id="convert-audio-file-based-cd-images-to-raw-binary">convert audio file based CD images to raw binary</h2> +<table class="docinfo" frame="void" rules="none"> +<col class="docinfo-name" /> +<col class="docinfo-content" /> +<tbody valign="top"> +<tr class="manual-section field"><th class="docinfo-name">Manual section:</th><td class="field-body">1</td> +</tr> +<tr class="manual-group field"><th class="docinfo-name">Manual group:</th><td class="field-body">Urchlay</td> +</tr> +<tr><th class="docinfo-name">Date:</th> +<td>2020-05-13</td></tr> +<tr><th class="docinfo-name">Version:</th> +<td>0.2.0</td></tr> +</tbody> +</table> +<!-- RST source for audiocue2bincue(1) man page. Convert with: --> +<!-- rst2man.py audiocue2bincue.rst > audiocue2bincue.1 --> +<!-- rst2man.py comes from the SBo development/docutils package. --> +<!-- note to self: don't forget to check the generated man and html pages --> +<!-- into git since we don't want to require our users to have rst2man.py. --> +<div class="section" id="synopsis"> +<h1>SYNOPSIS</h1> +<p>audiocue2bincue [<strong>-s</strong>] [<strong>-n</strong>] [<strong>input.cue</strong>] [<strong>output.cue</strong>]</p> +</div> +<div class="section" id="description"> +<h1>DESCRIPTION</h1> +<p>If you have a CD image that consists of a .cue (or .ccd, .mds, etc) file +and a .wav (or .ogg, .mp3, etc) audio file instead of a raw binary image, +you won't be able to use it with miragextract.</p> +<p>Since libmirage currently (as of 3.2.4) doesn't seem to support these, +the audiocue2bincue script is provided as a quick & dirty conversion tool.</p> +<p>audiocue2bincue reads the .cue sheet from standard input and writes the modified .cue +to standard output if no filenames are given.</p> +<p>Default action (without -n) is to go ahead and convert the audio file(s) listed +in the .cue file to raw CD audio.</p> +</div> +<div class="section" id="options"> +<h1>OPTIONS</h1> +<table class="docutils option-list" frame="void" rules="none"> +<col class="option" /> +<col class="description" /> +<tbody valign="top"> +<tr><td class="option-group"> +<kbd><span class="option">-s</span></kbd></td> +<td>Swap byte order during audio conversion.</td></tr> +<tr><td class="option-group"> +<kbd><span class="option">-n</span></kbd></td> +<td>Don't convert audio file(s) to .bin image, just write a .cue (which +won't be very useful, but it's good for testing).</td></tr> +</tbody> +</table> +</div> +<div class="section" id="notes"> +<h1>NOTES</h1> +<p>audiocue2bincue is written in Perl, so you'll need your OS's perl package +installed. It doesn't use any CPAN modules, so there aren't a ton of +perl-blah dependencies.</p> +<p>Make sure you've got libsndfile installed, including the sndfile-convert command on +your $PATH.</p> +<p>If you have an mp3-based image, you'll need lame installed and on your $PATH, since +libsndfile doesn't support mp3.</p> +<p>audiocue2bincue hasn't been thoroughly tested. It seems to work fine, but +you may run into nonstandard/weird/broken .cue files that it can't handle.</p> +</div> +<div class="section" id="author"> +<h1>AUTHOR</h1> +<p>audiocue2bincue was written by B. Watson <<a class="reference external" href="mailto:yalhcru@gmail.com">yalhcru@gmail.com</a>> and +released under the WTFPL: Do WTF you want with this.</p> +</div> +<div class="section" id="see-also"> +<h1>SEE ALSO</h1> +<p>miragextract(1), cuerecover(1), sndfile-convert(1), lame(1)</p> +</div> +</div> +</body> +</html> diff --git a/audiocue2bincue.rst b/audiocue2bincue.rst new file mode 100644 index 0000000..755681e --- /dev/null +++ b/audiocue2bincue.rst @@ -0,0 +1,78 @@ +.. RST source for audiocue2bincue(1) man page. Convert with: +.. rst2man.py audiocue2bincue.rst > audiocue2bincue.1 +.. rst2man.py comes from the SBo development/docutils package. + +.. note to self: don't forget to check the generated man and html pages +.. into git since we don't want to require our users to have rst2man.py. + +.. |version| replace:: 0.2.0 +.. |date| date:: + +=============== +audiocue2bincue +=============== + +------------------------------------------------ +convert audio file based CD images to raw binary +------------------------------------------------ + +:Manual section: 1 +:Manual group: Urchlay +:Date: |date| +:Version: |version| + +SYNOPSIS +======== + +audiocue2bincue [**-s**] [**-n**] [**input.cue**] [**output.cue**] + +DESCRIPTION +=========== + +If you have a CD image that consists of a .cue (or .ccd, .mds, etc) file +and a .wav (or .ogg, .mp3, etc) audio file instead of a raw binary image, +you won't be able to use it with miragextract. + +Since libmirage currently (as of 3.2.4) doesn't seem to support these, +the audiocue2bincue script is provided as a quick & dirty conversion tool. + +audiocue2bincue reads the .cue sheet from standard input and writes the modified .cue +to standard output if no filenames are given. + +Default action (without -n) is to go ahead and convert the audio file(s) listed +in the .cue file to raw CD audio. + +OPTIONS +======= + +-s Swap byte order during audio conversion. + +-n Don't convert audio file(s) to .bin image, just write a .cue (which + won't be very useful, but it's good for testing). + +NOTES +===== + +audiocue2bincue is written in Perl, so you'll need your OS's perl package +installed. It doesn't use any CPAN modules, so there aren't a ton of +perl-blah dependencies. + +Make sure you've got libsndfile installed, including the sndfile-convert command on +your $PATH. + +If you have an mp3-based image, you'll need lame installed and on your $PATH, since +libsndfile doesn't support mp3. + +audiocue2bincue hasn't been thoroughly tested. It seems to work fine, but +you may run into nonstandard/weird/broken .cue files that it can't handle. + +AUTHOR +====== + +audiocue2bincue was written by B. Watson <yalhcru@gmail.com> and +released under the WTFPL: Do WTF you want with this. + +SEE ALSO +======== + +miragextract(1), cuerecover(1), sndfile-convert(1), lame(1) diff --git a/cuerecover.1 b/cuerecover.1 index 05c377d..ff4e136 100644 --- a/cuerecover.1 +++ b/cuerecover.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH CUERECOVER 1 "2020-05-12" "0.2.0" "Urchlay" +.TH CUERECOVER 1 "2020-05-13" "0.2.0" "Urchlay" .SH NAME cuerecover \- generate .cue file for CD image .bin . diff --git a/cuerecover.html b/cuerecover.html index b4e3b7e..c4c5967 100644 --- a/cuerecover.html +++ b/cuerecover.html @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" /> <title>cuerecover</title> -<meta name="date" content="2020-05-12" /> +<meta name="date" content="2020-05-13" /> <style type="text/css"> /* @@ -373,7 +373,7 @@ ul.auto-toc { <tr class="manual-group field"><th class="docinfo-name">Manual group:</th><td class="field-body">Urchlay</td> </tr> <tr><th class="docinfo-name">Date:</th> -<td>2020-05-12</td></tr> +<td>2020-05-13</td></tr> <tr><th class="docinfo-name">Version:</th> <td>0.2.0</td></tr> </tbody> diff --git a/miragextract.1 b/miragextract.1 index 6c0a187..e7627d9 100644 --- a/miragextract.1 +++ b/miragextract.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH MIRAGEXTRACT 1 "2020-05-12" "0.2.0" "Urchlay" +.TH MIRAGEXTRACT 1 "2020-05-13" "0.2.0" "Urchlay" .SH NAME miragextract \- extract audio and data tracks from CD images . @@ -72,7 +72,13 @@ Choices are \fBwav\fP, \fBogg\fP, \fBflac\fP, \fBcdda\fP (raw CD audio). Default is \fBwav\fP\&. .TP .B \-l -Lists the tracks in the image without extracting them. +Lists all tracks in the image without extracting them. Currently +does not combine with \-t, \-a, \-d as expected (you can\(aqt list only +audio tracks with "\-l \-a" for instance). +.TP +.B \-L +Lists all tracks in the image without extracting them, with +extra detail (sector sizes, counts, and exact byte sizes). .TP .B \-n Set the base filename to the input filename, minus its extension. @@ -101,6 +107,8 @@ Takes a track number (1\-99), and extracts only that one track. Default behaviour is to extract all tracks. .UNINDENT .sp +Option bundling is not supported (e.g. \fB\-d\fP \fB\-s\fP is OK, \fB\-ds\fP is wrong). +.sp Always include a space between an option and its argument (e.g. \fB\-b foo\fP, not \fB\-bfoo\fP). .SH NOTES .sp @@ -118,7 +126,7 @@ to convert to mp3. Output data tracks will be named to end in \(aq.iso\(aq by default, or \(aq.hfs\(aq if they look like Apple disk images (HFS or HFS+), or \(aq.hfs.iso\(aq for "hybrid" images that can be mounted as either ISO9660 or HFS/HFS+ -(such as Blizzard\(aqs Mac/PC releases). +(such as Blizzard\(aqs combined Mac/PC releases). .sp Images with multiple sessions should be supported, but have not been tested. Track numbering just continues, so a disc with 2 sessions of @@ -160,8 +168,13 @@ Not exactly a bug, per se, but miragextract can\(aqt deal with multi\-file images where one of the files is missing or truncated. This is because libmirage validates the image when it\(aqs loaded, and is unlikely to change. .sp -Related to the above, there\(aqs no attempt to recover from -errors. miragextract exits as soon as it encounters an error of any kind. +Related to the above, there\(aqs no attempt to recover from errors. +miragextract exits as soon as it encounters an error of any kind. +.sp +libmirage (as of version 3.2.4) also doesn\(aqt really support "wav/cue" +images (or ogg/cue, mp3/cue, etc). If you try to use miragextract on one, +you\(aqll get advised to try audiocue2bincue(1). When (if) libmirage gains +support for these, miragextract should handle them just fine. .\" EXAMPLES . .\" ======== diff --git a/miragextract.html b/miragextract.html index 677bd2c..04940bc 100644 --- a/miragextract.html +++ b/miragextract.html @@ -5,7 +5,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.14: http://docutils.sourceforge.net/" /> <title>miragextract</title> -<meta name="date" content="2020-05-12" /> +<meta name="date" content="2020-05-13" /> <style type="text/css"> /* @@ -373,7 +373,7 @@ ul.auto-toc { <tr class="manual-group field"><th class="docinfo-name">Manual group:</th><td class="field-body">Urchlay</td> </tr> <tr><th class="docinfo-name">Date:</th> -<td>2020-05-12</td></tr> +<td>2020-05-13</td></tr> <tr><th class="docinfo-name">Version:</th> <td>0.2.0</td></tr> </tbody> @@ -421,7 +421,13 @@ Choices are <strong>wav</strong>, <strong>ogg</strong>, <strong>flac</strong>, < Default is <strong>wav</strong>.</td></tr> <tr><td class="option-group"> <kbd><span class="option">-l</span></kbd></td> -<td>Lists the tracks in the image without extracting them.</td></tr> +<td>Lists all tracks in the image without extracting them. Currently +does not combine with -t, -a, -d as expected (you can't list only +audio tracks with "-l -a" for instance).</td></tr> +<tr><td class="option-group"> +<kbd><span class="option">-L</span></kbd></td> +<td>Lists all tracks in the image without extracting them, with +extra detail (sector sizes, counts, and exact byte sizes).</td></tr> <tr><td class="option-group"> <kbd><span class="option">-n</span></kbd></td> <td>Set the base filename to the input filename, minus its extension. @@ -450,6 +456,7 @@ like white noise or gibberish.</td></tr> Default behaviour is to extract all tracks.</td></tr> </tbody> </table> +<p>Option bundling is not supported (e.g. <strong>-d</strong> <strong>-s</strong> is OK, <strong>-ds</strong> is wrong).</p> <p>Always include a space between an option and its argument (e.g. <strong>-b foo</strong>, not <strong>-bfoo</strong>).</p> </div> <div class="section" id="notes"> @@ -465,7 +472,7 @@ to convert to mp3.</p> <p>Output data tracks will be named to end in '.iso' by default, or '.hfs' if they look like Apple disk images (HFS or HFS+), or '.hfs.iso' for "hybrid" images that can be mounted as either ISO9660 or HFS/HFS+ -(such as Blizzard's Mac/PC releases).</p> +(such as Blizzard's combined Mac/PC releases).</p> <p>Images with multiple sessions should be supported, but have not been tested. Track numbering just continues, so a disc with 2 sessions of 8 files each will have tracks numbered 1 to 16 as far as the -t option @@ -492,8 +499,12 @@ play -x -t cdda track01.cdda <p>Not exactly a bug, per se, but miragextract can't deal with multi-file images where one of the files is missing or truncated. This is because libmirage validates the image when it's loaded, and is unlikely to change.</p> -<p>Related to the above, there's no attempt to recover from -errors. miragextract exits as soon as it encounters an error of any kind.</p> +<p>Related to the above, there's no attempt to recover from errors. +miragextract exits as soon as it encounters an error of any kind.</p> +<p>libmirage (as of version 3.2.4) also doesn't really support "wav/cue" +images (or ogg/cue, mp3/cue, etc). If you try to use miragextract on one, +you'll get advised to try audiocue2bincue(1). When (if) libmirage gains +support for these, miragextract should handle them just fine.</p> <!-- EXAMPLES --> <!-- ======== --> </div> |