saugns v0.3.11. Fixes, cli features, syntax tweaks & more. Adjust default time behavior, document lengthening based on time of nested objects. Some smaller bugs remain, a further redesign needed. But fix two for modulation lists combined with timing syntax (file 'devtests/defaulttime3.sau'). Previously durations could lengthen past the play time based on that in nested lists; also, for ';'-separated (numberless, older syntax) sub-steps, gaps mistakenly produced. This also includes a bugfix for a timing issue added in v0.3.10b. A one-line bug, in a new time conversion function (added close to that release) made longer times roll over and become too short. (Example scripts had too short "t"s to catch it.) Syntax changes: * Rename '\' with number to ';' with number. The same use. * Newlines in the top scope will no longer end the current step, handling now becoming more regular and permissive. (Previously, an exception to the rule was new sub-steps, allowed on the line after a linebreak. '\' was different and not included in that exception. Now top and subscope handling is more similar and should be less surprising.) * For modulation with value range, change delimiters between the parts from "X,Y~[...]" to "Xw,Y[...]". * For phase modulation (normal, frequency-amplified) remove "+" after "p" and place to set phase value. * Ramp '{...}' sub-parameters: - Rename 'v' to 'g' (goal). - Rename 'c' to 'r' (ramp). * Rename ramp 'cos' to 'sin' (sinuous curve). It's maybe more intuitive. Also use a new polynomial, producing a reasonably high-fidelity sine curve. * Numerical expressions: - Allow number signs and arithmetic operations (full expressions) outside parentheses, with any whitespace ending the expression. Undoes a change from v0.3.0, restoring old feature. - Make '^' right-associative. - Add '%' remainder parsed similar to division. - Add functions: + sin(x), cos(x) + rand(), seed(x), time() + rint(x) - Add constants: + mf, pi Old scripts can be converted to the new syntax using in part simple search-and-replace steps: 1. Each old '\' should become ';'. 2. Each ',' should become 'w,'; if there's a new 'w,' before a '~' the '~' should be removed, else it should be replaced with 'w'. 3. Each '+[' should become '[' and every '+f[' should become 'f['. 4. Each 'v' inside a '{...}' should be changed to 'g'. 5. For ramp arguments 'cexp', 'clog', etc., replace string with 'rexp', 'rlog', etc. Except for 'ccos', which becomes 'rsin'. A smaller change included is that the 'O f' and 'S n' default values are now 440. Seems less awkward than the older, whimsical 444. Add '--mono' and '--stdout' cli options. Also support '-o -' audio to stdout with AU format header. (Unlike WAV, AU always allows headers without a known length. A file written with a name (not using '-') is still written as a WAV file however.)