NEWS for Seq66 0.99.23
Chris Ahlstrom
2015-07-10 to 2026-04-15

# Change Log

## [0.99.23] - 2026-04-15

This version has changes to better support Qt6, better display
and selection of program and controller change events, and
other minor fix-ups.

### Added

-   Event editor.
    -   A new button for either Control or Program changes pops
        up the menus for Control Changes set by the 'usr'
        file and the Program Changes set by the 'patches' file.
-   Added the qchannelpopup class for future refactoring /
    unification of channel menus, but it might never be ready.
    It is in the contrib sub-directory.
-   Instead, added the populate\_midich\_combo() function to the
    qt5\_helpers module, now used in the pattern and event editors.
-   Added the drums module to provide for listings of GM drum
    notes and to support non-GM drum notes display in the future.

### Changed

-   Main window and grid.
    -   At startup, instead of setting argv[0] as app-info. set
        QCoreApplication::applicationFilePath().
    -   Now uses the populate\_midich\_combo() function.
-   Event editor.
    -   Now uses the populate\_midich\_combo() function to show
        the control/program drop-down menus.
-   Palettes.
    -   Updated the incrypt-66.palette file; some colors don't
        apply in the old version.
-   Worked on some Qt6 deprecations.
-   Documentation updated. Additional pictures for Event editor.
-   Moved the LICENSE files to "licenses" sub-directory.

### Fixed

-   Various fixes to controller and patch naming and handling.
-   Fixed Qt6 deprecations.

## [0.99.22] - 2025-10-26

### Added

-   Issue #141, mostly implemented. See "Pattern editor" below.
-   midifile.
    -   Added storage for the first BPM value, needed by performer.
-   Main window and grid.
    -   With the mouse pressed, the current slot holding the cursor
        is drawn "flat".
    -   Giving a grid slot "focus" and then pressing the Menu key
        brings up the grid-slot popup menu.
-   Pattern editor.
    -   Showing note bars for scales and chords:
        -   Added a new brush called "chord" to the palette file.
            Click Edit / Preferences / Session / Store Palette.
        -   When a chord is active, the notes that are _not_
            in the chord are grayed out with diagonal hash lines.
        -   Added buttons to toggle showing the scale/chord bars
            and the filtering of off-scale/off-chord notes when
            painting notes.
        -   Normally the base note of the chosen musical key is
            shown in the keys pane. Undefine the
            SEQ66\_SHOW\_SELECTED\_KEY\_OCTAVE macro to keep
            showing C.
    -   Painting notes in scale/chord:
        -   Added a button to toggle the filtering of notes
            based on scale/chord.
        -   The selected key, scale, and chord determine the
            actual chord represented on the pattern grid.
    -   Added an option to the "Tools" (hammer) menu to select
        notes in a range of pitches. Either note numbers or note
        names can be used. See issue #141 and the user manual.
-   Documentation.

### Changed

-   C++. Added -Wno-unnecessary-virtual-specifier to Clang builds
    to avoid a dumb warning about final classes and virtual
    functions.
-   Pattern editor.
    -   Changed closest-snap to down-snap to make note
        insertion more intuitive.
    -   Removed the redundant display of time signatures in the
        data pane.
    -   We now store the selected chord for a pattern, if any, as a
        new "c\_musicchord" SeqSpec. It is track-specific only,

### Fixed

-   Fixed a segfault at startup on some builds on Arch Linux.
    It seems to have been an issue of order of initialization of
    a static string via a static function.
-   performer.
    -   The file PPQN was set when reading the file, so later the
        set\_ppqn() function would not inform the master bus of
        a PPQN change (in ALSA).
    -   Fixed: the slow playback of high-PPQN files.
-   JACK.
    -   Fixed detect\_jack() and added a missing call to jack\_free().
-   midifile.
    -   Added storage for the first BPM value, needed by performer.
    -   Fixed: Tempo event in track 0 does not override c\_bpmtag
        SeqSpec.
-   Main window and grid.
    -   Fixed: an issue where loading a file with a different PPQN
        raised the modify flag.
    -   Fixed: When dragging a pattern, modify was set before the
        drag was completed. Also could not move another pattern into
        the empty slot.
-   Pattern editor.
    -   Fixed the snap-interval setting for drawing notes.
    -   Fixed a bug where the background sequence was not loaded
        into the piano roll.

## [0.99.21] - 2025-07-28

    This release contains fixes for issues #137, #138, #139, and #140.
    It also contains a number of smaller changes discovered while
    fixing these issues. See below.

### Added

-   Main window and grid.
-   Pattern editor.
    -   Pattern-fix dialog.
        -   Added parameters for randomizing note pitches according
            to the current musical scale for the pattern.
        -   A pitch-randomization function was added to the eventlist.
            The notes adhere to the currently selected musical scale.
        -   Added space above and below the data range and added
            top/bottom lines and value labels. See issue #140.
        -   Adding an Insert macros function to Tools.
    -   LFO. Added a "DC Only" option.
-   Song editor.
-   Event editor.
-   Preferences dialog.
    -   Detection of using ALSA's "Midi Through" ports for both
        control added.
    -   Detection of this at startup has been added. An error message
        is posted and MIDI Control and Display disabled, for safety.
-   Import/Export.
-   MIDI defaults. Added to midibytes.h:
    -   c\_midi\_clocks\_per\_metronome = 24
    -   c\_midi\_32nds\_per\_quarter = 8
-   Documentation.

### Changed

-   A C++17 compiler is now required. Time to move on!
-   Changed eventlist::sort() to use std::stable\_sort(), and
    event::get\_rank() to make CCs and Program Changes to have the
    same priority, as part of fixes for issue #138.
-   Main window and grid.
-   Pattern editor.
    -   Optimized gradient drawing using QLinearGradient members in
        qseqroll instead of auto objects.
    -   Made the drawing of pitchbend data show +- pitchbend
        better, i.e. above and below the midline pitchbend, 0.
    -   Controller events are now recorded when playback is
        stopped. Time is not incremented. (It can be changed in
        the Event editor, if needed.)
    -   Upgraded the LFO editor as per issue #139.
    -   Added an "Insert macro at L" function in the Tools popup
        menu.
    -   Upgraded the MIDI control macro feature to allow multiple
        events in each macro, separated by " | ".
-   Song editor.
    -   Optimized gradient drawing using QLinearGradient members in
        qperfroll and qperfnames instead of auto objects.
-   Event editor.
-   Preferences dialog.
-   Contrib files.
-   Coalescing common code. Also removed the midistring type to use
    midibytes (a vector) instead.
-   Changed the scales\_policy() function slightly.

### Fixed

-   SMF 0 Import. Meta events are now stored in pattern 0.
    See it by loading contrib/midi/CountryStrum.mid.
-   Main window and grid.
    -   The BBT/HMS button tooltip was moved from the qsmainwnd
        widget to the button itself. Doh!
    -   The playlist code was auto-arming all patterns even when
        the playlist was not active.
    -   Changing the main time signature now changes the time
        signature in all patterns (except for those with a pattern
        editor open).
-   Pattern editor.
    -   The drawing of scales was done incorrectly. Fixed both the
        seqroll grid drawing and the scales\_policy() function.
    -   Fixed seqroll 'r' command (velocity randomization) to set
        the modify flag only if (selected) events are actually
        randomized.
    -   Fixed the drawing of "ghost notes" when moving or pasting
        notes.
    -   PPQN updates.
        -   Fixed the adding of painted notes (mostly) at PPQN other
            than the long-standing base default, 192.
        -   Changed the lowest PPQN from 32 to 24, for those who
            experiment. Also added PPQN = 48.
        -   Fixed File / New to reset PPQN to the default (192).
            It also resets the tempo to the value in the 'usr'
            file.
        -   Fixed the handling of the MIDI file PPQN to set initial
            zoom correctly for all supported PPQNs, and when "0"
            is clicked, in the pattern and song editors.
    -   Fixes made to pitchbend calculations and display.
    -   Updated the time-signature handling as per issue #137.
    -   LFO.
        -   When using LFO, saving, then exiting via the main window
            a prompt about a needless save was removed.
        -   Fixing the LFO for operation on pitchbend.
    -   Fixed qeditbase::snap\_x(); removed the PPQN ratio factor.
    -   Modified adding painted notes to the closest tick snap,
        also fixes adding notes while zoomed.
-   Song editor.
-   Event editor.
-   Preferences dialog.
    -   Fixed the enabling/disabling of entries in the control and
        display combo-boxes when changing active status of control
        and display.
    -   A warning is provided when using a MIDI Through port for
        both control and display, which can lead to FIFO overruns
        and weird stuff like segfaults.
-   Configuration files.
-   Classes.
    -   midifile.
        -   The earliest time-signature event, if present,
            overrides the c\_timesig SeqSpec.
        -   SeqSpecs with no data (length == 4) were read improperly.
    -   performer. Changed default 32nds-per-quarter-note from 0 to 8.
    -   sequence. Used the new MIDI default values and fixed an
        index error in add\_timesig\_event(). 
