drumkv1 - an old-school drum-kit sampler
----------------------------------------

ChangeLog


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  2020-12-19  A Winter'20 Release.

- Better handling of the offset range when in presence of
  very long sample files.
- 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.
- Fixed note-off effectiveness when DCA is disabled (idle).
- 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, DCA1 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
  proposed by sacarlson, to synthv1).
- 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.
- Highlight current element/sample/key on the virtual
  piano keyboard widget.
- 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.
- Zero-crossing detection algorithm has been improved,
  most specially to mitigate transient clicks across
  offset points.
- 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, LFO and DCA 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.
- Dropped LFO Sync parameter as being irrelevant across
  element voicings.
- Fixed all LFO Panning and Volume modulation, now being
  correctly isolated on a per voice basis.
- Fixed initial 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.

- Corrected sample offset range internal reset.
- 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.
- Probable fix to sample offset range changes across native
  UI and loading and saving state.


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.

- Improved overall stability for current sample offset range
  property changes across UI's, eg. LV2 plug-in native GUI
  and a host generic provided one.
- 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.

- Make sure all LV2 state sample file references are resolved
  to their original and canonical file-paths (not symlinks).
- Sample waveform drawing is a bit more keen to precision.
- 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.
- Current element sample offset start/end parameters automation
  is now a possibility, on the LV2 plug-in only.
- 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.

- Frame-time display format option added to the new offset
  spin-box.
- Sample start point (offset) added as a brand new property
  parameter.
- 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.

- 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.

- Sample files are now saved as symlinks when saving to JACK
  and/or NSM session directories/folders.
- 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.
- 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.


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.
- Left-clicking on each element fake-LED now triggers it as
  an internal MIDI note-on/off event. Play (current element)
  menu item has been also added to the the element list and
  sample display right-click context-menu.


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.
- A MIDI In(put) status fake-LED is now featured on the
  bottom-left status bar, adding up to eye-candy as usual;
  also, each drum element key/sample now have their own
  fake-LED flashing on respective MIDI note-on/off events.
- A brand new and specific user preference option is now
  available as Help/Configure.../Options/Use GM standard
  drum names (default being yes/true/on).


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.

- LV2 Patch property parameters and Worker/Schedule support
  are now finally in place, allowing for sample file path
  selections from generic user interfaces.
- 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.
- French translation updated (by Olivier Humbert, thanks).


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).
- Tentatively safe defaults are being 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 key/element.
- Fixed an old bug that caused an immediate crash on triggering
  any sample key/element with its (exclusive) Group parameter
  set to anything but "Off" or "1".


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

- Fixed a recent bug/mistake that was causing a complete reset/
  revert of all element parameters to prior values upon loading
  an element sample file.
- 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,
  on synthv1, 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.

- Sample file drag-and-drop support has been added to the note
  element list widget.
- Main widget layout changed as much to allow sampler display
  and element list to expand or grow vertically as needed.


0.6.2  2015-04-30  A fifth official beta.

- Sample file path mapping has been fixed for LV2 plugin state
  restoration, which were preventing Ardour to reload any of
  the saved session or preset sample files in particular.
- 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.
- Sample file drag-and-drop support has been added.
- 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.

- Fixed LV2 plugin relative/absolute file path state resolution.
- 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).
- Reverse sample option and parameter knob added.
- 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-shapes 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 ;).
- 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.
- Purging out some dead code (eg. non-looping, zero-crossing).


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

- Effects/Delay BPM sync option to current transport (Auto).
- Fixed for relative paths on preset file references.
- 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.
- 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.
- Fixed a current element switching bug (via GUI) which was
  confusing the (stereo)width, panning and volume settings
  effect from previous selected elements.
- Fixed LV2 .ttl file index order (re. GEN1_GROUP, GEN1_COARSE).


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

- Pitch-bend, Modwheel and LFO Pitch range internal fixes.
- LV2 State save flags now forced to be portable POD.
- 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.

- Exclusive element sounding group setting added (eg. hi-hats).
- 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.
- Audio files browser filter support for the old but everlasting
  8.3 filename formats.
- Velocity sensitivity configuration control has been added.
- Reset (all values to preset defaults) button has been added.


0.1.0  2012-10-25  First public release.

- MIDI Note-off event enablement parameter introduced.
- Reset (all values to preset defaults) button has been added.
- Slight minor fix on fast-release re-triggering.
- Element list and sample widget context menu's now a reality.
- 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.
- LV2 state chunk retrieve/save implementation complete.
- Current element selection and stabilization.
- Preset load/save is now fully functional.
- Access to core engine instance has been slightly refactored.
- Classic ADSR replaced by custom one-shot drum-mode specific
  envelope generators (Attack, Delay1, Level2, Delay2).
- Detached generic double-linked list class into its own header.


0.0.0  2012-10-03  Initial change-log entry.
