synthv1 - an old-school polyphonic synthesizer
----------------------------------------------

ChangeLog


1.1.1  2024-09-20  An End-ofSummer'24 Release.

- NSM: prevent loading any preset(s) given on command line.


1.1.0  2024-08-28  A Mid-Summer'24 Release.

- LV2 Plug-in Control Input Port-Change Request extension is not
  tagged experimental anymore.


1.0.0  2024-06-20  An Unthinkable Release.

- Making up the unthinkable (aka. v1.0.0)


0.9.91  2024-05-02  A Spring'24 Release Candidate 2.

- Prepping the unthinkable (aka. v1.0.0-rc2)
- Updated to latest framework level (Qt >= 6.7)


0.9.90  2024-04-11  A Spring'24 Release Candidate.

- Prepping the unthinkable (aka. v1.0.0-rc1)
- Custom color themes are now file based (*.conf); legacy still
  preserved ntl.
- Fixed the build checks on whether to use old or newer style of
  LV2 include headers.


0.9.34  2024-01-26  A Winter'24 Release.

- Added build checks on whether to use old or newer style of LV2
  include headers.
- LV2 plugin Control Input Port-change request extension feature
  support added.
- Updated copyright headers into the New Year (2024).


0.9.33  2023-12-20  An End-of-Autumn'23 Release.

- Minor optimization to denormal avoidance on some fx's.
- Bumping into next development cycle (Qt >= 6.6)


0.9.32  2023-09-12  An End-of-Summer'23 Release.

- Preppings to next development cycle (Qt >= 6.6)


0.9.31  2023-06-06  A Spring'23 Release.

- Make sure the XCB interface is in use when instantiating the
  LV2 plugin on non-Qt hosts, allowing LV2 X11 UI embedding to
  work and show up properly.
- Prepping into the next development cycle (with Qt >= 6.5).


0.9.30  2023-03-24  An Early-Spring'23 Release.

- Restrict to existing named presets when adding new or editing
  programs; load and restore presets directly when previewing
  programs (cf. Configure... > Programs).
- NSM open and save operation failures are now replied with an
  error status (was always OK before).
- JACK client watchdog introduced for automatic reactivation and
  resilience (standalone only).
- NSM announcement reply/error messages now relegated to debug
  builds only.


0.9.29  2023-01-25  A Winter'23 Release.

- Bumping copyright headers to the brand new year.


0.9.28  2022-12-29  An End-of-Year'22 Release.

- Mitigate NSM sending lots of dirty messages on SIGTERM signal.
- Although being deprecated to use, JACK Session support hopefuly
  fixed once again.


0.9.27  2022-10-04  An Early-Autumn'22 Release.

- Fixed MIDI Controller... modeless dialog (de)instantiation.
- Custom color/style themes applies only to main widget only.
- Fixed typos and updated some old MIDI GM2 Controller names.


0.9.26  2022-06-07  An End-of-Sping'22 Release.

- Corrected an incredible mistake introduced in the last year's
  Glide/portamento protential crash fix.
- Added Qt::Svg module as required at build time.


0.9.25  2022-04-07  A Spring'22 Release.

- Added missing file code to desktop exec entry (standalone only).
- Main application icon is now presented in scalable format (SVG).
- Migrated command line parsing to QCommandLineParser/Option
  (Qt >= 5.2)
- Avoid issuing NSM dirty messages as much as possible.


0.9.24  2022-01-09  A Winter'22 Release.

- Dropped autotools (autoconf, automake, etc.) build system.
- Fixed deprecate warnings in preparation for Qt >= 6.2.


0.9.23  2021-07-07  An Early-Summer'21 Release.

- Fixed some ages old Glide/portamento potential crash bug
  (reported by AnClark).