-   Module midifile.
    -   Cleaned up the handling of time signature events and the
        c\_timesig SeqSpec, now set to 4/4 in files saved before
        this fix.

## [0.99.20] - 2025-06-12

### Added

-   Main window and grid.
    -   Clicking on the Seq66 logo in the main window now closes all
        open live grids, pattern editors, and song editor windows.
        The tabbed version are not affected.
    -   Added features to the grid slot popup menu:
        -   Flatten triggers. This uses the pattern triggers to
            regenerate the notes, replacing multiple triggers with one
            long one (may need some work yet). Similar to Song Export,
            but for one pattern, and no export is done.
        -   Export pattern. Saves a single track to a new file, at
            pattern number 0. (May need some work yet).
    -   Control/pitch events now show up in pattern-slot progress box.
        Can be disabled via 'usr' [user-ui-tweaks] progress-box-show-cc
        = false.
    -   A timed error prompt (instead of OK/Remap and restart) when
        running via NSM; see qsmainwnd and qt5nsmanager.
-   Pattern editor.
    -   Added some horizontal dotted lines to the data pane to mark
        the 32, 64, and 96 level (of items such as velocity).
-   Song editor.
    -   Added a dark vertical border at the end of a song.
-   Event editor.
    -   Added display of the pitch-bend in semitones in the event
        editor. It currently assumes a range of +-2 semitones, a
        MIDI default.
    -   A column in the event editor shows the bus number that the
        event came in on. Not saved with the event, however.
-   Preferences dialog.
    -   An ALSA/JACK label to JACK preferences tab, same as in mainwnd.
    -   The button to "Clear" the port-maps has been removed. The
        port maps are always present, but can still be deactivated.
-   Import/Export
    -   Added a 'usr' option to enable/disable automatic conversion of
        an SMF 0 MIDI file to SMF 1.
    -   The export of files to SMF 0. See the "MIDI Import/Export"
        section of the user manual for provisos.
-   Documentation.
    -   Changes, fixes, and additional features in the user manual.

### Changed

-   Main window and grid.
    -   A pattern with a color shows that color even if empty.
    -   Made the button heights uniform in all Qt styles (so far).
-   Pattern editor.
    -   Nested editing and copy/paste menus into Edit and Track
        submenus.
    -   Record indicator supports a gradient brush.
-   Song editor.
    -   Thick line between sets in the song editor.
    -   Thick line at the end of a song.
-   Event editor. No changes; see "Added".
-   Preferences dialog.
    -   Enhanced the recent-file handling and auto-rc-save.
-   Many other minor tweaks to comments and appearance.
-   Contrib files.
    -   contrib/vim-syntax/cpp.vim with added symbols like CSTR.
    -   contrib/vim.rc, changed F8 for fixing Windows quote characters.
-   Coalescing common code.
    -   qsmainwnd.
    -   Sequence recounting after deletion or moving of patterns.
    -   More, did not keep track.

### Fixed

-   Main window and grid.
    -   The movement of patterns in the grid slot.
    -   Fixed setting the modify flag (asterisk) in recording notes.
    -   Fixed global transpose and it now sets "modify".
    -   Fixes to counting sequences.
    -   Cleaned up recent-files vice playlist support.
    -   Pasting a pattern now sets the pattern number to the slot
        receiving the pattern.
    -   Many UI/keystroke fixes, including autmoation control
        functions such as automation\_play\_ss.
    -   Import/Export
        -   The export of files to SMF 0. See the "MIDI Import/Export"
            section of the user manual for provisos.
-   Pattern editor.
    -   Weird issue with setting measures in the pattern-editor-in-tab.
    -   The plotting of pitchbend data has been made correct.
    -   The broken painting of notes with the mouse.
    -   Enhanced sequence::partial\_assign(), adding missing members.
    -   Some style sheets have been tweaked to fix time/piano-roll
        alignment issues.
-   Song editor.
    -   Fixed resetting trigger transposition in the Song editor.
    -   Swapped End and Ctrl-End so that the former shows last
        portion of the song.
-   Event editor. No fixes; see "Added".
-   Preferences dialog.
    -   Can turn off the auto-save-rc option and preserve that setting
        at exit.
    -   Error of connecting the store-palette slot in qseditoptions
        twice.
-   Configuration files.
    -   Some configuration files weren't setting up for saving due to
        old versions being present.

## [0.99.19] - 2025-03-02

### Fixed

-   Issue #136.
    -   Filtered out Program events from the drum-mode piano roll.
    -   Can now drag Program events up and down in the data pane.
        -   While working this issue, the following problems
            were found and fixed.
            -   The saving of Program events was fixed to calculate
                the proper time-stamp.
            -   Program events can be moved up and down by dragging,
                as well as by the line-dragging method.
        -   Added display of the names of Control and Program
            Change numbers in the event editor and pattern editor..
-   Pressing the finger button in the pattern editor now
    also enters paint mode in the event pane. The selected event
    category can the be entered by a click, and then moved up and
    down in the data pane.

### Added

-   This macro is defined by default: SEQ66\_SHOW\_GM\_PROGRAM\_NAME
    to show the GM patch names in the pattern editor data pane
    instead of just the patch/program number. See seq66\_features.h.
-   Added a new configuration file, '.patches' that can be used
    to show non-GM device program names in lieu of the built-in
    GM program name. Also specifiable in the Preferences / Session
    tab.

## [0.99.18] - 2025-02-03

