This is an old revision of the document!
Drumgizmo Roadmap
Version ending with an even number are stability/bugfix releases (except 0). Versions ending with an odd number are feature releases that are potentially unstable.
Version 0.9.17
Feature release
Targeted for release medio April 2019.
Add new improved sample selection algorithm -
irc (chaot4)
Add tooltip descriptions for the humanizer knobs.
(chaot4)
Add controls to cli.
(chaot4)
-
CLI:
Add support midi aftertouch chokes for all midi input engines (midifile, jackmidi and ossmidi). (deva)
Version 0.9.18
Bugfix release
Not yet a target release date.
BUGS:
Fix assert(events.empty()) in jackmidi.cc line 97.
(meka)
Disable timing humanizer in the UI if not supported by the host (LV2).
(unassigned)
Fix
GUI not showing in Reaper under Windows on first opening it.
(chaot4)
Fix crash when Browse window is open and plugin window is closed (see
IRC log 6.8.18).
(chaot4)
Check for real time hazards in the inner loop using
stoat.
(unassigned)
Placeholder: Fix found real time hazards.
Fix crashes and weird rendering issues with
>=suil-0.8.3.
(unassigned)
Fix trebmuh's bug (resize bug). (see
IRC log of 0.9.14 release date around 22:00)
(unassigned)
-
Add escaping of special characters in values (and keys?) in ConfigFile parser.
-
Version 0.9.19
Feature release
Not yet a target release date.
Metadata:
Make preliminary
GUI drafts on how to implement the metadata into the interface
(muldjord)
Improve error message if instrument file doesn't exist.
(suhr)
Make sure DrumKit.clear() also clears metadata.
Plugins:
Consider adding resampler quality knob to the UI.
(unassigned)
Design drumkit logos, and add them to the drumkits.
(muldjord)
Add drumkit logo in the inline display.
(chaot4)
Add
LV2 port-group support to be able to name the outputs according to the drumkit channel names.
(unassigned)
Add default midi map to drumkits which is then automatically loaded when drumkit file is loaded
(chaot4)
Add default drumkit?
(chaot4)
Add MIDI learn
(chaot4)
Add functionality to save learned MIDI map
(chaot4)
Display last played MIDI note
(chaot4)
Add pitch modifier
(chaot4)
Add per instrument fader
(chaot4)
Make file browser a more pleasant experience
(chaot4)
-
Add support for opening links in external browser
(unassigned)
Add support for setting mouse cursor.
(unassigned)
Add selection by mouse and keyboard (shift+arrows) in lineedit.
(unassigned)
Add support for clipboard.
(unassigned)
CLI:
Add CoreAudio output support.
(deva)
Add CoreAudio midi input support.
(unassigned)
-
-
Switch to
Midifile instead of (or also) libsmf (suggested by Chris Share - cpsmusic).
(unassigned)
Other:
-
Create pd external.
(deva)
Parse beginning of xml files in order to determine if they are a drumkit. Hide if not. Extend drumkit parser with some function that determines if current file is of proper format (eg. for drumgizmo format root node is drumkit).
(suhr)
Improve dgreftest to use xml as input including files, seed as well as config as xml like the plugins.
(unassigned)
Make test suite of mid/wav/xml files exercising all kit features.
(unassigned)
If you have named jack output channels in your jack drumgizmo client using jack metadata to suggest a port sorting order for e.g. QJackCtl is now possible (ask nils)
Add “two output channels mode” which should be super convenient for e-drum kits
(chaot4)
Backlog
Major Features
Add “Velocity translation” module in ui for the following functionality:
(unassigned)
Velocity curvature adjustment (up/down)
Velocity floor adjustment
Velocity ceiling adjustment
The point of all of these is to adjust any given drumkit to match the expected sound output from a midi drum loop you might have acquired elsewhere. The drumkits differ in where the hits are placed and as such an internal adjustment might be needed for the midi to sound as expected when played through any particular kit.
Add UI option for the cli
-u
.
(unassigned)
Add “Export” and “Import” buttons and functionality to the UI.
(unassigned)
[placeholder] Add cli module options tabs to the UI.
(unassigned)
Make “alternatives” feature that makes it possible to swap (ie. use the same midi notes) for example a snaredrum without reloading the entire drumkit.
(unassigned)
Make hihat openness matrix control port. Look up samples in a two dimensional array rather than a one dimensional depending on velocity and openness instead of just velocity. This could also be used for “off-axis” on a snare or similar and could potentially be use with more-than-2 dimensions.
Wayland UI support
Add ALSA MIDI support
-
Add Windows DirectSound support.
Make full utf-8 support in the font renderer (using freetype?)
(unassigned)
Make support for the
GPLed VST3 (and remove old vst2.4)
Make LV2 plugin compile on
OS X.
(unassigned)
Make VST plugin compile on
OS X.
(unassigned)
Make AU plugin for
OS X.
(unassigned)
Make AAX plugin for
OS X.
(unassigned)
Add DXi support on Windows
DXi.
(unassigned)
Add DSSI support.
Make engine parameters controllable through native LV2 and VST handles (auto generated GUIs) thereby enabling automation.
(unassigned)
Change drumkit/midimap via MIDI messages (see
this log)
Instrument preview (i.e., clickable image of the loaded drumkit)
Show visual drumkit preview and drumkit information on selecting a drumkit file in the file browser
Audio preview of drumkit in file browser
Minor Features
Add user control for the variance of the sample selection function
Include or automatically generate midnam files for users who do not enjoy the lv2 extension which automatically changes the note names.
Little cute drumkit in inline display where the drums light up when corresponding note is played.
Enable unit-tests on (at least) win64
(deva has a patch…)
Make DrumkitCreator cross-platform:
-
Make our own wav header parser for the MemChecker kit size calculation.
(chaot4)
-
Fix win32 window size when embedded.
Re-enable (and fix) partial rendering in win32.
Store streamer settings as system defaults in plugingui.ini for use with new plugin instances.
(unassigned)
Make FileBrowser allways-on-top of parent window.
(unassigned)
Make FileBrowser open near parent window.
(unassigned)
Make sure we return handle to the newly created window in VST.
(deva)
Add samplerate (and other info) to the drumkit pages.
(unassigned)
Option for async_load (-a) has wrong number of channels.
(meka)
Remove or fix async load in CLI.
(unsassigned)
Make lv2 unittest run without needing “make install”.
(unassigned)
Reduce compile time by using more forward declarations.
(unassigned)
Print help when drumgizmo CLI interface is called without arguments.
(unassigned)
Make jack output module use getBuffer to re-use the internal jack buffer internally in the engine.
(unassigned)
Make it possible to connect lambdas (or just functions) to Notifiers.
(unassigned)
Evaluate the benefits of “
chunk interleaving” in the kit wav files instead of channel interleaving as we use today (make speed comparison tests).
(unassigned)
Add connect methods to Listener base class instead of the current C macro.
(unassigned)
Refactoring on PowerList (midifile-refactor branch)
(cglocke)
Make midimap load only happen through setting settings.midimap_file in MidifileInputEngine.
Create new Engine class and move all audio-inner-loop code there to better indicate where we can use blocking calls/locks and where we can't.
(deva)
-
Make unit tests run on OSX.
Use common bin-version for plugins (VST: setUniqueID() and LV2: ttl:microVersion and ttl:minorVersion)
Remove instrument name from instrument files, since it is used by the drumkit to map through midimap.
(unassigned)
cli client tasks:
BUG: Make midi file reader playback speed use actual samplerate.
(unassigned)
Make rendering progress in cli client when rendering midi file to wav.
(suhr)
Make player position output in cli client
(suhr)
Make it possible to set engine configuration parameters (humanizer, etc…) in cli client.
(unassigned)
Cli modules not compiled in shouldn't be in the help text or man page.
(unassigned)
Make cli HowTo.
(muldjord)
Discuss the option of dynamically loading fewer velocity layers as an extra feature to reach a smaller memory footprint when loading a kit (suggested by user “magda”, ask muldjord for more info).
(unassigned)
-
Somehow make runtime detection for sse optimizations.
(unassigned)
Lock memory to prevent page faults: POSIX: mlock()/munlock(), Windows: VirtualLock()/VirtualUnlock()
Run sord_validate as part of unit test.
(unassigned)
Add PUGL
GUI backend. (Hvad/hvordan? En stor opgave, udskyd)
(suhr)
Add list of previously selected drumkits. (Fjern, se ovenfor)
(suhr)
Think gui-configuration window (Udskyd)
Initial state of the plugin should be configurable through some kind og global configuration.
(muldjord,suhr,deva)
When first loading a kit, the initial path should be a “drum kit path”.
Initial settings for humanizer and relating values should be configurable.
Store history of drumkits.
Choose loaded instruments in
GUI
Update README file
Present downloadable drumkits to the user through the UI.
(unassigned)
'git:/ /' support for annonymous pull.
(unassigned)
Add keyboard shortcuts to UI (Escape → filebrowser, tab → jump to next element)
(unassigned)
-
ENGINE: When recieving midi input, make it possible to restrict it to a certain midi channel (0-16?). As reported by “swbeeton” on irc on 22may2014. Ardour can output to only one midi channel so it is possible to have both a keyboard and an electronic drumkit connected on the same midi interface. But since DrumGizmo recieves input on all channels, it also reacts to the midi keyboard input.
Look at Aubio for beat onset detection.
(unassigned)
Add bypass button in the
GUI reflected in the DAW
lv2. It should disable the engine entirely not just mute the outputs.
(unassigned)
Split up
GUI engine code and plugin
GUI implementation.
(unassigned)
Make support for
SFZ (archive.org) (original, broken
link) format, either directly or as a converter (look at calfbox).
(suhr)
Display if
OSS is enabled by default based on host
OS.
(meka)
Completed Features/Roadmap
Version 0.9.16
Version 0.9.15
Version 0.9.14 (LAC 2017 version)
May 14th 2017
Bugfix release
General:
Don't put .a and .la files in lv2 folder on install. (deva)
Can't fix:
Fix install error when there are spaces in the directory path. (deva)
Version 0.9.13
Version 0.9.12
January 18th 2017
Bugfix release
Fix semaphore EINT assertion in MusE (
deva).
Fix atomic link check - always link with atomic (
deva).
Draw boxes instead of nothing when trying to render characters not in the font map. (
Muldjord).
Extend character map to include full latin1 character set. (
Muldjord).
Fix FreeBSD issues: (
meka/deva/chaot).
Fix unit tests:

test_lv2.test1 (deva)

MemCheckerTest.small_drumkit (deva)

MemCheckerTest.check_free_ram (deva)

SemaphoreTest.timeoutTest (NOTE: Threshold simply increased in test due to worse timeout precision on FreeBSD!)

RandomTest.rangeTest (chaot)

Fix –with-debug
(-Wl,-undefined,error
not supported with clang) (deva)
-
Algorithmically generate the test .wav files to be able to run the tests also with the tarball (
chaot).
Fix missing “mouse-up” events when runnnig lv2 plugin on linux in a JUCE based host (Helio or Tracktion) (
chaot).
-
-
Version 0.9.11
October 29th 2016
Engine refactoring release.
Version 0.9.10
Version 0.9.9
Version 0.9.8.1
Hotfix release
Fix nasty resampling buffer offset bug (deva)
Version 0.9.8
Version 0.9.7
Version 0.9.6
Version 0.9.5 (LAC2014 version)
Version 0.9.4
Bugfix release
Released March 5th 2014.
Version 0.9.3
Old stuff