    20180402:
       General: move to 64bit / x64 (tested on Windows 10)
      Arranger: fix: rebuild device name (and alias) list when node is shown
      Arranger: fix: restore clip selection after editing clip node
      Arranger: change: when starting selection with cursor keys, select upper or lower track
                         clip depending on cursor key (up/down)
      Arranger: change inc/dec patnr shortcut to home/end
      Arranger: change goto start/end shortcut to lshift-home/lshift-end (like in Tracker node)
      Arranger: add: display pattern/clip names in timeline
      Arranger: add marker track
                 (editable markers/ranges)
                 (auto assign pattern numbers to markers for autodev remote control)
                 (assigned pattern patnr can be changed by selecting and editing its patnr)
                 (marker name can be changed selecting a clip and editing its name)
                 (also supports standard autodev note-to-prg mapping (c-3..))
                 (marker play can be beat-synced via "Queue 16th" setting in "Play" tab)
                 ('return' or double-clicking a marker queues it)
                 (support RPN_COMMON_SEEK_OFFSET when launching marker clips from other arranger)
      Arranger: add arranger stack for easy navigation and editing of cascaded arranger setups
      Arranger: add note to arranger offset (marker) feature
      Arranger: add: zoom in/out with lshift-]/[ (+/ü) (like in Tracker node)
      Arranger: add: show tools menu with 'a'
      Arranger: add: focus grid size widget with lshift-a
      Arranger: add: when editing "Queue 16th", show bar/beat equivalent
      Arranger: add: cycle through play modes with 'p'
       MIDIMon: add: colorize events
       Monitor: change: when clicking note (to play it), don't grab keyboard focus
                         (that prev/next frame can be select with cursor keys)
       Monitor: add: move frame left/right (lshift-left/right)
       Monitor: change "play frame" shortcut to 'w' (consistency with trigseq)
       Monitor: change "delete frame" shortcut to DELETE
       Monitor: change change "delete frame before current" shortcut to lctrl-DELETE
       Monitor: add "clear frame" shortcut (backspace)
       Monitor: add: open tools menu with 'a'
       Monitor: add: auto-merge and set fixed duration option (useful for editing chords)
       Monitor: add: save/restore merge millisec, fixed duration, fixed velocity settings per node
       Monitor: add: when appending new events during record->play->record,
                      add some time offset to prevent merge
                      (STConfig.node_monitor_record_continue_time_offset)
       Monitor: add: frames can now be triggered with notes (auto-dev)
                      (STConfig.node_monitor_trigger_base_note (c-3 / 36))
       Monitor: add: trigger velocity modes (keep, replace, multiply, add)
       Monitor: add: lock/overdub current frame mode
                      (don't advance while recording)
                      ('l' or 'd' key toggles it)
          Push: add: keyboard mode: dual+quad split modes
        Script: fix: unresolved "module member not found" causes program to terminate
        Script: fix: constant value error when script is recompiled
        Script: add: boppad to trigseq script preset
       TrigSeq: fix: remove note from framerec when record dev+ch matches
       TrigSeq: fix: pasting pattern plays sounds
       TrigSeq: fix: don't record note duration (arg2) when recording is not enabled
       TrigSeq: fix: instance created during replay was not always in sync
       TrigSeq: fix: autodev notes were only working when recording device was enabled
       TrigSeq: change: clear track trigs and repeats (and keep args+microtiming) (backspace)
       TrigSeq: add: timing track (added to per-track step microtimes)
       TrigSeq: add: timing track / groove presets (STConfig.groove_path)
       TrigSeq: add: clear track microtiming shortcut (lalt-backspace)
       TrigSeq: add: when drawing trigs with RMB, interpolate mouse position while LCTRL is pressed
                      (relative mouse y in step cell determines velocity)
       TrigSeq: add: pageup/pagedown: move cursor to next/prev track (groups of 4)
       TrigSeq: add: lshift-pageup/pagedown: inc/dec track len
       TrigSeq: add: lshift-home / lshift-end: goto first/last track
       TrigSeq: add: utility fxn to load arg2 identity (0..play_length-1)
       TrigSeq: add: paste track to all patterns utility function (lctrl-lshift-v)
       TrigSeq: add: undo/redo multiple patterns
                      (undo state is invalidated when pattern is changed)
       Tracker: fix crash after deleting node and replacing it with another
       Tracker: fix crash when toggling pattern manager / remark editor
       Tracker: fix crash when undo timeout expires after node has already been deleted
       Tracker: fix crash in getCursorXAtPixel() when no track is visible
       Tracker: fix: instance created during replay was not always in sync
       Tracker: fix: delegate pitchbend (delegate_perf_events) to current instrument
       Tracker: change default note-off velocity to 64
       Tracker: add: highlight steps in external sync / polystep mode
       Tracker: add: inject_mute/inject_seek RPNs
       Tracker: add: VST param type (for use with the new work-in-progress Eureka DAW and metahost plugin)
                      (more on this later!)
       Tracker: add trk_rec_usr1..16 RPNS (redirected to current node / current track)
                     (then mapping your MIDI controller(s) to these RPNs makes it possible to
                      use a common controller setup in all tracker instances)
                     (when node is not currently editable (aimed for recording),
                       the RPN behaviour is the same as the inject_inject_usr1..16 RPNs)
       Tracker: add toggle zoom / step_resolution hotkey ('f' / ''' ('Ä') keys)
                     (A/B zoom level is stored per node)
            UI: fix: array-out-of-bounds exception in TextView (e.g. ScriptNodeEditor)
            UI: fix: project page: bpm widget is not updated when bpm is changed via numpad
            UI: add: project i/o: auto-set last loaded / last saved project
                      (add "Auto-Update" checkbox right next to "L" and "S" button on config page)

    20171126:
     All Nodes: add: lctrl-g (jump to pattern) dialog is now available in all nodes (not only in tracker)
     All Nodes: add: when auto dev+ch is edited, indicate whether the setting is globally/locally unique
                 (bgcolor of channel combobox; tooltip lists conflict details)
     All Nodes: add map targets for "used" pattern selection (MMT_SELECT_USED_PATTERN_1..16)
      Arranger: fix: first tick of TrigSeq pattern was not played when the node was previously muted
      Arranger: fix: selecting tracks with cursor up/down now skips empty tracks
      Arranger: fix: immediately resize timeline area after window has been resized
      Arranger: fix: when multiple clips are deleted, don't add deleted clip to new selection (fix crash)
      Arranger: change: prefer intersecting clips when selecting clips with cursor up/down
      Arranger: change: don't auto-scroll left/right when selecting clips up/down
      Arranger: add: highlight track label (red) that haven't been assigned a unique auto dev+ch
                 (tooltip lists conflict details)
      Arranger: add: 'return' key or right mouse button click now edit first selected clip
      Arranger: add: lctrl-home to inc patnr of selected clips by 4
      Arranger: add: lctrl-lshift-home to inc patnr of selected clips by 1
      Arranger: add: lctrl-end to dec patnr of selected clips by 4
      Arranger: add: lctrl-lshift-end to dec patnr of selected clips by 1
     AudioTool: add -ow option
                 (set separate wav output prefix, "*samples" to place in relative "samples/" subdir)
     AudioTool: add UVI Falcon (.uvip) patch generator
                 (currently supports Sample, Stretch, Layer-per-Keygroup and Layer CC-Switch options)
     AudioTool: add wavetable mode (Serum-style 2048 frames/cycle wavetables)
                 (resamples input wav cycles to match required wavetable cycle length)
     AudioTool: add "wavetable" preset
     AudioTool: add "split layered" preset
     AudioTool: add "multiloop c,d#,f#,a" presets
     AudioTool: add "single loop-only" preset
          MIDI: add Allen&Heath XONE K1 profile
          MIDI: add Akai MPK49 ControlBank B+C profiles
    MorphScene: fix: source filter "range" and "split end": compare <= end instead of <end
    MorphScene: fix: "remap" 127..0 should invert (e.g. Roland foot switch)
       PipeMap: fix: crash after node as moved to other pipe and previous pipe was deleted
       PipeMap: add 'edit pipe/node comment" to context menus
       PipeMap: add polystep_8ch and polystep_8ch_kong pipe presets
         Proxy: fix crash in showDataStatic() (prophet08 editor)
          Push: fix: when kbd mode is disabled, never map push events to outgoing device (note on, ..)
        Replay: fix: duration of note-on events was truncated to 15bit (32767 ticks)
        Replay: change: increase replay thread priorities to realtime
        Script: add "Script" node type
        Script: add "chord detect" preset
        Script: add "gen mts tunings" presets
        Script: add: "ev/replace dev ch" preset
     StatusBar: change: increase BPM widget precision (e.g. 129.72 instead of 129.7)
       Tracker: fix: untight recording due to use of UI song position instead of replay song position
       Tracker: fix: patternmgr: after pattern selection during replay,
                      pattern nr reverts when page is exited
       Tracker: fix: envelopeview: zero values not drawn correctly (invisible)
       Tracker: fix: envelopeview: wrong -64..63 range editing center (display y offset)
       Tracker: fix: don't process tap note input when node is not being edited
                     (unless "bg" recording is enabled)
       Tracker: add: send parameter reset values when instrument is selected manually
       Tracker: add: show current line chord name in status bar
                      (currently recognizes 102 different chords, e.g. "Sus4" or "Maj7No3_I2")
       Tracker: add "collapse" utility function (prepare pattern for "tap" mode)
       Tracker: add: automatically redirect AT/PAT/PB/MW/BC/Expr/Sostenuto/Sustain events
                      to current instrument dev+ch (STConfig.b_node_tracker_delegate_perf_events)
       Tracker: add PAT_COLLAPSE_AND_TAP midimapper action
       Tracker: add PAT_TAP_TOGGLE mode midimapper action
       Tracker: add collapse+start tap menu item+kbd shortcut (lctrl-t)
       Tracker: add PAT_RECORD_CONTINUE midimapper action
       Tracker: add: set pattern length to cursor (lctrl-lshift-l)
       TrigSeq: fix: highlight cursor got stuck after last track trig was deleted
       TrigSeq: fix: 'w' in edit mode always set first step
       TrigSeq: fix: show RMB context menu only when button was clicked,
                      not after hold-release (e.g. floatparam edit)
       TrigSeq: fix: record device / playstep not working until replay's been started
                      at least once (after creating new node)
       TrigSeq: fix: play repeat even if track has no trigs (external trigger)
       TrigSeq: fix: only process record dev+channel events when editor is visible
       TrigSeq: fix: store mute+repeat states in node so that they work across pattern changes
       TrigSeq: fix: update vertical scrollbar when cursor is moved
       TrigSeq: add: tracksetupdialog: MIDI learn track outputs (note + dev + ch)
       TrigSeq: add: configurable track name bgcolors
       TrigSeq: add: per-track roll/repeat keys (C-5..D#6)
       TrigSeq: add: per-track mute keys (C-7..D#8)
       TrigSeq: add: handle trig/repeat/mute/globalrepeat/globalmute notes on auto channels
       TrigSeq: add: indicate external trig/repeat/mute in UI (flash track nr bg)
       TrigSeq: add: save/restore cursor track and scroll offset
            UI: change: enable FPS limiter by default (fixes high CPU/GPU load on certain systems)

    20170914:
     Prophet12: add: mixed state "PL" mode: only send patch NRPN when patch is current proxy patch
       Tracker: fix: note on recording (broken after recent metronome fix)

    20170910:
     Prophet12: fix: solo layer a/b not working in diff mode
     Prophet12: fix: reload does send resend patch

    20170909:
          Auto: add: pattern copy/paste/new/delete keyboard shortcuts
        Buffer: add: pattern copy/paste/new/delete keyboard shortcuts
          MIDI: fix: race condition in lshift-NUMPAD enter shortcut handling (start/stop w/o sending MMC)
      CtlMorph: change: send pattern ctl states after clipboard paste
      CtlMorph: change: cyclic morph generator/player now cycles through "used" patterns
      CtlMorph: add: lshift-r to send group reset ctl states (same as "Reset" button)
     ModMatrix: add: OP_RANGE_IN (send arg4 when arg2 is in range), rename OP_RANGE to OP_RANGE_OUT
     All Nodes: add: lctrl-lshift-HOME to go to next used (non-empty) pattern
     All Nodes: add: lctrl-lshift-END to go to previous used (non-empty) pattern
    PatternMgr: add: pattern manager (lctrl-x d) (for all nodes that support patterns)
     Prophet12: fix: subosc levels were not sent correctly during proxy morph/patch change
     Prophet12: add: option to ignore proxy events (for sound design during replay) ("PL" checkbox)
     Prophet12: add: option to ignore option ignore proxy reset events ("PR" checkbox)
     Prophet12: add: "autosend" mixed state: only send patch when it is selected, not when editor is shown
     Prophet12: add: show patch name in empty tab area, mousewheel over label to select prev/next patch
     Prophet12: add: multi-patch-edit mode (lctrl-q) (e.g. for editing common morph group settings)
     Prophet12: add: morph preview mode
     Prophet12: add: "Diff" patch change mode (faster patch changes and less sound hickups)
     Prophet12: add: lctrl-e to load patch from synth edit buffer (same as "Receive Edit" button)
     Prophet12: add: new oscillator randomization dialog ('r')
       StepSeq: add: pattern copy/paste/new/delete keyboard shortcuts
       Tracker: fix: single-event undo while pattern is in record mode and autoscroll is disabled
       Tracker: fix: send MIDI keyjazz note off as actual note off instead of note on with velocity 0
       Tracker: fix: overlay redraw issues when switching between e.g. the sysex editor and the tracker page
       Tracker: fix: metronome click after "undo and restart recording" (return) was occasionally missing a beat

    20170822:
    AnalogRytm: add: "AR: Kit Send BD1/SD2/RS3/.." RPNs (send single sound)
          MIDI: fix: SysEx input message handling in synth editors and nodes (broken in last release)

    20170820:
    AnalogRytm: fix: handle partial SysEx replies
    AnalogRytm: fix: don't process note on/off events when node is muted
    AnalogRytm: fix: only delete mapped input events
                      (i.e. pass unmapped events on to next node)
    AnalogRytm: fix: learn trigs from autoch
                      (in prev releases, "Output Ch" had to be set to "TRK CH")
    AnalogRytm: add: hold-click "Recv" to reset kit/pattern receive state
    AnalogRytm: add: show RAW version
    AnalogRytm: add: performance / scene / track lock mask (see "IO" tab)
                      (e.g. for mixing sounds from different kits)
    AnalogRytm: add: select+send kit via RPN
    AnalogRytm: add: mix kit+send via RPN (lock mask)
    AnalogRytm: add: select+send pattern via RPN
    AnalogRytm: add: re-enumerate UIDs tool functions (kit/pattern/..)
    AnalogRytm: add: update track 1..12 sample nr tool function
    AnalogRytm: add: hold-click kit recv to download only bd1,sd2,..,fx,perf,scene (opens menu)
    AnalogRytm: add: support dual column names (separated via "~" character)
    AnalogRytm: add: snapshot selection RPN
      Arranger: fix: creating new nodes sometimes caused clips to move to wrong tracks
      Arranger: fix: crash after pressing delete after last track clip has been deleted
      Arranger: change: move "silence" and "snapshot" functions to "Tools" menu
      Arranger: add: timeline clipstate (mute/solo+patternnr) recording
      Arranger: add: track recording lock buttons and kbd shortcuts
                      (h=toggle, lctrl-h=clear, lshift-h=invert)
      Arranger: add: utility function to copy node clipstate from arranger
      Arranger: add: utility function to delete all muted clips in selection
      Arranger: add: clip track area to minimum height
      Arranger: add: improve cursor key movement (e.g. auto-select clip near edit offset)
      Arranger: add: lshift-LMB click in track area to extend clip selection
      Arranger: add: after deleting clip, select next (or previous) one
      Arranger: add: 'd' to center display to replay offset
      Arranger: add: lshift-d to toggle center display lock
      Arranger: add: lctrl-SPACE to stop replay, don't rewind to start, and
                      select clip near replay offset
     AudioTool: add: SXT ClipLoop feature
                      (input=wav with 2 loop repeats, output=wav with 1 seamless loop)
          Docs: add: autodevice MIDI implementation table
          Docs: add: Arranger keyboard shortcuts table
        KeyMap: fix: pattern clone
        KeyMap: add: clone/clone sub/alloc sub utility functions and kbd shortcuts
        KeyMap: add: option to send fixed RPN(s) (e.g. start/stop/toggle mute/..)
        KeyMap: add: holding LALT while changing output device or channel now updates all entries
        KeyMap: add: holding LALT while changing send mode now updates all entries
        KeyMap: add: holding LALT while changing match mode now updates all entries
        KeyMap: add: holding LALT while changing note duration now updates all entries
        KeyMap: add: holding LALT while changing velocity curve now updates all entries
        KeyMap: add: alternative program change mode (mixed state)
                      (send timeline recordable "UI Node PrgChg")
        KeyMap: add: auto-advance to next entry in "update match note" recording mode
          MIDI: fix: always echo-transform input events in node editors
                      that expect output device events
          MIDI: fix: delete transformed SysEx messages only when device input echo is enabled
          MIDI: fix: note off velocity was broken in last release
          MIDI: add: "Note Buttons" synth profile
          MIDI: add: timeline recordable node/pipe mute/solo (e.g. "Com: UI Node Mute")
          MIDI: add: timeline recordable program change RPN ("Com: UI Node PrgChg")
          MIDI: add: hold-click (or lshift-kp enter) to stop without sending MMC stop
      MIDIPipe: fix: free marker when freeing frame, copy marker when copying frame
       MIDIMon: add: show SysEx message size
       MIDIMon: add: output monitor (MIDI buffer bytes) (lctrl-NUMPAD +)
       Monitor: fix: don't clear events when play pattern has changed or node is shown
       Monitor: add: punch in/out markers ('p')
       Monitor: add: "trim to punch in/out" tool function ('k')
       Monitor: add: "fit BPM to sequence" tool function ('b')
       Monitor: add: merge-markers tool function
       Monitor: add: default merge thresholds are now configurable
       Monitor: add: 17 new MMC targets
       Monitor: add: option to view transformed events
       Monitor: add: support "Com: Run" RPN
       Monitor: add: lshift-RCTRL to cycle through modes
      MonoPoly: change: don't reset active note state when node is reset
    MorphScene: fix: conversion from polypressure to chpressure resulted in static value
    MorphScene: add: update all matching entries when LALT is held down while
                      changing MIDI device or channel
    MorphScene: fix: mousewheel-cycle through _all_ devs, don't stop at first unavailable dev
    MorphScene: add: copy/paste scene with lctrl-c/v
    MorphScene: add: clear scene with lshift-BACKSPACE
    MorphScene: add: lctrl-up/down to move selected entry up/down
       PipeMap: fix: crash after moving last pipe
       PipeMap: add: lshift-up/down to move pipe
       Tracker: fix: auto-deselect block on cursor move after select all,
                      or when pattern is changed
       Tracker: fix: first beat note was not recorded when replay was started from last beat
       Tracker: fix: some undo related issues ("transaction still in progress")
       Tracker: fix: can now undo multiple track layouts (e.g. after monitor import)
       Tracker: fix: block transpose now leaves "all track notes off" (===) and
                      "all channel notes off" (###) events intact
       Tracker: fix: param events were not sent when param-specific device was set
                       and instrument device was invalid
       Tracker: fix: "cursor sometimes temporarily stuck at last row after switching to node" issue
       Tracker: add: Monitor pattern clipboard importer (auto-creates tracks/instruments/params)
       Tracker: add: pattern length can now (optionally) be set in beats/bars (lctrl-l)
       Tracker: add: support new "Com: Offset Queued" and "Com: Length Queued" RPNs
       TrigSeq: add: support "Com: Run" RPN

    20170618
     AudioTool: add "SXT" wav slicer and autolooper (input=wav, output=wavs + Reason NNXT patch)
     AudioTool: add "SDS" sample uploader and AnalogRytm samplechain/varichain/kit generator+uploader
          Midi: fix bug that prevented polyphonic pressure events from being recorded from external MIDI input
       MidiMon: fix bug that could cause discarded events to crash the app
       MidiMon: add option to show events after morph-scene transformation
       MidiMon: don't clear events when play pattern has changed
    MorphScene: fix: conversion from poly to channel pressure resulted in static value
          Push: add "kbd" mode
                 (play notes with push pads, configurable mode/key/octave/row_add/shiftx settings)
          Push: add PUSH_MODE and PUSH_TOGGLE_KBD global midimapcontext targets

    20170607
       PipeMap: make node / pipe visible (via scroll offset) after they've been created
     Prophet12: add multi-edit feature
                 (hold down LALT to multi-edit osc/env/lfo/delay 1..4 params)
     Prophet12: patchmorpher: extended param range flags are now ORd (instead of interpolated)
       Tracker: "up" key now works as expected in "add column dialog" when "Filter" textfield is focused
       Tracker: polystep RPNs are now parsed in both "record" and "play" frames
                 (e.g. when they are generated by a modmatrix node that is controlled by external MIDI input)
       Tracker: add "Trk: Slide Base Note Off" RPN
       Tracker: pattern did not reset properly in ARP mode when CTL_SEEK was used simultaneously

    20170605
     ModMatrix: script editor dialog is now resizable
     Prophet12: fix vertical size related layout issue
       Tracker: fix raster recording mode (was completely broken in previous releases)
       Tracker: fix MIDI note recording issue (after two pattern loops)
       Tracker: lctrl-lshift-a to quantize block (no block = all steps)
       Tracker: lctrl-a now selects none if there already is a selection
       Tracker: rename "clear block" to "free envelope(s)" (lshift-f3)
       Tracker: '\' ('<' on german kbds) now clears block when there is a selection
       TrigSeq: implement "MultiTrack Polystep" output mode
       TrigSeq: implement "Mute Temp" output mode
       TrigSeq: implement "Pattern Change + Offset" output mode
       TrigSeq: output mode can now be overridden per track
       TrigSeq: output device+channel can now be overridden per track
       TrigSeq: add per-track microtime shift
       TrigSeq: lshift-x/c/v to cut/copy/paste track to/from track clipboard
       TrigSeq: lshift-w to force step play (current track only) (even when muted)
            UI: fix combobox item tooltip positions

    20170528
      Arranger: start current loop when reaching the end of the previous loop (after loop has been edited)
      Arranger: implement snap-to-grid (can now be turned off)
      Arranger: 'l' now aligns selected clips to grid
      CtlMorph: update "internal" synth profile
                 (the previous release accidentally contained an old version w/o the "Morph Pat" RPN entries)
      CtlMorph: morph ranges are now freely configurable (offset / range / position RPNs + UI widgets)
      CtlMorph: add cyclic morph generator dialog (offset / range) (replaces hardcoded 1a..1d, 1a..2d, .. ranges)
      CtlMorph: fix controller table layout issue
          Docs: add Proxy node documentation
          Docs: add TrigSeq keyboard shortcuts
          Docs: add several missing shortcuts
      MIDIPipe: fix MIDI cache clear bug (128 instead of 16384 (N)RPN states were cleared)
     Prophet12: improved patch morpher
                 (fixed some bugs regarding modmatrix and character section interpolation)
     Prophet12: "Transform" / RT morph configuration is now saved in the project file
     Prophet12: lctrl-c/v/n to copy/paste/init patch
     Prophet12: HOME/END to select next/previous patch
     Prophet12: LMB-click on "Patch Nr" label-button to select next bank,
                 hold-click to select first project-specific patch (P17 P1)
         Proxy: morph ranges are now freely configurable (offset / range / position RPNs + UI widgets)
       Tracker: add replace mode to envelope view (when checked, only existing events will be modified)

    20170523
     - first public release