More developer-discovered issues :-(

### Added

-   Added the dark-theme and dark-ui options to the user file for
    handling GUI elements that are otherwise difficult to see.
-   Added an option to dump the current palette while automatically
    inverting to create the --invert palette. It's activated by the
    SEQ66\_PROVIDE\_AUTO\_COLOR\_INVERSION macro.
-   Added a Help / View Log function to bring up the latest log
    text (if a log file is enabled).

### Changed

-   contrib/scripts/jackctl.
    -   Beefed up the jackctl script to facilitate testing.
    -   Added the "-u" option to a2jmidid in the jackctl script, to
        avoid undesirable changes to port names.
    -   Added support for raysession and agordejo.
-   Refactored the copy-configuration and delete-configuration
    functions to make them more robust and less dependent on
    file-extension.  Depends on the SEQ66\_KEEP\_RC\_FILE\_LIST
    macro.
-   Updated the show\_folder\_dialog() function to show hidden
    directories.
-   Disabled the various "Remap"/"Restart" buttons when running
    under an implementation of NSM.

### Fixed

-   Issue #135.
    -   Added an inverse pattern-length icon for dark themes.
    -   Fixed the vertical lines in the time panel so as not to
        obscure the measure numbers.
    -   Updated the pattern-editor piano roll drawing to avoid
        invisible vertical lines. See the dark-theme and dark-ui
        options too.
-   Fixed a seqfault when pressing an empty button on a set other
    than the first set. Also fixed in tag 0.99.17.1.
-   Fixed the JACK-to-ALSA fallback process, broken if the computer
    is running the jackdbus daemon. Also tested were differences in
    a2jmidid between two dev computers.
-   Fixed an error in the --home command-line option that left
    "home" as "~/.config/seq66".
-   Refactored and fixed the Import Project Configuration menu.
-   Refactored and fixed the Export Project Configuration menu.
    It now can locate and copy any PNG files (used in some of the
    Seq66 style-sheets). Currently the copying of PNGs is
    Linux-only [It uses the glob() function].
-   Fixed the route66 bitmap.

### Removed

-   The pattern-fix effect check-box for the "Truncate" effect,
    which cannot occur anymore.

## [0.99.17.1] - 2025-01-12

### Fixed

-   Fixed a segfault when clicking an empty pattern on sets 1 and
    above.

## [0.99.17] - 2025-01-10

This release provides a rather large number of fixes, including bugs
found while investigating user reports. Included are updated palettes
and Qt style-sheets, and a beefed up pattern-fix dialog.

### Added

-   Added a "thick grid lines" checkbox to Edit / Preference / Display
-   Added usage of "Extra" color for line drawing.
-   Added "Align Right" to the Pattern Fix dialog.

### Changed

-   Revamped and extended the functionality of the Pattern-Fix dialog.
    As part of this, the alteration API of the event-list has been
    updated.
-   Refactored vertical grid-line calculations; code moved into the
    zoomer.  For odd time-signatures (i.e. with a beat-width not a
    power of 2, which is not allowed in MIDI but is stored in a
    SeqSpec event in Seq66) we draw fewer lines in between bars to
    make a cleaner display. But do not expect them to be "nice".
    See the 4/7 pattern in the timesigs.midi file.
    -   Pattern editor. Better support for thick vs. thin grid lines.
        -   qseqroll.
        -   qseqtime.
        -   qstriggereditor.
    -   Song editor. Better support for thick vs. thin grid lines.
        -   qperftime.
        -   qperfroll.
    -   qeditbase. Macroed out unused zoom functions. Moved most to the
        zoomer class.

### Fixed

-   Fixed segfault when clicking the Restart button with external live
    frame(s) or external song editor open.
-   Issue #128 follow-on.
    -   Fixed the removal of trailing notes after truncating a pattern
        to a smaller number of measures.
    -   Upgraded one-shot recording to work during playback. Still
        minor issues; see the user manual.
-   Issue #133 and issues found while working this.
    -   Pattern editor.
        -   Changed the slot connection for editable combo-boxes to
            connect the lineEdit() accessor.
            -   Measures (pattern length) combo-box. Also made
                cancelling the change work correctly.
            -   Beats-per-bar combo-box.
            -   Beat-width combo-box.
        -   Fixed a seqfault when opening tune with a pattern-editor
            already up for the current tune. The side-effect is that
            armed status will not synch between the main window and
            the editor.
        -   Fixed raising the modify flag when a second pattern (with a
            different time signature) was opened in the editor.
        -   Fixed a potential segfault when opening a recent file with
            a pattern currently open for editing.  Had to add polling
            to check for changes in arm status. 
        -   Refactored the event/buss dropdowns to be modified only when
            the user changes setting or tries to bring up the dropdowns
            (lazy dropdowns).
    -   Song editor. Time zoom now affects horizontal scroll-bar length.
-   Issue #134. Added dates to the release-name line from 0.99.14 on;
    were left off by an oversight.
-   Pattern-fix editor. Somewhat revamped, many fixes made, and more
    testing done.
-   Non-standard time signature handling errors. Note that we cannot
    support non-power-of-2 beat-widths well in the piano-rolls.
-   Main window. Fixed updating the PPQN when a file of different PPQN
    is loaded.
-   Cleaned up and upgraded the linking of recorded notes.
-   Made ghost notes in selection box official. Also made it apply
    to select-all and other selection operations.
-   Fixing and normalizing the functionality of the Pattern-Fix dialog.
-   Fixed timestamp setting in opening the event editor for empty
    pattern.
-   Some minor tweaking (field size, font) of various dialogs.

### Removed

-   Nothing. Maybe a few unnecessary macros.

## [0.99.16] - 2024-12-03

This release provides fixes to user issues and a ton of related
fixes found while investigating the user issues. Some minor new
features added.

### Changed

- Documentation. Refined discussion about the about the Import/Export
  functionality, and some of the minor additional features. Some new
  screenshots still needed.
- Build configuration. Added CONFIG\_DIR\_NAME and cleaned up
  configure.ac. Updated the Makefile sources.
- Merged a fix from a pull request (issue #130) to correct
  the \*.desktop files.
- Pattern editor.
    - Renamed [new-pattern-editor] to [pattern-editor] in the 'usr'
      file. Also added the "Apply to new only" option to Edit /
      Preferences / Display.
    - The Quantized Record button in the pattern editor now goes through
      this sequence when clicked: None, Tighten, Quantize, Notemap,
      None.... Also prettied-up the icons.
    - Enhancements to pattern-editor note copy/paste:
      - The paste-selection box now shows the selected notes,
        ghosted, for easier placement.
      - A right-click cancels a paste action in the pattern editor.
    - Undid a change from awhile back that broke the recording of
      fast-keyed notes on the same MIDI key. Still need to fix the
      occasional zero-length note.
    - Added provisional code to speed up recording. Grep for the macro
      SEQ66\_LINK\_NEWEST\_NOTE\_ON\_RECORD. Has potential issues, so
      it is undefined.
- Color palette. Added access functions for "scale" (new) and "extra"
  colors in the palette, to improve the coloring (e.g. of the bars
  denoting notes in the scale of the pattern editor) in certain Qt
  style-sheet usages.
- Event editor. Enhanced writing pattern-dump files from the event
  editor.

### Fixed

- Issue #128.
  - Expanded recording.
    - Is now working. The expansion is continual, not waiting for a
      MIDI key to be struck. Also see the changes to the record
      buttons in the pattern editor.
-   Click-drag drawing of notes with "expand" set now works.
- Issue #130. Merged a pull request for issue #130 to fix the
  \*.desktop files.
- Issue #131. NSM interaction errors introduced in version 0.99.11,
  plus other related issues:
  - The NSM would show two clients: "qseq66" and "seq66" when adding
    only the "qseq66" client.
  - Saving via a remote NSM Save command or by the File / Save menu
    would not clear the modified flag.
  - Closing the session would not remove any external editor windows.
- Automation. Some automation actions need to work whether the action
  is "on" or "toggle". Fixed these 'ctrl' actions:
  - Save session (under NSM) or the MIDI file.
  - Record style select.
  - Quit.
- Pattern editor.
  - Fixed the display of tunes with various PPQNs such as 120 and 240.
  - Fixed zero-length notes caused by quantized recording.
  - Fixed the pattern editor so it reflects buss and channel settings
    made from the grid slot popup menu.
- Main window.
  - Fixed the following scenario: Load a song; do File / New; make a
    pattern; then File / Save. It overwrites the previous song. The
    fix now brings up a prompt for the name of the new file.
  - The main window now reflects the current record-loop style and
    new-pattern option as read from the 'usr' file.

### Added

- Main window.
  - Added "Clear events" to the grid slot popup menu. It keeps the
    pattern in the slot, but removes all of its MIDI events.
  - Added 120 PPQN to the list of supported PPQNs.
- Build configuration. Added a "config directory" macro to
  configure.ac and seq-feature functions to access it. Differentiates
  between client and directory name.
- Added monogreen.palette, monogreen.qss, and a down.png icon. Copy
  all to ~/.config/seq66 and modify the image url in the qss file
  to match your setting. Will work on a qrc file for a future release.
- 'usr' configuration file. Currently must edit the file to change
  these values.
  - progress-bar-thickness. Changes the width of the progress bars
    if progress-bar-thick = true. It mainly affects the song editor.
  - gridlines-thick. Paints the normal song editor grid. If false,
    then more lines are thinner or dotted; useful if the foreground
    color is bright. It mainly affects the song editor.

## [0.99.15] - 2024-10-28

### Added

- Added edit fields and buttons for selecting a non-default browser
  or PDF viewer to the Preference's Session tab.

### Fixed

- Some font handling in the various tabs and windows.
- Cleaned up the configuration dialogs.
- The file-selection dialog(s) when no file-extension is used.
- An error in getting the name of the mutes file in the Preference's
  Session tab.

### Changed

- Updating configure.ac to disable, and not allow enabling, of JACK,
  NSM, and liblo (OSC) if libraries not installed.
- Progress made getting a build to work in MSYS2. Not yet ready.
- Built on Windows 11 with a update to Qt 5.15.2 and mingw 8.10.

## [0.99.14] - 2024-08-14

### Added

- Added the use of the Esc key to close the external song editor window
  if not playing and not in adding mode. Similar to the fix made to
  the pattern editor for issue #117.
- Added the elliptical progress-box option to Preferences / Display.
- In the pattern editor, a tiny unlabelled button toggles the
  showing of note information when the mouse hovers over a note.
- Added a note-tooltip option. Click the unlabelled button at the left of the
  horizontal scroll-bar. Then hovering over a note shows some note information.

### Fixed

- In the zoomer class, rearranged members to avoid a warning (error)
  from g++ v. 14.2.1 about zoom being uninitialized in the constructor.
- Issue #128 "Recording type for loop button not working". Fixes the
  Issue in both directions.
- Issue #129 "Quantized Record Button problem" fixed by allowing
  the existing sequence recording status to be modified with an alteration.
- Tightened up the handling of selecting a pattern's input buss.

### Changed

- Standardized on "Overdub" for the pattern-window merge functionality.
  See issue #128.
- Updated the PDF documentation based on issue fixes and other fixes.
- Replaced the --session-tag option with --session.
- Changed the sort order of MIDI events so that Note Offs get priority over
  Note Ons with the same time-stamp. Prevents playback errors in
  the tune judyblue.mid. Enabled via macro SEQ66\_PRIORITIZE\_NOTE\_OFF.

## [0.99.13] - 2024-08-05

    This release is minor, a couple of lesser feature and some fixes.
    No release files are provided, no Windows installer. We've been
    working on another project, and it is time to move forward here.

### Added

- Added 'progress-box-elliptical' to the 'usr' file.
  It is a 'usr' option to show an elliptical progress box.
- New license files adhering to GitHub conventions.

### Fixed

- Fixed the writing and byte-counting of the end-of track event.
  This adds 1 byte to the size of a Se66 MIDI file.
- Fixed the counting of the size of empty note strings. Empty notes
  alway have a two-byte (short) note length of 0.
- A segfault would occur when opening a pattern from a second song
  while the pattern editor from the first song was open.

### Changed

- Changed the Tempo Track setting fields slightly in Edit / Preferences
  for clarity.
- Added more robust handling of the Seq66 SeqSpec track. This is the final
  track in an Seq66 MIDI file, and is not counted. But some applications
  might count it as a track when saving the MIDI file.
- In sequence::play() we now put SysEx events on the output bus.

### Removed

- Removed LICENSE and the licensing text files it refers to.

## [0.99.12] - 2024-01-13

### Added

- Clang compiler support.
- Provisional build process for FreeBSD.
- Added an autogen.sh script to reconfigure without using bash.
- Added 'rc' option to skip, recover, or abort from bad running
  status in MIDI files (trilogy.mid).

### Fixed

- Errors and warnings revealed by Clang.
- The reading, processing, writing, and display of SysEx and Meta
  events. Now handle unterminated SysEx messages (Dixie04.mid).
- Issue with building the command-line "portmidi" version.
- A one-character buffer overflow in portmidi.c.
- Bugs in --option log=file.
- Q button not working to set keep-queue status.
- Queued-solo functionality improved.

### Changed

- Upgraded the Event editor Dump output.

### Removed

- Disabled the grid-solo option as redundant. Will repurpose later.

## [0.99.11] - 2023-12-04

### Added

- Added 8 more ui-palette entries, total of 32. Probably enough.
- Added display of a pattern input bus (if present) in the grid
  slot. It is shown just before the pattern length at top right.
- Added mute-group label ("MG") to main window.
- Added a pre-made MIDI file to use with record-by-channel.
- Added a record-by-buss feature.
- Added a way to toggle recording of more than pattern at once.
- Can now paste a pattern into a new or another loaded MIDI file.
- Added optional paramater to the --priority option.
- Added showing program changes in slot button.
- Added showing text events in the data pane and all text events
  in the main Session tab. Fixed its Save Info button.
- Implemented the "menu-mode" automation. It duplicates the function
  of the hide/show button, to toggle between hiding some of the main
  window controls and the main menu, and showing them.

### Fixed
  
- Issue #123 "Would it be possible to have NEWS structured like a
  changelog"
- Fixed errors setting style-sheet, palette, and mutes in
  Preferences / Session.  Enhanced this tab to indicate when
  exit (as opposed to internal restart) is needed.
- Fixing various playlist errors:
  - PPQN setting issue causing slow/fast playback. Cannot
    display 120 PPQN well, fix too intrusive. Converted
    contrib/midi/Carpet_of_the_Sun_karaoke_meta_text.mid
    from 120 to 192 PPQN.
  - Segfaults due to not stopping playback before loading
    the next song or basing calculations on missing values.
- Fixing the massive botch of the Set Master tab.
- More fixes in Mutes tab, including raising the modify flag.
- Fixed app exiting unceremoniously if "quiet" is set.
- Fixed minor issue in Song zoom with 1920 PPQN.
- Fixed odd bug breaking MIDI-control-out (display).
- Prevent long redundant start-up error messages.
- Fixed solo feature. Should unsolo before starting another
  solo.
- Fixed queue and keep-queue.
- Fixed not saving record-by-channel. Fixed record-by-channel.
- Prevent long redundant start-up error messages.
- Fixed solo feature. Should unsolo before starting another
  solo.
- Fixed queue and keep-queue.
- Fixed not saving record-by-channel. Fixed record-by-channel.
- Fixed not modifying the song when pattern measures is changed.
- Fixed breakage of stopping song play at the end of song.
- Fixed bug in event-editor initialization.
- Fixed not applying note-length setting to step-edit.

### Changed

- Moved style-sheet options from 'usr' to the 'rc' file. Upgrade
  is automatic.
- Improved copy/paste for screen-sets in the same way.
- When loading a MIDI file, the file dialog defaults to the
  last-used directory. Fixes made to this feature.
- Focus is now set immediately to the seqroll and perfroll.
- Replaced some verbose() checks with investigate() checks to cut
  down on console output. In the CLI, --verbose now shows
  playlist actions on the console and prevents daemonization and
  logging to a file.
- Replaced the --inspect option with --session-tag to allow easy
  changing to another setup specified in sessions.rc. Also added
  the SEQ66_SESSION_TAG environment variable.

### Removed

- No removals.

## [0.99.10] - 2023-10-25

### Added

- Added drag-and-drop of one MIDI file onto the Live grid.
- Added the export of most project configuration files to another
  directory.
- Multiple tempo events can be drawn in a line in the data pane.
  They can be dragged up and down in the data pane.
- If configured for double-click, can now open or create a pattern
  by double-clicking in the song editor(s).
- Added a new "grid mode" to allow toggling mutes by clicking
  in the Live Grid.  The default group-selection keystroke is "\_".
- Added feature to scroll automatically in time and note value
  to show the first notes in a pattern.
- Added more UI palette items for more non-Qt color control.
  Modified the inverse color palette slightly. Added checkmark
  for the active pattern color in its popup menu.

### Fixed

- Issue #117 Option to close pattern windows with esc key. Must
  be enabled via a 'usr' option first.
- Issue #118 Make virtual ports ports enabled by default.
- Issue #119 "Quantized Record Active does not work" fixed.
  Note-mapping also fixed with this issue.
- Fixed an egregious error in drawing notes in drum mode.
- Fixed error in moving notes at PPQN != 192.
- Restored missing table header in Mutes tab.

### Changed

- Improved modification detection in the data pane.
- Many improvements and fixes to the Mutes tab.
- Made 'rc' file-name handling more robust.
- Tweaked the main time display to work better with high PPQN.
- The live-grid record-mode and alteration statuses are now applied
  when the pattern editor is opened. The "Record toggle" popup
  menu entry and MIDI control also support this functionality.
- Tightened the file-name/activity handling in Session preferences.

### Removed

## [0.99.9] - 2023-09-24

- Added an "Input Bus Routing" feature, where each pattern can be
  set to receive events from a given input buss. Selectable from
  the grid-slot popup menu.
- Fixed nasty segfault opening new file while Editor tab open.
- Fixed bug: port-mapping Remap and Restart did not work due to
  timing.
- Fixed bug in detecting Note-related messages.
- Fixed error in "quiet" startup that would cause immediate exit.
- Related to issue #115: Added ability to select a line in the data
  pane and grab a handle to change its value.
- Refactored and extended zoom support, added it to event and data
  panes.
- Adding more seqroll keystokes (and HTML help). Enabled Esc to
  exit paint mode if not playing.
- Added live-note mapping (needs testing!), refactoring set-record
  code.
- Implemented automation for BBT/HMS toggling, FF/Rewind, Undo/Redo,
  Play-set Copy/Paste, and Record Toggle.
- Added a build-time option to add a show/hide button in the
  main window to allow making the window to take up much less space.
- Added HTML help files to data/share/doc/info, other documentation
  upgrades.

## [0.99.8] - 2023-08-27

- Issue #112: A new pattern now displays in the MIDI controller.
- Issue #114: Adding display of shortcut keys to tool tips.
- Added a Pattern tab to Edit / Preferences for new-pattern settings
  and jitter/randomization.
- Added automation for the main window Loop L/R button.
- Fixed seqroll drawing errors introduced in adding time-sig support.
- Fixed incomplete data-pane refresh in scrolling with arrow-keys.
- Fixed not setting up SIGINT, which prevented a proper shutdown.
- Fixed a couple corrupted data/midi/FM/*.mid files.
- Changing playlist setting enables Session Restart button.
- Removed coloring of record-style and -mode buttons. Added coloring
  of event-editor "Store" button to denote saving is needed.
- Refactoring quantization alterations for future upgrades. Added
  an option to jitter the notes in the seqroll.
- Enforced that configuration files are stored in the "home"
  directory.
- The usual raft of humiliating bug-fixes. A small sample: Updating
  the event list when recording stops; fixing record button in pattern
  editor; fixing note-selection refresh; and about a dozen more.

## [0.99.7] - 2023-07-19

- Issue #110 follow-ons:
  Cannot save tempo (BPM) in Windows when
  changed from main window. Caused by mixing a long and size_t,
  which messed up in the Windows build.
- Issue #111 follow-ons:
  - Fixed initial time-signature drawing in data pane.
  - Fixed errors in inserting a time-signature. Added a pulse
    calculator that iterates through time-signatures.
- Fixed an important port-translation bug in output port-mapping.
- Recent Files is disabled if there are none.
- Revamped the Playlist tab, as it was confusing and very buggy.
- Added Windows key-mapping to fix processing "native virtual" keys,
  such as the arrow keys. Also fixes issue #102.
- Added auto-play and auto-advance to play-lists.
- Fixed bug in rcsettings::make_config_filespec().

## [0.99.6] - 2023-07-01

- Issue #3 follow-ons:
  - Added a qscrollslave to allow QScrollArea to allow the pattern
    editor panes to remain in sync with the seqroll when using the
    hjkl, arrow, and page keys.
- Issue #110 follow-ons:
  - Addition of Start menu entries for Windows.
  - Fixed access to the tutorial and manual. Refactored access
    to manual and tutorial for robustness.
  - Added data/readme files and doc/tutorial files accidentally
    left out of NSIS installer.
  - Fixed the saving of modified tempo changes.
  - Fixed event::is_desired(), which affected changing note
    velocities in the pattern editor's data pane.  Improved
    velocity-change undo.
  - Fixed an error preventing changing the "background" pattern.
  - Fixed issues with port-mapping and the Windows MIDI Mapper.
  - Issue: Building 32-bit (Windows XP) version on 64-bit Windows.
    On 64-bit Windows, this seems to require building a 32-bit
    version of the Qt toolset. Ugh.
- Issue #111: Adding support, as much as possible, for editing,
  storing, and displaying time signature in the pattern and event
  editors.
  - The first time-signature in a pattern becomes the main
    time signature of the pattern. (Also stored as a c_timesig
    SeqSpec).
  - The data pane shows a time-signature as a simple fraction.
  - Changing the time signature if at time 0 is automatic.
  - Time signatures at later times can be logged by setting the
    current time with a click in the top half of the time line,
    changing the beats and beat width, then clicking a time-sig log
    button.
  - Time-signatures with a beat width that are not a power of 2
    do not add an event, but are saved as the c_timesig SeqSpec
    value.
  - Provisional feature: we properly draw the piano roll, time line,
    event pane vertical lines as time-signature changes.
    Currently compiled in via a macro (see INSTALL).
  - Fixed event filtering in the event (qstriggereditor) pane.
  - Fixed time-signature editing in the event editor, and the
    B:B:T to pulses calculation.
- Enhanced port-mapping to prompt the user about issues and
  allow for an immediate remap-and-restart. A ton of fixes!
- Added 'o' keystroke to seqroll to toggle recording ('r' already
  used to randomize notes).
- Added a "quiet" option to not show startup message prompts.
- Enhanced the Edit / Preferences dialog.
- At first start, a log-file is now automatically created. If it
  gets larger than a megabyte, then it is deleted to start over.
- Fixed bug writing pattern-dump files from event editor.
- Improved modification detection and display in the pattern editor.
- Added the pattern port number to the song summary output.
- Updated alsa.m4 to avoid obsolete AC_TRY_COMPILE warning. Old
  version stored in contrib/scripts.

## [0.99.5] - 2023-05-20

- Greatly enhanced the event editor tab and the events that can
  be view and modified.
- Made port-mapping the default. At first startup the map
  exactly matches the existing ports; the user can edit this setup
  in the 'rc' file or the Preferences dialog.
- Eliminated "missing ctrl" message at first startup.
- Fixed port ID setting in midibus, and adding output flag in
  midi_alsa_info.
- Issue #110 Windows: Fixed compiler errors and added scripting to
  build NSIS-based install without leaving Windows, if desired.
- Internal refactoring to regularize handling of the session/config
  directory between Linux and Windows.
- Fixed portmidi bugs in Linux and Windows, enhanced device naming.
- Showing disabled/unavailable MIDI devices as grayed in various
  dropdowns.
- Rearranged the Seq66 man pages more sensibly.

## [0.99.4] - 2023-04-30

- Issue #3: The scroll wheel is enabled in the piano rolls (only).
- Issue #48: For a new NSM session configuration, disable "JACK"
  port auto-connect.
- Issue #108.  Fixed trying to remove Event tab after deleting it.
- Issue #109.  Fixed the application of channels to the various
  export operations.
- Fixed minor-but-annoying bug in reporting trying map a "null" buss.
- Improved state-appearance of Stop, Pause, and Play buttons.
- Fixed issue opening a non-standard-length pattern in its window.
- Fixed note events not getting linked after recording.
- Fixed drawing of wrap-around notes with linear gradient, and fixed
  handling of note wrap-around when set to false.
- Fixed refresh of Mute and Session tabs when loading a MIDI file.
- Added seqmenu entry for toggling recording of a pattern.
- Added the ability to use the first Text message as "song info".
- Seq66 now prevents opening the event editor if recording is in
  progress. Cannot update event editor live with new events.

## [0.99.3] - 2023-04-19

- Issue #107.  The basic fix is made. Still need to rehabilitate
  the Expand-pattern functionality.
- Issue #40.  Improved NSM handling:
  - Seq66 detects nsmd as the parent process early in startup.
  - Close ("X") button disabled and hidden.  Xcfe4 "close window"
    action works, though, as does response to a SIGTERM from nsmd.
  - Handling "config" subdirectory improved.
  - The --nsm option is now for debugging only, simulating running
    under NSM.
- Automation fixes:
  - Fixed processing grid keystrokes twice.
  - Renamed record-mode and grid-model control labels.
  - Fixed accident disabling of grid-mode controls.
  - Making MIDI control-out handling more reasonable.
  - Added some LaunchPad Mini macros.
- Added reading/writing/displaying Meta text events such as Text
  and Cue Point.
- Fixed broken "recent-files" features (by forcing 'rc' save).
- Improvements made to playlist handling. It wasn't displaying
  the BPM of the next tune.  Still have issue with the BPM spinbox
  not causing a file modification. Editing the BPM works.
- Improvements and important fixes to mute-group and its MIDI
  control still in progress.
- Fixed the daemonization and log-file functionality.
- Revisited the recmutex implementation.
- Weird error where ALSA not found! We now avoid a crash, but
  qseq66 currently exits with only console messages.

## [0.99.2] - 2023-03-04

- Issue #103.  Some improvements to pattern loop-count.
- Pull request #106. User phuel added checkmarks for active buss and
  channel in grid-slot menu.
- Fixed background sequence not displaying when running with
  linear-gradient brush.
- Fixes to brushes and making the linear gradient (notes and triggers)
  a default run-time option.  See the 'palette' file.
- Other minor fixes and documentation updates, including the manual,
  as per issue #104.

## [0.99.1] - 2022-11-27

- Issue #44. Revisited to fix related additional issues. Can now
  toggle a pattern's song record in perfnames. Record button:
  Ctrl disables snap, Shift enables record at playback start.
  Still minor issues.
- Issue #93. Revisited to fix related open pattern-editor issues.
- Issue #100. Partly mitigated. Added a custom ringbuffer for MIDI
  message objects to replace JACK's ringbuffer. Adapted work from
  the ttymidi.c module.  Also added configuration to
  calculate the sample offset.
- Various fixes:
  - Fixed partial breakage of pattern-merge function.
  - Fixed odd breakage of ALSA playback in release mode.
  - Fixed Stop button when another Master has started playback.
  - Shift-click on Stop button rewinds JACK transport when running
    as JACK Slave.
  - Display of some JACK server settings in Edit / Preferences.
  - Fixed handling of Ctrl vs non-Ctrl zoom keys in perfroll.
  - The pernames panel now matches the layout of a grid button
    better.  Other cosmetic changes.
  - Event-dump now prompts for a text-file name.
- Added linear-gradient compile-time option (seq_features.h) for
  displaying notes and triggers. Enabled by default, edit to disable.
  Does not seem to add noticeable overhead.

## [0.99.0] - 2022-09-03

- Issue #44. Record live sequence changes functionality beefed up
  to handle recording without snapping.
- Issue #54. Updated the ax_have_qt_min.m4 file to detect
  qmake-qt5, etc.
- Issue #78 revisited. Pattern-box sizes would become 0 and the
  progress boxes disappear. Now the 'usr' show option is boolean
  ("pattern-boxes-shown", default = true), and the sizes are kept
  within reasonable limits.  Also added a "--locale" option so that
  the user can, for example, set the Seq66 global locale to
  "en_US.UTF-8".
- Issue #82 allows buttons and fields to expand better.
  Fixed for main window and the song & pattern editors only.
- Issue #89 fixed. The MIDI control display not quite reflecting the
  status of each pattern, especially during queuing.
- Issue #90 improvements. Save was not always enabled. Surely some
  issues remain.  Also, in some cases there is no way to "unmodify".
- Issue #93 fixed. The window of a deleted pattern now closes.
- Issue #94. Long song in song editor could not be scrolled to the
  right.  Added more padding and a button to expand the grid when
  when desired. For the pattern editor, the workaround is to increase
  the "length" in the pattern editor.
- Issue #97. Investigate/resolve differences from Seq24.
  - Pattern editor fixes.
  - Added paste box when pasting notes, an oversight from the Seq24
    reboot.
  - Added Ctrl-Left/Right to move the progress bar in the pattern
    editor. (Left/Right scrolls the piano roll.)
- Issue #98. Feature requests (metronome and background recording).
  - Added an initial metronome facility and 'rc' configuration.
  - Metronome count-in added.
  - Background automatic recording added.
- Various fixes:
  - Muted pattern slots show a short progress bar, to aid in the
    timing of queuing.
  - Improved the handling of the MIDI 'ctrl' file and control
    states upon a restart.
  - Tightened up pattern arming/disarming processing.
  - Implemented left/right arrow keys to move the selected trigger
    in the song editor. Ctrl moves multiple triggers. Moving a
    trigger past END moves END.
  - Fixed error in painting tempo events in triggers (perfroll).
  - Improved keystroke movement of "L"/"R" markers in song and
    pattern editor time bars.
  - The global time signature is now applied to new patterns.
  - Added a try-catch to showing the locale.
  - Ctrl-Z removes all mouse-painted notes at once (like Seq24).
    Single-note removal is macroed out.
  - Error in parsing "--option sets=RxC" fixed.
  - Improved the handling of grid font sizes re window size.
  - Fixed the response to incoming MIDI Continue.
  - PPQN != 192 : handle snapping when adding notes; bugs in
    perfroll and perftime.
  - Implement clear-events and double-length grid modes.

## [0.98.10] - 2022-07-18 

- Revisited issue #83, improved GUI editing of control/display
  automation.
- Fixes for issue #87: segfault due to mute-group on larger set-sizes,
  inability to modify some usr options in Edit / Preferences, and
  related bugs found during these fixes. Made performer the owner of
  mutegroups.
- Fixes for issue #88: 4/16 pattern not shown/played properly until
  opened in editor.
- Fixed minor issue with port-naming, port-lists.
- Many tweaks to documentation, vim files, midibytes....

## [0.98.9.1] - 2022-06-01

- Added files needed for ./configure.
- Documentation and tutorial updates.

## [0.98.9] - 2022-05-29

- Fixed nasty issue #85 which was recreating the slot buttons, and
  in a different thread, leading to a seqfault.
- Fixed issue: Preference / MIDI Input port check did not change
  Apply state.
- Fixed mute/record/thru state display between live grid and a
  pattern editor.
- Updated/cleaned the tutorial.

## [0.98.8] - 2022-05-23

- Fixed issue #84, now able to build Qt and CLI version in one pass.
  Also fixed out-of-source builds and removed function call tracing.
  Streamlined the bootstrap script; it was always "configuring".
- Changed the Apply button from Edit / Preferences to a Restart
  button.  Further tightening of change detection.
- Moved midibyte/midiboolean functions from strfunctions to midibytes
  and mutegroup. Much header-file cleanup. Do a --full-clean!
- Added Ctrl-Home and Ctrl-End support to the song editor.
- Added an initial HTML tutorial and commands to access it.  Add
  shellexecute module to replace the ill-performing QDesktopServices.
- Important configure.ac/Makefile.am upgrades.

## [0.98.7] - 2022-05-08

- Fixed issue #80 where some MIDI controls were getting recorded.
- Fixed issue #81, adding <stdexcept> to code catching
  std::invalid_argument.
- Fixed issue #83 where parsing 'rc' port lines failed with a
  port name having a trailing space. Also fixed short-port-name
  detection.
- Added a "Pattern Fix" dialog to allow a whole pattern to be shifted,
  quantized, and changed in length all at once. Useful for fixing a
  badly played pattern or scaling the duration.
- Fixed the issue of leftover child windows of qseqeditframe64.
- Removed odd beat-widths from time signature dropdowns.  Can
  still enter odd values manually, but unsupported by MIDI format.
- Refactored drop-down lists to use the settings module.
- Tightend string_to_xxx() functions and replaced the std::stoxxx()
  functions to avoid throwing exceptions.
- Trying to get rolls, time, data, and event panes to line up no
  matter what the Qt theme is. Difficult.
- Tightening the setting/clearing of performer modification re
  sequence changes to reduce unnecessary prompts to save, flag
  modification via the asterisk change marker, and enable/disable the
  File / Save option in the correct way.
- Tightened the saving of WRK and MIDI files.
- Major refactoring to replace seq::pointers with seq::refs in many
  places.
- Updated the bootstrap script to make 'release' the default, and
  fixed the portmidi automake build process for Linux.

## [0.98.6] - 2022-04-09

- Revisited issue #41 to make sure "Quit" is "Hide" under NSM. Also
  fixed issue with the "newtune.midi" default name.
- Fixed a minor bug involving setting input aliases.
- Fixed bug with setting last-used-directory to "".
- Fixed handling of Live/Song mode in performer and in 'rc' saving.
- Fixed stupid seqedit bug for selecting beats/bar.
- Disabling/enabling JACK input and output on the fly in Preferences
  works, as long as they had been enabled at startup.
- Added Preferences options to toggle the double-click edit feature
  and select the Live/Song/Auto mode.  Added Apply/Reset buttons.
- Removed long-unused "rtmidi callback" code and other disabled code.
- Got user-manual screenshots up-to-date.
- Upgraded and fixed file-name splitting and rebuilding.
- Modify flag now set when painting notes in seqroll.
- Improved appearance of Loop/Record/Quantize buttons in main grid.
- Improved modification detection of sequences and main window.
- Refactored global SeqSpecs for better robustness, fewer surprises.
- Added a file-changed check before restarting the application.
- More code/macro cleanup.

## [0.98.5] - 2022-03-07

- Added locking for the event-drawing loops to prevent segfaults.
  Active only when recording; prevents iterator invalidation.
- Added an underrun indicator to the main window.
- The client name ("seq66") is no longer shown, nor saved in the 'rc'
  file. Easier to use multiple Seq66's with the --client-name option.
- Updating Dia diagram, finding and fixing issues and dead code.
- Added global internal check for both portmaps being active.
- Fixed bad slot connection for import_midi_into_session().
- Bad command-line options now cause an exit. This includes JACK
  options when Seq66 is built without JACK support.
- Improve the coherence of JACK-less builds. Some related NSM tweaks.
- Adding JACK access functions for the future. Improved internal
  port initialization code. Removed some non-useful rtmidi code.
- Adding the ability to disable/enable input and output on the fly in
  the MIDI Clock and Input tabs.  Still in progress, though.

## [0.98.4] - 2022-02-12

- Fixed bug in recording-type selector in seqedit. Added a one-shot
  reset option.
- Fixed some metadata problems as per issue #75.
- Fixed an issue with the H:M:S display being changed by changing the
  beat-width, a bug going back to Seq24's JACK transport support.
- MIDI API refactoring for the future; detecting JACK port
  registration.

## [0.98.3.1] - 2022-01-24 

- Revisited issue #45. Doh!
- Cleaned up the Makefiles, fixed minor issues.

## [0.98.3] - 2022-01-23

- Fixed issue #76.  Fixed broken MIDI Start handling. Added setting
  the tempo via a tempo event.  Still thinking about MMC.
- Fixed old bug in showing note events; they were filtered by the
  pattern-configured channel!
- Tweaks to style-sheet handling.
- Fixed misuses of msgprintf(). Other minor bug fixes.
- In a new NSM session, do not load the most-recent MIDI file, even
  if specified in the imported configuration.  Also, no longer do an
  automatic import of the home configuration to the NSM configuration.
  Instead, use the "File / Import / Import Project" menu entry.
  See the user manual for how this works.
- Added a "File / Import / Import Playlist" command.
  See the user manual for how this works.
- Made virtual port names in ALSA more consistent. Also create the
  ports (in JACK, too) even if disabled.  Still experimental.
- Added Preferences item for the BPM Precision setting.
- Added contrib/code/ametro.c to provide ALSA test for MIDI clocking.
- Added GNU -finstrument-functions support, but too problematic.

## [0.98.2] - 2022-01-01 

- Fixed issue #74, where -1 for "no buss-override" was being converted
  to 0.
- Added detection of missing system ports when mapping ports.
- Song duration label is now a button to select time versus measures.
- Removed useless flags for loading keystroke and MIDI controls.
- Avoid applying mute-group 0 if song has triggers and song-mode is
  'auto'.
- Fixes to log-file handling.
- Added "Blank" for disabling keystrokes in the 'ctrl' file.

## [0.98.1] - 2021-12-26

- Work on creating an NSIS installer for a 64-bit Windows build.
- Fixed a stupid segfault bug with the --help option.  Doh!
- Changed some extended automation keys (for grid modes).
- Minor fixes: (1) Set to set 0 when opening a MIDI file; (2) Expand a
  pattern when merging a longer one into it; (3) fixed pattern access
  in sets > 0; (4) fixed an error in string tokenization.
- Fixes for port-mapping and naming; if present, the user sets the
  status of the port-map, which is copied to the matching port.
- Fixes in song-editor set-names display.
- Removed unused module qskeymaps.

## [0.98.0] - 2021-12-11

- Fixed issue #41 "Hide Seq66 on closing window" via a "visibility"
  automation command and by fixing the response to "hide/show"
  messages from NSM. Note that the NSM API permits the "Quit" command
  to exit the application. Also see the comments at issue #64 "NSM: UI
  show up after restarting the app".
- Fixed issue #73 "Compile error because of jack_get_version_string"
  by detecting the presence of this function in configure.ac.
- Truly fixed high CPU usage in Windows version of the condition
  variable "wait".  Replaced pthread implementation with C++'s
  condition_variable.
- Added "MIDI macros" to the 'ctrl' file.  Can send SysEx or other
  messages from a drop-down list; automatic startup and exit messages.
  More to come.
- Added a feature to extract JACK port aliases and show them
  to the user so that the system port can be associated with a named
  device (e.g. "Launchpad-Mini").
- Added api_sysex() overrides, at last.
- Added Preference items for MIDI control I/O.
- Improved the display of the MIDI file-name in title and live grid.
- Improving grid-mode functionality, adding more automation controls,
  in progress.

## [0.97.3] - 2021-11-26

- Added pattern-recording indicator to live-grid slots.
- Replace useless "Record" automation command with a "Loop Mode"
  command to move between normal loop mode in the Live grid to various
  record-toggling modes:  Overdub (merge), Overwrite, Expand, and
  One-shot.
- Also refactored the quantize control to move through states of
- normal, quantize, and tighten.
- Refactored MIDI control for possible future usage of the D1 event
  value.
- Fixes to external live grid handling.
- Fixed the display of loop status changed via MIDI control.
- Fixed and updated the Windows build.  Mitigated high CPU usage
  when not (!) playing; fixed a bug in microsleep() for Windows.

## [0.97.2.1] - 2021-11-12 

- Fixed odd breakage of loop-control hot-keys. Doh!

## [0.97.2] - 2021-11-11

- Issue #57: Increased width of option fields for wider fonts.
- Issue #58: Indicate if NSM is running in Preferences / Sessions and
  disable other session selections at that point.
- Issue #59: Spelling error(s) fixed.
- Issue #60: Added 'rc' option to disable JACK port auto connect in
  normal mode.  Also present in Preferences / JACK.
- Issue #61: Rearranged console output to show the app name, in color.
  Also turns off color if redirected to a file.
- Issue #63: Initial work on rotating numbering of patterns, sets, and
  mutes, so that numbers vary faster by column than by row.
- Issue #64: Fix a bug in optional GUI, testing with Agordejo (NSM).
- Added textfix.qss to make disabled text easier to read in themes.
- Improved the saving/restoring of Edit / Preferences.
- Added option "Bold Grid Slots" to make the progress bar and progress
  border thick, and the slot font bold.
- Added the ability to reload the configuration via a button press
  that restarts the application.
- More streamlining of configuration writing.
- No longer show the grid slot progress bar moving in muted tracks.
- Mute-group names now stored in the 'mutes' file.  Also able to edit
  them in the Mutes tab.  Also fixed botched mutes-in-MIDI-file
  handling.
- Removed dead-code from the event-editor frame.
- Changing behavior of external live frames for more flexibility.

## [0.97.1] - 2021-10-20

- Fixed a bad bug in displaying Notes in the data & event panels in
  the pattern editor, caused by premature ... optimization.
  per issue #61.
- Added working tempo-track code to Edit / Preferences / MIDI Clock.
- Added exponential ramping of Event Panel events to the pattern LFO
  dialog.
- Added the ability to move selected Event Panel events using the
  Left/Right arrow keys.
- Improved the handling of sets and external live grids.
- Updated documentation extensively. Optimized some images.
- Stopped bootstrap --full-clean from removing Makefile.in files.

## [0.97.0] - 2021-10-12

- Added limited vertical zoom to the song editor (performance roll).
  Still has vertical scroll issues.
- Added more Preferences settings, enabled some that were not yet
  implemented.  Upgraded the handling of the configuration files.
  By default, the 'rc' file is always saved, in case ports change.
- Added option "wrap-around" (for notes) to the 'usr' file.
- Added option "lock-main-window" to the 'usr' file to prevent
  resizing the window.
- Added code to show unlinked note events on the seqroll, the "u"
  key to remove them, and the "=" key to relink them.
- Added more build information to --version and Help / Build Info.
- Fixed drawing slot-button borders, drawn with no pattern color now.
- Got auto-scaling of the slot button font working.
- Implemented the Help / About links as per issue #21.
- Added OpenSUSE INSTALL notes from the sivecj/Seq66 fork.
- Improved the display and editing of tempo events, especially in the
  pattern editor. Also tightened handling of status values.
- Can now copy/paste a pattern from one MIDI file to another.
- Fixed minor bug in Import dialog handling.
- Refactoring for SMF 0 reading and export.
- Minor fix to flag changed tune (an asterisk).

## [0.96.3] - 2021-09-10 

- Added ability to modify Note On and Note Off at the same time in the
  event editor. Fixed and updated event::get_rank().
- Fixed output port-map issue with lookup of "FLUID Synth". Removed
  the random ID number; search the port name via containment, not
  equality.
- Usage of the JACK Session API restored, though "deprecated".
  Removed all traces of LASH support. Added a configuration tab
  for allowing session management via JACK or NSM.
- Added an automation control for "save session".

## [0.96.2] - 2021-08-15

- Fixed issue #55, where the MIDI control channel was being stripped
  when using JACK.  Many other channel-handling improvements.
- Fixed a related issue: null (status = 0) control events were sent.
- Fixed a bug in "portmidi" MIDI input handling where only the last
  device events would be processed.
- Improved pause/continue support with JACK transport.
- Fixed 'rc' allow-click-edit feature.
- Made the buss-override settings act more consistently.
- Fixed the drawing of preview keys in virtual keyboard.
- Fixed setting the modify flag when opening existing pattern.
- Added settings interface for the "set mode" of playback.
- Added selection of notes and event by channel.

## [0.96.1] - 2021-08-01

- Restored drag and drop of patterns in the Live frame.
- Added the ability to copy all patterns in one set to another set.
- Fixed song-start-mode handling when "auto" is specified.
- Added "Control" and "Program" (GM) drop-downs in the event editor.
- Now display full path names in the recent file list to distinguish
  files better.  An 'rc' config item.
- Added a few configuration options to Edit / Preferences.
- Added 'usr' options to change the vertical offset of notes in the
  progress-box of each pattern button, and to provide default labeling
  of the piano keys.
- Tweaked the drawing of notes and drum notes.
- More work on set-handling.
- Fixed panic-button disabling Launchpad display output. However,
  if pressed before exit, the lights remain on and there is a slit
  delay in exiting the session (in ALSA; works fine in JACK).

## [0.96.0] - 2021-07-17

- Adding code to control the visibility of the main window; added
  a "Visibility" MIDI control option, and support for the
  "optional-gui" flag of the Non Session Manager.
- Fixed harmonic transposition settings.
- Fixed bug that drew fingerprint at top of button; and another bug
  that disabled showing the pattern if fingerprinting was disabled.
- Can now read MIDI files that are readable, but not writable, and
  disable File / Save as needed.
- Added hjkl arrow keys to seqroll and perfroll. Why? We have a
  Microsoft Arc keyboard with all the arrows on one small button.
- Fixed the Mixolydian mode scale. Oops.
- The pattern editor time, roll, data, and event frames line up.
- Fixed error reading mute-groups; small fixes to configuration files.
- Work on fitting pattern-editor in tab.
- Work on mitigating weird hang in QApplication destructor.

## [0.95.1] - 2021-07-06

- Added 'auto' option to song-start-mode setting.
- Added missing harmonic-transposition option to the pattern editor.
- Fixed issues with some of the file-dialogs.
- Fixed issues with editing keystrokes being passed from the tabbed
  editors to the main window (and the live frame).
- Improved arrow-key handling in seqroll.
- Removed PortMidi Java configuration parsing code.
- Important fixes to NSM sessions.
- Added 'one-shot' option the the 'usr' file record-style setting.
- Improved support for making the user-interface smaller; 4x4 sets.
- Added the "enigmatic" scale.
- Fixes to handling of musical key, scale, and background pattern.
- Finalized the scale-finder code (Ctrl-K in the pattern editor
  piano roll.)
- Updated libtool support, now seq66cli is under 200K in size.
- Removed QtWidget directory from qclocklayout #includes for issue
  #54.  Also added error-message and about to the Qt m4 file.

## [0.95.0] - 2021-06-19

- Updated almost all settings to use "name = variable" convention
  to improve readability.  This will change the format of config-files
  slightly upon exit.
- Fixes made to the sample Launchpad Mini 'ctrl' files.  Also added a
  "Quit" command, especially useful in a headless run.
- Added 8 "Alt" MIDI Control Out values to support special cases
  not covered by the concrete set of control-out values.
- Major cleanup and neatening of header files.
- Minor bugs and regressions fixed along the way.
- Loop-edit key will create a new sequence if slot is empty.
- Patterns empty of playable events no longer show unnecessary
  progress bars.
- The estimated duration of a tune is shown in the Song tab, based
  on pattern lengths and song triggers.

## [0.94.0] - 2021-05-28

- Major improvements to the stability of MIDI control of playlists.
- Added Phrygian scale thanks to user WinkoErades.
- Update the 'rc' file for a simpler specification of JACK MIDI and
  JACK transport.
- Removed the old-style live frame; use themes and style-sheets to
  create the old look if you like it.
- Removed a lot of debugging material of no use now.
- Fixed (mostly) a weird bug causing the application to hang
  on exit when set as JACK Master.  Pretty damn weird.
- Improving support for non-default PPQNs.
- Patterns can now be copied and merged into a new pattern to combine
  (for example) separate percussion tracks.
- Fixed error in playlist::verify() adding an empty list.
- Improving the handling of headless seq66cli; added a "quit"
  automation function for MIDI-only use.
- Fixed some issues with reading Cakewalk WRK files.

## [0.93.2] - 2021-05-14

- Changed the mute-group format inside the MIDI file to use a much
  less disk space (about 3K less).  Can be set in the 'rc' file to
  write the old format.
- Minor tweaks to the transposed-trigger functionality.  Can be set in
  the 'rc' file to write the old format.
- Removed the code for the essentially unused Seqtool application.
- Removed the now unnecessary old-style qseqeditframe.
- Add 'usr' tweaks options to change the size of the live-grid
  progress boxes, or eliminate them completely.
- Refactored keymaps for better progress on issue #47, using native
  key-codes. Added a spreadsheet listing the supported names of the
  keys.  Laid the groundwork for a 'keys' mapping file.
- Removed excess spurious events when Seq66 shuts down under JACK.
- Implemented the control-toggling of "follow JACK transport".
- Fixed a bug in the pattern editor that created unnecessary empty
  screen-sets.
- Further fixes and flexibility for handling mute-groups.
- Fixed the installation of libseq66 and libsession library header
  files in "make install" to preserve their base subdirectories.
  (The other libraries currently do not use base subdirectories.)

## [0.93.1] - 2021-05-03

- Work in progress on issue #47; added a keyboard-layout option to the
  'ctrl' file to disable auto-shift and tweak the internal key-map for
  some keyboards.  Added an "AZERTY" 'ctrl' file to the installation.
- Improved group-learn key control.
- Fixed issue #49, mute-group issues, plus a bug in saving mutes to
  the MIDI file.  Added a couple more flags to the 'mutes' file.
- Fixed issue #50, made the slot text color the same as the label
  color, and provided a "secret" default color that will cause the
  text to match the theme.  This can be overridden by a palette file.
- Fixed issue #51 (show-stopper!), where playback with JACK transport
  enable was extremely erratic on some platforms.
- Add clearing of the performer "play-set" for "File / New" to
  prevent the previous song from being playable. :-D
- Activate usage of (larger) seqedit frame in the "Edit" tab via
  a 'usr' option.  Adapted the size to better fit, but the user still
  needs to increase vertical dimension slightly to see the bottom
  buttons.  Will eventually eliminate the old version of the tabbed
  Edit frame.
- Fixed a bug in drawing notes as a new one is recorded; needed to
  "verify-and-link".
- Added a loop-count for live playback of a pattern.  0 means normal
  infinite looping; 1 means "one-shot"; and higher numbers will work.
  Stored with the pattern in the MIDI file.

## [0.93.0] - 2021-04-16

- Added a transpose value to song editor triggers to support shifting
  patterns automatically during Song play.  Added an 'rc' option to
  save MIDI files using the original triggers.
- Improved the song editor vertical scrollbar, it adjusts to the
  number of actual sets.
- Added the L/R marker feature to the external pattern editor, and
  Song mode is no longer required to use it.  This makes it easier
  to explore a long pattern for extracting to a short pattern loop.
- Added more perfroll snap options, including one to force Seq24
  behavior.
- Make the perf-names now also show the pattern color. They highlight
  as the mouse moves over the pattern rows, useful for long songs.
- Fixed playback of ultra-long patterns due to not sleeping in the
  output loop (forgot to convert milliseconds to microseconds).
- Fixed vertical zoom in the pattern editor.
- Fixed a bad bug in writing Meta and SeqSpec data-lengths greater
  than 127.
- Enhanced the event editor to work with channel-less tracks.
- Added channel and bus menus to the grid-button popup menu.

## [0.92.2] - 2021-03-27

- Added a Qt "style-sheet" configuration it to the 'usr' file. It
  can be used to alter the appearance of the application beyond what
  a palette can do.  A sample 'qss' file is provided.
- Fixed PPQN modification, added user-interface and 'usr'
  configuration to change the default PPQN from 192.
- Fixed many issues with changing the time signature.
- Fixed creation of new configuration files.
- Fixed port-mapping for MIDI output, control, and status display.
- Removed the external set-master; use the set-master tab.
- Tightened meta-events and set-handling.
- More fixes to Song recording; added a Snap button for it.
- Fixed the rendering of the beat indicator and pattern fonts.
- Updated the man pages and the documentation.

## [0.92.1] - 2021-03-07

- Fixed issue #42 by adding scrollbars to I/O lists in Preferences
  when there are many ports on the system; also increased port
  limits to 48 ports.
- Fixed issues with iterating through MIDI events in the
  user-interfaces.
- Big fixes to Song recording. More to do?
- Added an experimental one-shot auto-step step-edit feature for
  recording (for example) drumbeats from MIDI devices.
- Fixed bug in parsing Fluidsynth port names.
- Improved handling of MIDI I/O control of Seq66.  Added more
  automation-display events, more testing.
- Updated documentation, including a ODF spreadsheet for the MIDI
  control configuration of the Launchpad Mini.

## [0.92.0] - 2021-02-13

- Fixed issue #34: "seq66 does not follow jack_transport tempo changes"
- Fixed issues with applying 'usr' buss and instrument names to the
  pattern-editor menus.
- Fixing serious issues with the event editor. Now deletes both
  linked notes.
- Added mute-group-out to show mutegroups on Launchpad Mini buttons.
- Tightened up mute-group handling, configuration file handling,
  play-list handling, and MIDI display device handling.
- Stream-line the format of the 'ctrl' file by removing columns for
  the values of "enabled" and "channel".  Will detect older formats
  and fix them.
- A PDF user manual is now provided in the doc directory, installed
  to /usr/local/share/doc/seq66-0.92 with "make install".

## [0.91.6] - unknown

- Massively updated the Mutes tab.
- More documentation.
- More fixes to the song editor.
- Added more files to the creation setup at the first run of Seq66.

## [0.91.5] - 2021-01-10

- Added vertical zoom to the pattern editor (V keys and buttons).
- Added more control over the coloring of notes.
- Still improving the port-mapper feature.
- Added quotes to file-paths in the 'rc' configuration file.
- Many fixes to seqedit, perfedit.  Way too many to mention them
  all.  Changed the 4/4 and length selections to be editable.
- Getting serious about rewriting the user manual in this project.

## [0.91.4] - unknown

- Improved port naming and provide an option for short or long port
  names.
- Improved safety in NSM sessions.
- Major refactoring the color handling.  Colors have changed!!!

## [0.91.3] - 2020-12-16

- Added check to not apply last mute-group if in Song mode.
- Provisional support for playing multiple sets at once and for
  auto-arming the selected set when loaded.
- Added a configurable number for virtual MIDI input/output ports.
- Provides an option to for multiple-set playback and auto-arming
  of a newly-selected set.
- Fixed bug in string-to-int conversion uncovered by automatic
  mute-group restore.
- Refactoring port naming and I/O lists.
- Minor play-list fixes.

## [0.91.2] - 2020-11-30

- Fix developer bug causing playlists to not load properly.
- Fix crash when 'rc' file specifies empty mutes and ctrl files.

## [0.91.1] - 2020-11-28

- More fixes for mute-group (mutes) handling.
- Ability to save the last-active mute-group for restoring on startup.
- Added a button to toggle insert mode in pattern and song editors.
- Robustness enhancement to NSM support.

## [0.91.0] - 2020-11-21

- Non Session Manager support essentially complete.  The
  refactoring to do this was massive.
- All too many bug fixes and minor improvements.
- Added --copy-dt-needed-entries to qseq66 Makefile.am to fix
  linkage errors that cropped up in debug builds.
- Got the CLI version building, needs a lot of testing.
- Playlist editing from the user-interface much improved.

## [0.90.6] - 2020-09-26

- Fixed issue #19 where recording notes caused a segfault.

## [0.90.5] - 2020-08-15

- More refactoring to improve Windows builds and fix deadlocks and
  playback on a default Windows 10 install.
- Added code to implement Song/Live and JACK Transport key toggles.
- MIDI control improved for control and for status display by
  devices like the Launchpad Mini, using new "ctrl" files.
- Fixes:
  - Fixed a bug using millitime() instead of microtime().
  - Issue #13, data and event/trigger panes not reflecting event
    changes.  Change handling improved in general with more
    performer callbacks.
  - The data pane was some pixels off in the tabbed edit-frame.
  - Fix a lot of issue with using sets and an 8x8 Seq66 grid.
- Improved error-handling and reporting.

## [0.90.4] - unknown

- Some refactoring to improve Windows builds.

## [0.90.3] - 2020-07-05

- Added signal handling (e.g. for nsm-proxy) from user falkTX.
  Used in the CLI and Qt versions to trigger file save and
  application exit.
- Added code to define the engine used and the exact "uname a-" of the
  operating system on which the build was done, for the --version
  option.
- Fixed issue #5 to save/restore note-on resumes and get them
  working in Live mode and Song mode.
- Fixed issues with perfoll and grid-button rendering, synch between
  button and seqedit mute status, growing notes in the seqroll, and
  more.
- Added writing of blank [midi-control-out] section.
- Fixed flickering when muting/unmuting patterns via keystrokes.

## [0.90.2] - unknown

- Lots of code cleanup.
- Added truncation of BPM to precision in "usr" file.
- Fixed at bug in handling running status; backported to Seq64.

## [0.90.1] - 2019-10-20

- A raft of bug fixes and user-interface improvements.
- Many tweaks to try to make the performer and the user-interface even
  faster.

## [0.90.0] - 2019-09-10

- The application and documentation are now (barely) suitable for
  public consumption, after residing on a server (a Toshiba laptop) at
  home for months.

# vim: sw=4 ts=4 wm=15 et ft=markdown
