aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2020-05-13 03:39:24 -0400
committerB. Watson <yalhcru@gmail.com>2020-05-13 03:39:24 -0400
commit93f975db15e56a1a423c40d65e1627ac888d42b0 (patch)
tree6cc5659710671168703a86c85af4169c9f02f708
parenta77c2bb6c7c6fb82b4bf48ee90ce56211f3b104f (diff)
downloadmiragextract-93f975db15e56a1a423c40d65e1627ac888d42b0.tar.gz
add man page for audiocue2bincueHEADmaster
-rw-r--r--Makefile6
-rw-r--r--audiocue2bincue90
-rw-r--r--audiocue2bincue.192
-rw-r--r--audiocue2bincue.html441
-rw-r--r--audiocue2bincue.rst78
-rw-r--r--cuerecover.12
-rw-r--r--cuerecover.html4
-rw-r--r--miragextract.123
-rw-r--r--miragextract.html23
9 files changed, 742 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 5cca456..13540b1 100644
--- a/Makefile
+++ b/Makefile
@@ -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 &amp; 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 &lt;<a class="reference external" href="mailto:yalhcru&#64;gmail.com">yalhcru&#64;gmail.com</a>&gt; 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 &quot;-l -a&quot; 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
&quot;hybrid&quot; 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 &quot;wav/cue&quot;
+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>