Skip to content
Tags give the ability to mark specific points in history as being important
  • v0.3.8
    951c8a93 · Set version to 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.
  • v0.3.7c
    c3816f23 · Set version to 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.
  • v0.3.7b
    6629a3e5 · Set version to 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/.
  • v0.3.7
    615a802f · Set version to 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.
  • v0.3.6f
    cde34919 · Set version to 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.
  • 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
    75e6e1a0 · Refactor scriptconv. ·
    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.)
  • 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.
  • v0.3.1c
    saugns v0.3.1c. Some code tidying without functional change.