- Add support for LV2 UI Windows platform (by AnClark).
- Sustenuto pedal controller (MIDI CC#66) is now implemented.
- Have some tolerance for buffer-size changes.
- All builds default to Qt6 (Qt >= 6.1) where available.
- CMake is now the official build system.


0.9.22  2021-05-13  A Spring'21 Release.

- All packaging builds switching to CMake.


0.9.21  2021-03-16  An End-of-Winter'21 Release.

- Fixed an old lurker, causing slight differences to voice
  on-sets, due to a wrong initial LFO Volume ramping value.
- Slightly improved eye-candyness to all graphic widgets,
  most especially on the EG widget handling, curved lines
  and gradient fills.


0.9.20  2021-02-10  A Winter'21 Release.

- When under under the NSM auspices, fix SIGTERM handler
  on exit and just hide the main-window on close (applies
  to the JACK stand-alone only).


0.9.19  20220-12-19  A Winter'20 Release.

- Fixed display of old knob/dial values on status-bar.
- Reduced formant filter coefficient slew rate, aiming
  to a tenfold DSP performance gain.
- Get a chance on bringing Wayland into the picture when
  dealing Qt static-linked deliverables.


0.9.18  2020-10-27  A Fall'20 Release.

- Upstream package naming for the JACK standalone and LV2
  plugin deliverables are suffixed to '-jack' and '-lv2',
  respectively.
- White keys on the virtual piano keyboard are now fully
  highlighted.


0.9.17  2020-09-08  Late Summer'10 Release.

- Added -n, --client-name to the JACK stand-alone client
  application command line option arguments.
- Fixed unitialized number of voices variable; early-bird
  adaptations to Qt6 >= 6.0.0 and C++17 standard.


0.9.16  2020-08-06  A Summer'20 Release.

- Fixed deprecated stuff on an early preparation for Qt6.


0.9.15  2020-06-22  An Early-Summer'20 Release.

- A long awaited expedite "Panic" button is now featured.
- Note velocity doesn't affect DCF envelope anymore.
- Avoid glib event-loop upon LV2 plug-in instantiation.


0.9.14  2020-05-05  A Mid-Spring'20 Release.

- Fixed initial DCF1, LFO1 group enablement (GUI).
- Fixed initial window title for the LV2 External UI.
- LV2 Atom/Port-event host notification support has been
  implemented (unofficial).
- Prevent execution of duplicate or redundant MIDI bank-
  select/program-change commands.
- Early fixing to build for Qt >= 5.15.0.


0.9.13  2020-03-26  A Spring'20 Release.

- Maximum pitch-bend range has been expanded to 0..400%,
  allegedly to support some PME driven instruments (as
  kindly requested by sacarlson PR#10).
- Make man page compression reproducible (after request
  by Jelle van der Waa, thanks).
- Fixed crash when showing the tooltip of a negative note
  number that results from dragging over and beyond the
  left edge of the virtual piano keyboard.
- Remove -v (verbose) flag from 'strip' post-link command.
- Fixed CMake build by adding missing Custom Color Theme
  (palette) form file (.ui).
- Bumped copyright headers into the New Year (2020).


0.9.12  2019-12-26  The Winter'19 Release.

- Custom color (palette) theme editor introduced; color
  (palette) theme changes are now effective immediately,
  except on default.
- Second attempt to fix the yet non-official though
  CMake build configuration.
- Move QApplication construction/destruction from LV2 UI
  to plug-in instantiation and cleanup.


0.9.11  2019-10-31  A Halloween'19 Release.

- When using autotools and ./configure --with-qt=...,
  it is also necessary to adjust the PKG_CONFIG_PATH
  environment variable (after a merge request by plcl
  aka. Pedro López-Cabanillas, while on qmidinet).
- Upstream packaging is now split to JACK standalone and
  LV2 plugin only: the former shared common core and UI
  package is now duplicated but statically linked though. 


0.9.10  2019-09-24  An Early-Fall'19 Release.

- Upstream packaging is now split on JACK standalone,
  LV2 plugin and common core and UI packages, similar
  to recent Debian practice.
- Added alternate yet non-official CMake build option.
- Fix HiDPI display screen effective support (Qt >= 5.6).
- All randomizers now compliant to the standard normal
  distribution.
- Make sure compiler flags comply to c++11 as standard.


0.9.9  2019-07-18  A Summer'19 Release.

- Randomization of current parameters is now available
  through a new top-level push-button.
- Updated for the newer Qt5 development tools (>= 5.13).
- Per instance custom tuning (micro-tonal) option has
  been added to the previously existing global settings
  (cf. Help > Configure... > Tuning > Global, Instance).
- New DCF and LFO Enabled parameters.
- Configure updated to check for qtchooser availability.


0.9.8  2019-06-06  A Spring'19 Release.

- Improved slew-rate to DCF Formant coefficient updates.
- Refactored the LFO Sync for correctness.
- Fixed all LFO Panning and Volume modulation, now being
  correctly isolated on a per voice basis.
- Fixed DC offset on all main DCO wavetable oscillators.
- Fixed initial DCO and LFO wave shapes on LV2 plug-in UI.
- Minor update to Debian packaging control file.


0.9.7  2019-04-14  A Spring-Break'19 Release.

- All audio input now get through without being processed
  by any or whole effects stage anymore.
- Re-defined all JACK stand-alone client application UNIX
  signal handling.


0.9.6  2019-03-18  Pre-LAC2019 Release Frenzy.

- A gentlier shutdown for the JACK client standalone client.


0.9.5  2019-03-04  The End of Winter'19 release.

- HiDPI display screen support (Qt >= 5.6).
- A fake/visual piano-keyboard widget is now being introduced
  to the status bar.
- Avoid destructing the possibly shared QApplication instance
  on LV2 plug-in UI clean-up.


0.9.4  2018-12-12  A Late Autumn'18 release.

- Old deprecated Qt4 build support is no more.
- Normalized wavetable oscillator phasors.
- Added missing include <unistd.h> to shut up some stricter
  compilers from build failures.


0.9.3  2018-10-22  An Autumn'18 release.

- For safety reasons, all processing is now suspended while
  loading presets or program changes are issued.
- AppStream metadata updated to be the most compliant with
  latest freedesktop.org specification and recommendation.
- SIGTERM (and SIGINT) signal handler added to close the JACK
  stand-alone client applications properly.
- Make the GUI not to show initially on NSM.
- Make NSM state independent to session display name, keeping
  backward compatibility for old sessions.
- Give some more slack to schedule/worker thread ring-buffer.


0.9.2  2018-07-24  A Summer'18 release.

- Add LV2 UI Resize extension data support.
- Process MIDI Controlllers even though the channel filter
  is on (DEF Channel is set anything but "Omni").
- AppData/AppStream metadata is now settled under an all
  permisssive license (FSFAP).


0.9.1  2018-06-26  An Early Summer'18 release.

- Fixed for some g++ >= 8.1.1 warnings and quietness.
- Added LV2 UI X11 support option.
- Disable reference micro-tuning settings when a Scala
  keyboard map override is in effect.
- Added "All files (*.*)" filter to every file requestor
  dialog, wherever missing.


0.9.0  2018-03-07  The End of Winter'18 release.

- Introducing Scala micro-tuning classes, borrowed, stirred
  and refactored from original Nick Dowell's amsynth code,
  all under the GPL umbrella, of course.
- An internal note-key/frequency indirection table is now in
  place, as a baseline for any micro-tuning implementations.
- Whether to use native file browser/requester dialogs is
  now an effective option when launching under NSM session
  management (was once disabled initially).
- Trying to get CC14 MSB+LSB (course+fine) running status on,
  no matter whether each pairing event are under 200ms apart.
- A little hardening on the configure (autoconf) macro side.


0.8.6  2017-12-20  The End of Autumn'17 release.

- Sync option added to DCO wavetable oscillators, as for
  making either one to hard-sync (slave) with the other
  one (master) in each pair.
- Set on a minimum attack time of 500usec as much to prevent
  audible clicking on low-pitched notes.


0.8.5  2017-10-29  An Autumn'17 release.

- Opening multiple preset files is now possible, populating
  the preset drop-down listing, while only the first one is
  loaded effectively into the scene as usual.
- Mono(phonic) "Legato" mode option introduced.
- Desktop entry specification file is now finally independent
  from all build/configure template chains, whatever.
- Updated target path for freedesktop.org's AppStream metainfo
  file (formerly AppData).


0.8.4  2017-08-22  A Late-Summer'17 release.

- Disabled "Custom style theme" option on LV2 plug-in form.
- Brand new LFO Balance parameter introduced.


0.8.3  2017-06-21  A Summer'17 release.

- Added StartupWMClass entry to desktop file.
- Long overdue, some brand new and fundamental icons revamp.


0.8.2  2017-05-02  Pre-LAC2017 release frenzy.

- A custom knob/spin-box behavioral option have been added:
  Configure/Knob edit mode, as to avoid abrupt changes upon
  editing values (still the default behavior) and only take
  effect (Deferred) when enter is pressed or the spin-box
  loses focus.
- The main GUI has been partially revamped, after replacing
  some rotary knob/dial combos with kinda more skeuomorphic
  fake-LED radio-buttons or check-boxes.
- Alias-free/band-limited wavetable oscillators have been
  fixed to prevent cross-octave, polyphonic interference.
- A MIDI In(put) status fake-LED is now featured on the
  bottom-left status bar, adding up to eye-candy as usual.


0.8.1  2017-03-21  A Spring'17 release.

- Fixed a probable old miss about changing spin-box and
  drop-down list not reflecting changes immediately into
  the respective parameter dial knobs.
- Fixed middle-button clicking on the dial-knobs to reset
  to the current default parameter value.
- Help/Configure.../Options/Use desktop environment native
  dialogs option is now set initially off by default.
- Added French man page (by Olivier Humbert, thanks).
- Make builds reproducible byte for byte, by getting rid of
  the configure build date and time stamps.


0.8.0  2016-11-17  A Fall'16 release.

- LV2_STATE__StateChanged is now transmitted as a regular
  atom notification event, as far as to give some careful
  hosts enough slack to raise a dirty flag.
- Fixed input MIDI RPN/NRPN running status processing.
- Almost complete overhaul on the configure script command
  line options, wrt. installation directories specification,
  eg. --prefix, --bindir, --libdir, --datadir and --mandir.


0.7.6  2016-09-19  The Eleventh official beta.

- MIDI RPN/NRPN running status and RPN NULL reset command
  are now supported (input only).
- The core engine implementation is now delivered as a shared
  object library, common to both the JACK stand-alone client
  and the LV2 instrument plug-in.
- Discretely fixed MIDI Controlllers catch-up algorithm.


0.7.5  2016-06-16  The Tenth official beta.

- All changes to most continuous parameter values are now
  smoothed to a fast but finite slew rate.
- All BPM sync options to current transport (Auto) have been
  refactored to new special minimum value (which is now zero).
- In compliance to the LV2 spec. MIDI Controllers now affect
  cached parameter values only, via shadow ports, instead of
  input control ports directly, mitigating their read-only
  restriction.
- Make sure LV2 plug-in state is properly reset on restore.
- Dropped the --enable-qt5 from configure as found redundant
  given that's the build default anyway (suggestion by Guido
  Scholz, while for Qtractor, thanks).


0.7.4  2016-03-02  The ninth-bis official beta.

- Fixed the DCF Formant filter voice initialization reset.


0.7.3  2016-02-22  The ninth official beta.

- Avoid out-of-bound MIDI events as much as possible, coping
  with LV2 plug-in hosts that feed/run them in on border line
  circumstances (as reported by Thorsten Wilms, on suspected
  Ardour looping crash/bug, probably fixed already, thanks).
- Safe defaults are tentatively sbeing introduced to internal
  OUT FX buffer-sizes, as read from JACK buffer-size changes
  and LV2 block-length instantiation bound options.
- Added application keywords to freedesktop.org's AppData.


0.7.2  2015-12-04  The eighth official beta.

- A brand new LFO BPM control parameter is being introduced,
  as a subordinate to LFO Rate, with follow/sync to current
  transport/host option (BPM=Auto).
- LFO Sync (free running) mode option has been introduced.
- A fourth DCF type has been added: a vocal Formant filter.
- A third DCF slope/type has been added: the RBJ's bi-quad.
- Prefer Qt5 over Qt4 by default with configure script.
- Introducing brand new OUT FX Send parameter per engine.
- Introducing brand new DCO, LFO Ring Mod(ulator) parameters.
- Special value (0=Off) added to DCO1,2 Glide knob spin-boxes.


0.7.1  2015-08-24  A seventh-bis official beta.

- Improved Qt4 vs. Qt5 configure builds (via qmake).


0.7.0  2015-07-24  A seventh official beta.

- Complete rewrite of Qt4 vs. Qt5 configure builds.
- Reset ramps after LV2 control port reconnection; small fixes
  to LV2.ttl (pull-requests by Hanspeter Portner aka. ventosus,
  thanks).
- MIDI Controllers/Programs is now an optional feature on the
  LV2 plugin forms, as some LV2 hosts might enforce the purity
  restriction to input control ports as being absolutely read-
  only parameter values from a plugin's instance perspective.
- MIDI Controller mapping/learn is now possible on all parameter
  control knobs; with global configuration also avaiable on the
  Help/Configure dialog.
- French (fr) translation line to desktop file added (by Olivier
  Humbert, thanks).


0.6.3  2015-05-09  A sixth official beta.

- Main widget layout changed as much to expand or grow vertically
  as needed.


0.6.2  2015-04-30  A fifth official beta.

- Custom knob/dial behavior mode options are now introduced:
  linear and angular (aka. radial) as far to avoid abrupt
  changes on first mouse click (still the default behavior).
- Fixed for some strict tests for Qt4 vs. Qt5 configure builds.


0.6.1  2015-03-09  A fourth official beta.

- Added application description as freedesktop.org's AppData.
- Introducing LV2 port-groups (as proposed by Amadeus Folego aka.
  badosu, thanks).
- Improved envelope widget nodes click-and-drag precision.
- Introducing a brand new user preference on eye-candy: cf.Help
  /Configure.../Options/Custom style theme (applies to the JACK
  stand-alone client only though).
- Envelope and filter now rendered with anti-aliased lines.
- Fixed a Qt5 FTBFS re. QHeaderView::set[Section]ResizeMode().


0.6.0  2014-01-23  A third official beta.

- MIDI bank-select/program-changes is now supported, for patch,
  preset and/or instrument program control.
- New Help/Configure dialog is introduced for editing the also
  new MIDI bank/programs interface and user preference options
  as well (new home of the old Help/Use native dialogs option).
- Presets may now be specified by base name, as an alternative
  to the complete preset file-path on command line argument (re.
  stand-alone JACK client).
- Fixed parameters A/B comparison swap.


0.5.1  2014-09-12  One second official beta.

- One decimal digit added to all scalar parameters and knobs.
- Stand-alone JACK client ports outrageously renamed from a
  zero based numbering scheme into a plus one natural one.
- Experimental LV2 Time/position atom-event support (Delay BPM).


0.5.0  2014-06-30  Officially beta now.

- LV2 UI Idle and Show interfaces support added.
- First attempt to allow a headless stand-alone JACK client
  application run mode, without a GUI, with option given as
  command line argument (--no-gui).
- A man page has beed added (re. stand-alone JACK client).
- Disable band-limit option for 'Noise' oscillator wave-shapes.
- Allow the build system to include an user specified LDFLAGS.


0.4.2  2014-04-29  A pre-LAC frenzy beta.

- Badly named 'Noise' wave-shape oscillators get their band-
  limited treat option and re-labeled as 'Rand'; also a brand
  new wave-shape 'Noise' is then introduced (now for real :)).
