1. 27 May, 2019 15 commits
    • Joel K. Pettersson's avatar
      2012-04-01: [Release] Operator alloc. after parse. Fixes. · ce890f1b
      Joel K. Pettersson authored
      Assign operator IDs after parsing rather than during, adding
      operator allocation code analogous to the voice allocation code
      for "program" construction.
      Event construction is not yet fully functional for multiple
      operator nodes.
      Sound generator: Place voice update code after operator update
      code, since the buffer count is handled during voice updates
      and may be altered by operator updates.
      (Originally released at Gna! as sgensys-20120401.tgz, without
    • Joel K. Pettersson's avatar
      2012-03-08: Rework "program" output event allocation. · f3c4c98e
      Joel K. Pettersson authored
      Output event allocation reworked, maintaining a list of all
      events and eliminating the counting pass for operators which
      was used to determine the number of events.
    • Joel K. Pettersson's avatar
      2012-03-05: [Release] Further work on parser and "program". · aa6d601b
      Joel K. Pettersson authored
      Make SGSNodeList more elaborate and refactor parser and
      "program" using it. Further parser changes to take multiple
      operator binding into account. As-yet unused beginning of
      "program" code to more fully handle operator allocation.
      Sound generator timing fix.
      (Originally released at Gna! as sgensys-20120305.tgz, without
    • Joel K. Pettersson's avatar
      2012-02-26: Fixes, part 3. Source licensing info added. · 97963d74
      Joel K. Pettersson authored
      Parser fix for multiple operator binding, and minor refactoring.
      Copyright notices and LGPL-3.0+ info added to source files.
      (README.COPYRIGHT, added to this repository for earlier versions
      lacking this, removed with this commit.)
      tests/ script changes. (Taken from later working dir because tests/
      missing in tarball, but no scripts dated later than 2012-02-20.)
    • Joel K. Pettersson's avatar
    • Joel K. Pettersson's avatar
      2012-02-07: Fixes, part 2. · 1fe21637
      Joel K. Pettersson authored
      Parser fixes and minor refactoring.
      Sound generator fix for handling of voices and panning.
    • Joel K. Pettersson's avatar
      2012-02-01: Fixes, part 1. Move and fix test scripts. · ac2ddab9
      Joel K. Pettersson authored
      Parser fixes for new design and timing.
      Add and use 'ti' (infinite time) for nested operators by default.
      Such operators play whenever their carrier(s) do.
      Sound generator corrected, adjacency indexing
      was outdated (only changed elsewhere).
      Script files in main dir moved to "tests/".
      Update scripts with outdated syntax.
    • Joel K. Pettersson's avatar
      2012-01-12: Redesign. Readd '{}' op. bind. Syntax changes. · 75ebd50c
      Joel K. Pettersson authored
      Some parser refactoring and experimental changes.
      Re-enable operator binding with '{}',
      change nesting syntax to '<>'. Reorder code.
      Fix for voice allocation.
      Move string copying out of symbol table,
      make it simply store pointer.
      Syntax changes:
       - Use '<>' to list modulators rather than '{}', as in
         'a!<...>', 'f!<...>' or 'r!<...>', or 'p!<...>'.
       - Remove '-' syntax for PM modulators. Replaced with 'p!<...>'.
       - Add '{...}' for binding several operators as one object to
         manipulate. Used to e.g. link several carriers to one or more
      Update various test scripts.
    • Joel K. Pettersson's avatar
      2011-12-13: Voice alloc. after parse. Syntax change. · 42c46f26
      Joel K. Pettersson authored
      Allocate voices after parsing, instead of trying to
      track and assign voice IDs during. Merge VoiceData into
      Script syntax: Rename 'b' (panning, applies to the voice) to 'P'.
    • Joel K. Pettersson's avatar
      2011-12-04: Undo parser redesign, postpone '{}' op. bind. · 3390b97b
      Joel K. Pettersson authored
      Undo the 2011-09-26 redesign, preserving some of the new code
      and further updating the parser, while postponing support for
      the new '{}' operator binding syntax.
      Improve comments for sound generator, tiny code style clean-up.
    • Joel K. Pettersson's avatar
      2011-11-27: New '{}' operator binding syntax, part 2. · 6139de6d
      Joel K. Pettersson authored
      Further parser changes to support new '{}' operator
      binding syntax.
      Sound generator clean-up. Improve comments.
    • Joel K. Pettersson's avatar
      2011-10-11: New '{}' operator binding syntax, part 1. · 241c3e95
      Joel K. Pettersson authored
      Initial work to support new '{}' syntax for binding operators
      together as a single object. This is to allow carrier-modulator
      linkages to be M:N, and not just 1:N (as in adding a list of
      modulators to a single carrier).
    • Joel K. Pettersson's avatar
      2011-09-26: Parser redesign. Complete sound buffer counting. · dc53953c
      Joel K. Pettersson authored
      Redesign parser, changing NodeData and its uses and replacing
      *_event(), *_voice(), *_operator() functions with restructured
      code. Big refactoring, breaking out various smaller nd_*()
      functions. Add and use NodeList type.
      Flesh out sound buffer counting in sound generator.
    • Joel K. Pettersson's avatar
      2011-08-01: Fixes for parsing and timing. · 790f0c43
      Joel K. Pettersson authored
      Parser fixes for compound steps
      and numerical expression parsing.
      Fixes for silence ('s') and timing.
      Fix syntax in an outdated test script.
    • Joel K. Pettersson's avatar
      2011-07-28: Voice & operator graph structure. Syntax change. · d7bcbc8a
      Joel K. Pettersson authored
      Redesign: The sound "program" uses an operator graph for each
      voice, each operator specifying its modulators using an adjacency
      list. Event data is also split into a main struct keeping track
      of timing, linked to accompanying voice and/or operator updates.
      Script syntax: Rename '/' (delay time) to '\'. The old meaning
      of '\' is scrapped, 's' (silence) providing what it did when
      combined with '\'.
  2. 11 May, 2019 13 commits
    • Joel K. Pettersson's avatar
      2011-06-04: Redesign. Script syntax changes. · 6e0a989f
      Joel K. Pettersson authored
      Separate parser and "program" event types. Parser now uses its
      own "EventNode" suitable for parsing internally, replaced in the
      output with a cleaned-up event struct better adapted for the
      sound generator.
      Script syntax changes:
       - 'W' (wave) became 'O' (operator, i.e. oscillator with
         attached configuration options).
       - 'n' (frequency as note) removed, notes may now be set to 'f'.
       - 'b' (balance or panning) added.
       - 'srs' (square root of sine) wave type added.
       - 'p!{...}' (PM modulator list) replaced by '-' (PM linking)
         optionally combined with '<>' (subscope), as in '<-...>'.
    • Joel K. Pettersson's avatar
      2011-05-08: Add "VALueITeration" syntax, part 2. · ac6862b0
      Joel K. Pettersson authored
      Rename subvalue 's' (shape of change) to 'c' (change type).
      Change type values are:
       - 'lin' (linear)
       - 'exp' (exponential)
       - 'log' (logarithmic)
      'exp' and 'log' are not truly exponential or logarithmic,
      respectively, but instead use polynomial approximations
      developed "by ear" to sound "smooth" and natural. (The real
      curves do not have a finite length smooth ending.)
      Refactor sound generator handling of parameter value buffers.
    • Joel K. Pettersson's avatar
      2011-05-06: Add "VALueITeration" syntax, part 1. More. · 0172f15e
      Joel K. Pettersson authored
      Parameters can now be set to "[...]", with sub-parameters
      deciding how the value changes over a specific time. This
      provides minimal envelope support and is done ahead of
      adding full-fledged ADSR support in the language.
       - 's' (shape of change, only "l" (linear) currently done)
       - 't' (time to reach target value)
       - 'v' (target value)
      Supported for amplitude, frequency, and panning.
      Also change frequency ('f') to accept note values, both directly
      and for 'v' inside '[]'. (This change broke note values for 'n',
      which is now obsolete.)
    • Joel K. Pettersson's avatar
      2011-05-02: Support frequency as note. · 4d1b3d68
      Joel K. Pettersson authored
      Note frequencies in C-major scale are specified using 'n';
      the value is the upper-case letter of the note, optionally
      followed by 's' (sharp) or 'f' (flat), and then optionally
      the octave number.
      Currently, just tuning is used, with A4=444hz by default.
      'S' parameter 'n' sets A4 tuning frequency.
      "Subnotes" between two notes, in an "inner octave", supported
      with a prefix for the value (lower case letter of note).
      (Subnotes, unlike notes, cannot currently be sharp nor flat.)
    • Joel K. Pettersson's avatar
      2011-04-26: Add compound step syntax. · bceaf2e6
      Joel K. Pettersson authored
      Use ';' as separator between timed steps for an operation.
      Steps in the input handled by the parser no longer always
      correspond to the linear order of the resulting event list.
      The event list is "flattened" after parsing.
      Rename scripts from .mgs to .sgs.
    • Joel K. Pettersson's avatar
      2011-04-12: Fixes and parser changes. Add wave change syntax. · 6f2b2e1e
      Joel K. Pettersson authored
      Bugfixes and minor refactoring.
      Debug printouts added for remaining debugging.
      Script syntax: Added 'w' for changing wave type of operator.
    • Joel K. Pettersson's avatar
      2011-04-10: "Event overhaul" redesign. Syntax changes. · f4487e44
      Joel K. Pettersson authored
      Redesign parser-generated "program" for sound generator.
      Use a sequence of "events", which are updates for the
      sound generator to process, constructing and maintaining
      its voices and operators accordingly.
      The thinking was first to separate the old "program nodes"
      into separate timed lists of "operator nodes" and "event nodes",
      the former specifying what is to be used and the latter how.
      But only "event nodes" were necessary as input.
      Script syntax changes:
       - Added 's', silent time for operator (delay before sound).
       - Replaced center/left/right ('C', 'L', 'R') with 'b' for panning.
      Removed click reduction code in sound generator rather
      than fixing it for the new per-block processing. It only
      worked for basic wave forms (by fitting the duration of
      a wave to the cycle length), not for modulated waves.
    • Joel K. Pettersson's avatar
      2011-04-04: Rename project "sgensys" from "mgensys". Redesign. · 0c9d60b6
      Joel K. Pettersson authored
      Parser refactoring and changes.
      Use per-block instead of per-sample processing for
      sound generation.
    • Joel K. Pettersson's avatar
      2011-03-17: Parser & generator redesign. · ea58f528
      Joel K. Pettersson authored
      Parser-generated program nodes used by sound generator
      semi-divided into operator nodes and set data nodes.
    • Joel K. Pettersson's avatar
      2011-03-08: Linked lists for modulators. Syntax changes. · e1c2aeed
      Joel K. Pettersson authored
      Make parser and sound generator use linked lists for modulators.
      Change PM modulator list syntax to "p!{}" for consistency with
      AM and FM, and add 'p' phase setting option.
      Add oscillator float-to-int phase value conversion macro.
      Change "envelope output" version of RUN macro
      to have very slightly higher output value.
    • Joel K. Pettersson's avatar
      2011-03-04: Support AM and real FM. Syntax changes. · e8dbdd9e
      Joel K. Pettersson authored
      Support AM and FM in addition to PM. Also
      change syntax for modulator lists; now enclosed
      within "{}" instead of "<>". Use "a!{}" for AM,
      "f!{}" or "r!{}" for FM, and "m{}" for PM.
      Turn 'r' into an actual ratio parameter,
      adding the necessary divisions.
      Change oscillator type to store no more than phase,
      making frequency and amplitude parameters.
      Add "envelope output" version of RUN macro.
    • Joel K. Pettersson's avatar
      2011-02-26: Oscillator and sound generator changes. · 9c11e4ae
      Joel K. Pettersson authored
      Separate sample-rate dependent coefficent and frequency,
      removing need to update coefficent when frequency is changed.
      Calculate phase increment each sample.
      Add working amplitude scaling.
      Clean up sound generator design a bit.
    • Joel K. Pettersson's avatar
      2011-02-21: Parse arithmetic. Frequency as ratio. · de6c15b3
      Joel K. Pettersson authored
      Parse arithmetic within "()".
      Support setting frequency as carrier/modulator ratio ('r')
      for modulators. The values are actually multiplied,
      the ratio value meant to be something like (1/3).
      PM corrected in oscillator code.
  3. 10 May, 2019 4 commits
    • Joel K. Pettersson's avatar
      2011-02-16: Support PM. Syntax changes. · 250f202f
      Joel K. Pettersson authored
      Parser changed to handle scope levels with recursion, for
      specifying modulators. PM modulator list syntax is 'm<...>',
      modulator waves within the '<>'.
      The "wait until done" operation also renamed from 'E' to '|'.
      Placeholders for envelope support added.
    • Joel K. Pettersson's avatar
      2011-02-13: Add label definition/referencing. · 30a79007
      Joel K. Pettersson authored
      Defining with "'", referencing with ":".
      Add symbol table, using a simple linked list until something
      better is needed.
      Sound generator changes also include click reduction by
      increasing time to match the end of a wave cycle.
    • Joel K. Pettersson's avatar
      2011-01-21: Sound generation redone. Parser expanded. · 96c5b6f8
      Joel K. Pettersson authored
      Sound generator rewritten. Use timing calculations instead of
      wait nodes. New oscillator.
      Script syntax changes:
       - 'S' (set default value) instead of 'D'.
       - 'W' (wave) instead of 'S' (simple sound).
       - '/' (wait time) instead of 'W' followed by 't'.
       - '\' (wait time also affecting current operation) added.
       - '<...>' for subscope added.
    • Joel K. Pettersson's avatar
      2011-01-21: First snapshot. · 2a0bd354
      Joel K. Pettersson authored
      The files COPYING and README.COPYRIGHT have been added to make
      all old snapshots available under LGPL-3.0+ and replace missing
      copyright info in the source files.