changeset 240:7c4f7cd065a0

Various tweaks to help text
author Chris Cannam
date Tue, 01 Mar 2016 16:02:53 +0000
parents 0c87c4fca256
children ef73773fb7e9 bb4b80c2987b
files runner/main.cpp
diffstat 1 files changed, 99 insertions(+), 75 deletions(-) [+]
line wrap: on
line diff
--- a/runner/main.cpp	Tue Mar 01 14:34:18 2016 +0000
+++ b/runner/main.cpp	Tue Mar 01 16:02:53 2016 +0000
@@ -137,6 +137,10 @@
     return ws;
 }
 
+static QString wrapCol(QString s) {
+    return wrap(s, 56, 22);
+}
+
 static bool
 isVersionNewerThan(QString a, QString b) // from VersionTester in svapp
 {
@@ -186,7 +190,7 @@
     cerr << endl;
     cerr << "Sonic Annotator v" << RUNNER_VERSION << endl;
     cerr << "A utility for batch feature extraction from audio files." << endl;
-    cerr << "Mark Levy, Chris Sutton and Chris Cannam, Queen Mary, University of London." << endl;
+    cerr << "Mark Levy, Chris Sutton, and Chris Cannam, Queen Mary, University of London." << endl;
     cerr << "Copyright 2007-2015 Queen Mary, University of London." << endl;
     cerr << endl;
     cerr << "This program is free software.  You may redistribute copies of it under the" << endl;
@@ -199,7 +203,7 @@
     cerr << "  " << myname
          << " [-mrnf] -T translist.txt [..] -w <writer> [..] <audio> [..]" << endl;
     cerr << "  " << myname
-         << " [-mrnf] -d <plugin> [..] -w <writer> [..] <audio> [...]" << endl;
+         << " [-mrnf] -d <id> [..] -w <writer> [..] <audio> [...]" << endl;
     cerr << "  " << myname
          << " -s <transform>" << endl;
     cerr << "  " << myname
@@ -207,7 +211,7 @@
     cerr << endl;
     cerr << "Where <audio> is an audio file or URL to use as input: either a local file" << endl;
     cerr << "path, local \"file://\" URL, or remote \"http://\" or \"ftp://\" URL;" << endl;
-    cerr << "and <plugin> is a plugin output identified as vamp:libname:plugin:output." << endl;
+    cerr << "and <id> is a transform id of the form vamp:libname:plugin:output." << endl;
     cerr << endl;
 }
 
@@ -218,7 +222,7 @@
     if (p.hasArg) { cerr << "<X> "; spaceage -= 4; }
     for (int k = 0; k < spaceage; ++k) cerr << " ";
     QString s(p.description.c_str());
-    s = wrap(s, 56, 22);
+    s = wrapCol(s);
     cerr << s << endl;
 }
 
@@ -261,92 +265,112 @@
         if (++i != writers.end()) writerText += ", ";
         else writerText += ".";
     }