- New user preference option, cf. Help/Use native dialogs.
- An anti-denormal regression applied to the Phaser fx stage
  (affecting early proto-beta >= 0.4.0).


0.4.1  2014-04-07  A proto-beta bis.

- Once so called 'Noise' wave-shapes are now being made a lot
  more deterministic, read idempotent ;).
- Fully alias-free/band-limited wavetable oscillators are now
  in place, making it a better virtual-analog synthesizer (esp.
  for running sample-rates below 96KHz).
- Late optimizations to basic wave-table oscillators.
- Make sure the LV2 plugin back-end always builds first, before
  its respective LV2 UI front-end client.


0.4.0  2014-03-06  A proto-beta party.

- All knobs default value setting slightly improved.
- A run-time circumvention have been hacked, strictly related
  to when NSM session management is in charge: the native file
  browser/requester dialogs are then disabled (were taking too
  long to list the current directory on first time invocation).
- Auto-detection of the correct target library path for the
  LV2 plugin, whether it may be .../lib or .../lib64 on bi
  -arch targets, when libdir is not specified on configure
  time (--libdir=LIBDIR).
- Reverb has been added as a brand new effects stage, though
  based on good old FreeVerb :).
- Introduced a variable env.stage time control parameter.
- Dummy change-log entry for the new year.


