Tags give the ability to mark specific points in history as being important
  • v0.3.8b   saugns v0.3.8b. Portability, performance, and cli fixes. OSS on NetBSD: Use /dev/audio, not /dev/sound. Check for the AUDIODEV environment variable, using it to override the default device name regardless of which type (ALSA, OSS, ...) is used. Similar to handling in other software, e.g. SoX and SDL. Empty strings are ignored. Credit to Art Nikpal (@hyphop at GitHub) for the basic idea, and SoX code as a reference. Further refactor player/audiodev code a bit. Change cli argument parsing to allow a flag to be followed by its argument without a space in-between. Recognize "--" as meaning no further strings are flags. Uses SAU_getopt() derived from Christopher Wellons's public domain getopt(). Makefile changes to selectively use -O3. Following benchmarking (repeated running of example/ scripts with -m to time it), this can have a benefit anywhere from no to more than 42%, depending on compiler, etc. (It seems to matter more with GCC.) Move ramp mulbuf use into the fill functions and adjust more, allowing mulbuf to be NULL. Change the mempool to use dynamic sizing of memory blocks, doubling size when the number of blocks exceeds a power of four. Use 2048 as the start block size. Doesn't change the performance significantly with my testing which became too rough for tiny differences or needs larger volumes of use.
    73174951 · Set version to v0.3.8b. ·
  • v0.3.8   saugns v0.3.8. Clean-up redesign. Fix timing bugs. Most commits near the top, after the renaming to 'saugns', have been replaced by expanded commits a bit further down. Superficial stylistic changes have been rolled back a bit, while the valuable redesign parts have been streamlined in redone versions. To make space for expanding list syntax, undocumented '[]' usage with few effects as a generic subscope is renamed to '<>'. The latter could be given a real semantics later on. Furthermore, the parser has been simplified with a new round of changes and default time durations in scripts debugged. The design now looks a bit more like 2020-06 "mgensys", in part. Next up, preparing to expand language features on a cleaner ground. Changes the fix for -r 1 hangs. Now data is generated, and this extreme case also tested within the interpreter code.
    951c8a93 · Set version to v0.3.8. ·
  • v0.3.7c   saugns v0.3.7c. Rearrange code. Fix hang with -r 1. Reduce design difference with 2020-06 "mgensys" a bit further; split "generator" pre-allocation code into prealloc (like a simpler runalloc), and merge voicegraph into prealloc. Also rename generator to interp. Fix hang with the useless, yet allowed, sample rate of 1 Hz due to 0 samples being generated per "run" call, and time thus never advancing for the interpreter. Simply end when 0 samples are filled in the player code.
    c3816f23 · Set version to v0.3.7c. ·
  • v0.3.7b   saugns v0.3.7b. Tweak cli and minor clean-up. Command-line behavior: Print -p info for each script just prior to generating audio for it if done, instead of printing for all before generating for all. Fix v0.3.6f slip-up in moving changes across branches, which made the usage notice say "mgensys" instead of "saugns". Flense generator, simplifying away most "event data" and using what's allocated at the previous stage. The code previously in renderer/ is now in player/.
    6629a3e5 · Set version to v0.3.7b. ·
  • v0.3.7   saugns v0.3.7. New channel mixing (panning) syntax. The old P "keyword" for panning has been replaced. Note that more changes remain to be done to remove the old behavior of grouping the parameter setting for all operators on one line. Place each on a new line in the meantime to give it its own value. Syntax changes: * Replace panning 'P' keyword with channel mixing parameter 'c' and 'S c' for default. The scale changes from 0.0-1.0 left-right to (-1.0) left, 0.0 center, 1.0 right. And the letters 'C', 'L', and 'R' become named constants for 0.0, (-1.0), and 1.0. Some additional refactoring is done, for some more lower-hanging fruit in ideas from the 2020-06 "mgensys" redesign version. The commit sequence is expanded a bit further down for further work toward the redesign goals, with notes on remaining bugs.
    615a802f · Set version to v0.3.7. ·
  • v0.3.6f   saugns v0.3.6f. Reduce diff for upcoming redesign. Reduce differences for various smaller modules with the 2020-06 "mgensys" redesign experiment now in the "old-dev_202006" branch. Relicense many small modules permissively (ISC license), while saugns as a whole is still LGPL'd. Change default sample rate to 96000 Hz, undoing the 2012-02-10 change to 44100 Hz. Change the -h option to list topics available with -h <topic>. For now, only other lists are available, the first built-in help consisting of a 'wave' type list and a 'ramp' list. Rename "loader/" to "reader/". Apart from the mentioned changes to options, should be functionally the same as v0.3.6e.
    cde34919 · Set version to v0.3.6f. ·
  • v0.3.6e-2   saugns v0.3.6e. (Re-tag.) Bugfixes, minor clean-up. This replaces the hasty v0.3.6e tag. Back to -std=c99, -pedantic removed, but the warning fixes included. (The -v version is also now increased.) Fix crash on opening several files when only some failed to open. Fix numerical expression parsing for several subtractions in a row. Simplify usage notice, update man page. (These changes are part of work included in an experimental redesign, in branches named beginning with mgs. Far from done, but will be the basis for new versions.)
  • v0.3.6e   saugns v0.3.6e. Use -std=c11. Fix -pedantic clang warnings. Removes new warnings when building with clang 8.0, which appeared in previous version (where -pedantic was added in Makefile). No functional change.
  • v0.3.6d   saugns v0.3.6d. Fix crash in generator. Clean-up changes. Fix crashes due to wrong-sized allocation in generator. This bug was added in v0.3.1, and not found for 5 months because things happened to work on my systems and I've not received any feedback from users. Also contains a smattering of clean-up changes.
  • v0.3.6c   saugns v0.3.6c. Refactoring. Split out voicegraph from scriptconv, add and use mpmemdup for arrtype uses of memdup. Functionally the same, but tidier for future redesign.
  • v0.3.6b   saugns v0.3.6b. Redesign. Fix v0.3.6 modulator list bug. Extend the v0.3.4-v0.3.6 redesigns further, using a common nodelist module for parser and parseconv output, and moving handling of specific modulator lists to scriptconv. Fix v0.3.6 bug introduced when removing ADJCS flag. Ensure that cleared modulator lists are produced and set when clearing modulator lists in script. Add 'devtests/pm-addremaddrem.sau' (which tests adding and clearing PM modulators).
  • v0.3.6   saugns v0.3.6. Redesign. Fix for undocumented feature. Make parser handling of operator sublists simpler and more generic, moving specifics to parseconv. Refactor scriptconv and program.h types. Make use of '[]' separately from list parameters function as a generic subscope with few effects. This feature is still undocumented. Mostly harmless. (Originally, as '<>', it simply allowed freer use of whitespace. This was broken by the time of the 2012 releases.)
    75e6e1a0 · Refactor scriptconv. ·
  • v0.3.5c   saugns v0.3.5c. Fix crash on updating ignored operator, timing. Fixes: * Make parseconv ignore updates for operator nodes which weren't processed before, because the list in which they were created was cleared in the same event. Fixes crash in versions v0.3.5 and v0.3.5b. (Add 'devtests/ref-unused_node.sau' for testing.) * Add missing default time handling for an operator's second amp. and freq. ramps. (Rebased down to v0.2.13.) * Fix a case where the first part of a composite event is given infinite time by default, messing up script timing (negative never-ending duration, event order). (Rebased down to v0.2.3.) (The crash also happened with v0.3.4, but not v0.3.3 and v0.3.4b. Versions earlier than v0.3.3 ran, but changed data for the wrong operator.)
  • v0.3.5b   saugns v0.3.5b. Fixes for 'S a' and "@label" syntax. Fixes: * 'S a' (Set amplitude multiplier): Apply multiplier to amplitude ramp target, not only the normal or initial value. (This was missed a long time ago.) Rebased down to v0.2.3. * Change which flags are checked to allow/disallow 'r' (rel. freq.) and 'i' (inf. time), fixing syntax for "@label" references. Rebased down to v0.3.1d. Also change op list code to include pointers instead of direct instances for modulator lists in parse data.
  • v0.3.5   saugns v0.3.5. Refactoring. Reorganize code. Makefile tweak. Various little code clean-ups. Reorganize source files. Separate flags used during parsing from flags assigned in resulting script data. No functional change. Handle whether or not to gzip man page upon install (always done before), according to whether the install location or "/usr/share/man" (takes priority if found) contains gzipped man pages.
  • v0.3.4b   saugns v0.3.4b. Parser refactoring, part 2. Simplify memory handling by using the mempool for all parse data node allocation. Freeing becomes trivial. Also include the symtab in the produced parse (since it depends on the mempool), which may suit future needs.
  • v0.3.4   saugns v0.3.4. Reorganize scripts. Parser refactoring. Move some scripts and snippets from devtests/. Add examples/sounds/, further reorganizing a bit. Parser refactoring in preparation for further redesign, without change in functionality.
  • v0.3.3   saugns v0.3.3. Wave type changes. Internal reworking. Wave type changes (rebased down to v0.2.14): * Use an anti-aliased cycle for the 'sqr' LUT, removing low-frequency noise, but still a bit rough; the new sound lacks full "bite" at low frequencies. * Do the same for the 'saw' LUT, with the same quality improvement (but a bit more "bite" preserved). The slope is now decreasing instead of increasing (can be changed with neg. amp. or freq.). * Remove 'shh' type (very similar to old 'saw'). Internal design change in preparation for future work, without functional change.
  • v0.3.2b   saugns v0.3.2b. WAV out fix. Add man page. Split README. Added bugfix (rebased down to v0.2.3): * WAV file output: Correct byte length in header, was channel-count times too large. (Avoid double multiplication.)
  • v0.3.2   saugns v0.3.2. Replace old '#', 'Q' syntax.