-    writerText = wrap(writerText, 56, 22);
+    writerText = wrapCol(writerText);
 
     if (writer == "" || writers.find(writer) == writers.end()) {
 
         cerr << "Transformation options:" << endl;
         cerr << endl;
-        cerr << "  -t, --transform <T> Apply transform described in transform file <T> to" << endl;
-        cerr << "                      all input audio files. You may supply this option" << endl;
-        cerr << "                      multiple times. You must supply this option or -T at" << endl;
-        cerr << "                      least once for any work to be done. Transform format" << endl;
-        cerr << "                      may be SV transform XML or Vamp transform RDF/Turtle." << endl;
-        cerr << "                      See accompanying documentation for transform examples." << endl;
-        cerr << endl;
-        cerr << "  -T, --transforms <T> Apply all transforms described in transform files" << endl;
-        cerr << "                      whose names are listed in text file <T>. You may supply" << endl;
-        cerr << "                      this option multiple times." << endl;
-        cerr << endl;
-        cerr << "  -d, --default <I>   Apply the default transform for transform id <I>. This" << endl;
-        cerr << "                      is equivalent to generating a skeleton transform for this" << endl;
-        cerr << "                      id (using the -s option, below) and then applying that," << endl;
-        cerr << "                      unmodified, with the -t option in the normal way. Note" << endl;
-        cerr << "                      that results may vary, as the implementation's default" << endl;
-        cerr << "                      processing parameters are not guaranteed. Do not use" << endl;
-        cerr << "                      this in production systems. You may supply this option" << endl;
-        cerr << "                      multiple times, and mix it with -t and -T." << endl;
-        cerr << endl;
-        cerr << "  -w, --writer <W>    Write output using writer type <W>." << endl;
-        cerr << "                      " << writerText << endl;
-        cerr << "                      You may supply this option multiple times. You must" << endl;
-        cerr << "                      supply this option at least once for any work to be done." << endl;
-        cerr << endl;
-        cerr << "  -S, --summary <S>   In addition to the result features, write summary feature" << endl;
-        cerr << "                      of summary type <S>." << endl;
-        cerr << "                      Supported summary types are min, max, mean, median, mode," << endl;
-        cerr << "                      sum, variance, sd, count." << endl;
-        cerr << "                      You may supply this option multiple times." << endl;
-        cerr << endl;
-        cerr << "      --summary-only  Write only summary features; do not write the regular" << endl;
-        cerr << "                      result features." << endl;
-        cerr << endl;
-        cerr << "      --segments <A>,<B>[,...]" << endl;
-        cerr << "                      Summarise in segments, with segment boundaries" << endl;
-        cerr << "                      at A, B, ... seconds." << endl;
-        cerr << endl;
-        cerr << "      --segments-from <F>" << endl;
-        cerr << "                      Summarise in segments, with segment boundaries" << endl;
-        cerr << "                      at times read from the text file <F>. (one time per" << endl;
-        cerr << "                      line, in seconds)." << endl;
-        cerr << endl;
-        cerr << "  -m, --multiplex     If multiple input audio files are given, use mono" << endl;
-        cerr << "                      mixdowns of all files as the input channels for a single" << endl;
-        cerr << "                      invocation of each transform, instead of running the" << endl;
-        cerr << "                      transform against all files separately. The first file" << endl;
-        cerr << "                      will be used for output reference name and sample rate." << endl;
-        cerr << endl;
-        cerr << "  -r, --recursive     If any of the <audio> arguments is found to be a local" << endl;
-        cerr << "                      directory, search the tree starting at that directory" << endl;
-        cerr << "                      for all supported audio files and take all of those as" << endl;
-        cerr << "                      input instead." << endl;
-        cerr << endl;
-        cerr << "  -n, --normalise     Normalise input audio files to signal absolute max = 1.f." << endl;
-        cerr << endl;
-        cerr << "  -f, --force         Continue with subsequent files following an error." << endl;
-        cerr << endl;
-        cerr << "Housekeeping options:" << endl;
-        cerr << endl;
+        cerr << "  -t, --transform <T> "
+             << wrapCol("Apply transform described in transform file <T> to"
+                        " all input audio files. You may supply this option" 
+                        " multiple times. You must supply this option, -T, or -d" 
+                        " at least once for any work to be done. Transform format" 
+                        " may be SV transform XML or Vamp transform RDF/Turtle."
+                        " A skeleton transform file for"
+                        " a given transform id can be generated using the"
+                        " -s option (see below). See accompanying"
+                        " documentation for transform examples.")
+             << endl << endl;
+        cerr << "  -T, --transforms <T> "
+             << wrapCol("Apply all transforms described in transform files"
+                        " whose names are listed in text file <T>. You may supply"
+                        " this option multiple times.")
+             << endl << endl;
+        cerr << "  -d, --default <I>   "
+             << wrapCol("Apply the default transform for transform id <I>. This"
+                        " is equivalent to generating a skeleton transform for the"
+                        " id (using the -s option, below) and then applying that,"
+                        " unmodified, with the -t option in the normal way. Note"
+                        " that results may vary, as default"
+                        " processing parameters may change between releases of "
+                        + myname + " as well as of individual plugins. Do not use"
+                        " this in production systems. You may supply this option"
+                        " multiple times, and mix it with -t and -T.")
+             << endl << endl;
+        cerr << "  -w, --writer <W>    Write output using writer type <W>.\n"
+             << "                      " << writerText << endl
+             << "                      "
+             << wrapCol("You may supply this option multiple times. You must"
+                        " supply this option at least once for any work to be done.")
+             << endl << endl;
+        cerr << "  -S, --summary <S>   "
+             << wrapCol("In addition to the result features, write summary feature"
+                        " of summary type <S>.") << endl
+             << "                      "
+             << wrapCol("Supported summary types are min, max, mean, median, mode,"
+                        " sum, variance, sd, count.") << endl
+             << "                      You may supply this option multiple times."
+             << endl << endl;
+        cerr << "      --summary-only  "
+             << wrapCol("Write only summary features; do not write the regular"
+                        " result features.")
+             << endl << endl;
+        cerr << "      --segments <A>,<B>[,...]\n                      "
+             << wrapCol("Summarise in segments, with segment boundaries"
+                        " at A, B, ... seconds.")
+             << endl << endl;
+        cerr << "      --segments-from <F>\n                      "
+             << wrapCol("Summarise in segments, with segment boundaries"
+                        " at times read from the text file <F>. (one time per"
+                        " line, in seconds).")
+             << endl << endl;
+        cerr << "  -m, --multiplex     "
+             << wrapCol("If multiple input audio files are given, use mono"
+                        " mixdowns of the files as the input channels for a single"
+                        " invocation of each transform, instead of running the"
+                        " transform against all files separately. The first file"
+                        " will be used for output reference name and sample rate.")
+             << endl << endl;
+        cerr << "  -r, --recursive     "
+             << wrapCol("If any of the <audio> arguments is found to be a local"
+                        " directory, search the tree starting at that directory"
+                        " for all supported audio files and take all of those as"
+                        " input in place of it.")
+             << endl << endl;
+        cerr << "  -n, --normalise     "
+             << wrapCol("Normalise each input audio file to signal abs max = 1.f.")
+             << endl << endl;
+        cerr << "  -f, --force         "
+             << wrapCol("Continue with subsequent files following an error.")
+             << endl << endl;
+        cerr << "Housekeeping options:"
+             << endl << endl;
         cerr << "  -l, --list          List available transform ids to standard output." << endl;
         cerr << "      --list-writers  List supported writer types to standard output." << endl;
         cerr << "      --list-formats  List supported input audio formats to standard output." << endl;
         cerr << endl;
-        cerr << "  -s, --skeleton <I>  Generate a skeleton transform file for transform id <I>" << endl;
-        cerr << "                      and write it to standard output." << endl;
-        cerr << endl;
+        cerr << "  -s, --skeleton <I>  "
+             << wrapCol("Generate a skeleton RDF transform file for transform id"
+                        " <I>, with default parameters for that transform, and write it"
+                        " to standard output.")
+             << endl << endl;
         cerr << "  -v, --version       Show the version number and exit." << endl;
         cerr << endl;
-        cerr << "      --minversion <V> Exit with successful return code if the version of" << endl;
-        cerr << "                      " << myname << " is at least <V>, failure otherwise." << endl;
-        cerr << "                      For scripts that depend on certain option support." << endl;
-        cerr << endl;
+        cerr << "      --minversion <V> "
+             << wrapCol("Exit with successful return code if the version of "
+                        + myname + " is at least <V>, failure otherwise."
+                        " For scripts that depend on certain option support.")
+             << endl << endl;
         cerr << "  -h, --help          Show help." << endl;
         cerr << "  -h, --help <W>      Show help for writer type W." << endl;
         cerr << "                      " << writerText << endl;
 
-        cerr << endl;
-        cerr << "If no -w (or --writer) options are supplied, either the -l -s -v or -h option" << endl;
-        cerr << "(or long equivalent) must be given instead." << endl;
+        cerr << endl
+             << wrap("If no -w (or --writer) options are supplied, one of the"
+                     " housekeeping options (-l -s -v -h or long equivalent) must"
+                     " be given instead.", 78, 0)
+             << endl;
 
     } else {