0.3.6  2013-12-31  A fifth of a Jubilee.

- Effects/Delay BPM sync option to current transport (Auto).
- More preparations for Qt5 configure build.


0.3.5  2013-09-30  Fall greetings.

- First attempt on separating the DSP code from UI as runtime
  objects, effective for the LV2 plugin deploy.
- MIDI channel filter switch is now introduced.
- Fixed uninstall target make rule.
- Mono(phonic) mode switch is now being introduced.
- Another minor fix to note-off fast-release.


0.3.4  2013-07-16  Brand new icon ready.

- Preset file icon and mimetype now introduced.
- A brand new icon drops the lamest old-schooler's out, in a
  master lesson taught by Jarle Richard Akselsen, thanks.


0.3.3  2013-05-31  Late spring blossoming

- Some sympathy to extreme dark color (read black) schemes is
  now being indulged; some discrete changes on the icon front
  has also emerged ;)
- MIDI Key pressure/polyphonic aftertouch events now properly
  recognized, in addition to MIDI channel pressure/aftertouch
  processing.
- Parameter value ramping moved into the late post-processing,
  an attempt to reduce some pop/click artifacts even further.
- NSM support introduced to JACK client.
- A slight GUI behavior change: (re)writing existing names
  doesn't load the respective preset anymore (after ticket
  by Jiri Prochazka aka. Anchakor, thanks).
- Introducing LV2 External UI "rogue" support.
- Moog-like 24dB/oct resonant filter slight modification.
- Fixed JACK client fail/fake initialization.


0.3.2  2013-03-01  One third bug-fix release.

- Pitch-bend, Modwheel and LFO Pitch range internal fixes.
- Sustain/damper pedal switch (MIDI CC#64) support added.
- Color palette hack on Qt5 dark themes.


0.3.1  2013-02-08  One second bug-fix release.

- Improved filters parameter sensitivity (cutoff, reso).
- Envelope generators stage curves now gone a little more old-
  schooler and analog-like, hopefully improving on the punchy
  and click-less sound front.
- Experimental LV2 Time designated port support (Delay BPM).
- Preparations for Qt5 migration.


0.3.0  2012-12-21  Third coming release.

- Dropped all SSE dummy build optimization flags as they were
  making more harm than real good, performance wise.
- GUI layout moved from a toolbox into a stacked tab widget;
  also, a status-bar has been added at the bottom display.
- LV2 Atom/MIDI event processing is now official, a replacement
  for the formerly deprecated LV2 Event/MIDI specification.
- Added dirty checking also on switching from unamed presets.
- JACK stand-alone: preset loader initialization fix.


0.2.0  2012-11-22  Second public release.

- Parameters A/B comparison toggle buttons have been added.
- Keep LV2 event buffer valid on each run(), as found for strict
  LV2 specification and compliance (as suggested by falkTX).
- Increased polyphony baseline from 24 to 32 voices.
- Prepared for relative paths from preset file references.
- Velocity sensitivity configuration control has been added.
- Reset (all values to preset defaults) button has been added.
- Slight minor fix on fast-release re-triggering.
- Added some command line options to the stand-alone JACK client
  program (--help and --version information).
- Reimplemented mouse-wheel stepping on combo-dial knob widgets.
- Detached generic double-linked list class into its own header.


0.1.1  2012-09-24  One first bug-fix release.

- Fixed a crash bug on LV2 main widget close (GUI) due to some
  superfluous preset dirty checking.
- Fixed a nasty rather fundamental bug introduced by late voice
  list optimization, which was seriously crippled and noticeable
  when more than one LV2 plug-in were being instantiated.


0.1.0  2012-09-10  First true official release.

- Preset drop-down list is now sorted.
- Migrated to sourceforge.net.


0.0.9  2012-08-27  Post-vacation relax.

- Main widget now a plain basic QWidget, instead of QDialog.
- Preset salvage query check on main widget close (GUI).
- Voice list alloc/free optimization--doubled polyphony.


0.0.8  2012-07-15  Second coming consolidation.

- Proto-icon, Desktop file and Help About menus added.


0.0.7  2012-07-07  Initial change-log entry.
