This is an old revision of the document!
DRAFT
Roadmap: version_0917
NOTE TO AUTHORS: Insert video like this:
640x360
NOTE TO AUTHORS: Insert audio like this:
640x32
END OF NOTE
In this release we tried to jam in as many of our planned changes to the xml as possible. There are still a few more to go but this release has brought a large step closer to our feature-complete xml format. We have also added a few new big features which are much more directly visible to the users.
Highlights:
Also some bug fixes and a lot of code refactoring (replaced eXpat with pugixml for one).
On a high level DrumGizmo works as follows: It gets a MIDI note as input which consists of a note value (pitch) and the hardness of the hit (velocity). The pitch tells us which instrument (e.g., snare, bass drum, hi-hat, …) should be played and the velocity tells us which of all the samples we have for this instrument should be played. Our aim is to make the drums sound as realistic as possible, and therefore we want to make sure that we select “the right” sample.
Until now, DrumGizmo's sample selection method unfortunately did not perform as well as we hoped and it was time to implement a new one. So, let us first think about what “the right sample” has to fulfill:
While we always want the last point to be true, there is a trade-off between the first three points. Therefore, you can control them in the new sample selection panel! Here is how it looks:
Now let us have a look and listen how the sample selection in DrumGizmo changed from the old to the new version.
SWEEP EXPERIMENT
DIFFERENT VALUES FOR CLOSENESS AND AVOID RECENT
A last note: By setting the power value of groups of samples to the same value when creating a drumkit, and then turning Close all the way up and Diverse a little bit up when using it, we obtain a round robin drumkit. So, our sample selection algorithm is more general and can thus be used very flexibly.
Try it out and tell us what you think! :)
The clicky-kit feature add the option to audition (and even play) the loaded drumkit. Not all kits supports this feature yet and the “Drumkit” tab will only show up in the plugin UI if the drumkit contains a clickmap. If a mapopes area is clicked with the mouse the corresponding instrument will be activated. The velocity can be controlled by using the scroll-wheel. The current value can be seen at the bottom of the window. While the mouse is hovering the mapped area it will light up and the name of the instrument will be shown next to the velocity at the bottom of the window.
In order to support this feature in new drumkits an image tag must be present in the metadata section.
If only the src
attribute is specified the “Drumkit” tab will simply show that image but not be clickable.
In order to add click-map data a second image must be constructed with the same dimensions as the source image and where clickable areas are all coloured with a unique colour of the authors choice.
Each colour is then specified in the clickmap
tags as RGB hex codes alongside with the name of the instrument it must trigger.
This approach makes it possible to trigger on virtually anything in the image.
<?xml version="1.0" encoding="UTF-8"?> <drumkit ...> <metadata> ... <image src="DrumkitImage.png" map="DrumkitImageClickMap.png"> <clickmap colour="ff08a2" instrument="China"/> <clickmap colour="a218d7" instrument="HihatClosed"/> </image> </metadata> ... </drumkit>
The LV2 standard has a midnam extension which enables the plugins to (among other things) to give names to their midinotes. This make it possible for DrumGizmo to tell the LV2 host the names of the instruments in the midimap file which the host then can show on the piano-roll or inside the midieditor. The example below is taken from Ardour.
This particular feature was conceived by the help of Robin Gareus.
This feature expands on the group feature in the previous versions. Choking is the option for one instrument to perform a (controlled) mute another when activated. The old groups were simply used to tie together instruments in the drumkit file so that when one instrument were being played in the group all others would be muted. Consider for example the three instruments “Hihat Open”, “Hihat Closed” and “Hihat Foot” - putting all of these into the “Hihat” group would then make “Hihat Closed” stop any playing “Hihat Open” samples thereby simulating a real hihat. This feature proved to be rather limited since all instruments in the group would always be affected and we therefore decided to introduced “directed chokes” to give more control over which instruments are being affected and when. Directed chokes add a list of choke-instruments to each instrument node that will be choked when the instrument is being played but not the other way round. This makes it possible to have “Hihat Open”, “Hihat Half Open” and “Hihat Foot” and have “Hihat Foot” choke “Hihat Open” and “Hihat Half Open” without “Hihat Open” and “Hihat Half Open” affecting each other as they would have if they were simply put into a group. Futhermore it is possible to set the choketime on a pr. choke basis. Leaving the attribute out will use the default which is 68ms. The XML for the choke section looks like this:
<?xml version="1.0" encoding="UTF-8"?> <drumkit ...> ... <instruments> ... <instrument name="Hihat Foot" file="HihatFoot/HihatFoot.xml"> <chokes> <choke instrument="Hihat Half Open" choketime="100"/><!-- override the default 68ms with 100ms --> <choke instrument="Hihat Open"/> </chokes> ... </instrument> ... </instruments> </drumkit>
It is now possible to add all sorts of meta information to the drumkits. Most of it is not yet used by the engine but it will be in the coming releases. Expect for example to see the logo in the UI and the drumkit URL as a direct link.
<?xml version="1.0" encoding="UTF-8"?> <drumkit ...> <metadata> <version>1.2.3</version> <title>Test Kit</title> <logo src="LogoFile.png"/> <description>This is the description of the drumkit</description> <license>Creative Commons</license> <notes>These are general notes concerning anything of relevance for this particular version of the drumkit</notes> <author>Author of the drumkit</author> <email>author@email.org</email> <website>http://www.drumgizmo.org</website> <image src="DrumkitImage.png" map="DrumkitImageClickMap.png"> <clickmap colour="ff08a2" instrument="China"/> <clickmap colour="a218d7" instrument="HihatClosed"/> </image> </metadata> <channels> <channel name="AmbL"> <title>Ambience left</title> </channel> ... </channels> ... </drumkit>
Well; an image says more than a 1000 words ;) As this feature is highly experimental we do not yet supply .dmg files for it, so users who wants to give it a try will have to compile the VST themselves. Instructions on how to do this can be found at our development pages.
A new button “Set default path” has been added to the filebrowser.
Clicking this button will store the current directory in the settings and new instances of the plugin will then open file browser in this directory. Thsi should make it much faster to browse to a drumkit if for example all drumkits are stored in a common drumkit folder.
When compiling drumgizmo from sources it is now possible to control how many outputs are exposed by the engine using an argument to the configure step:
--enable-custom-channel-count=count Compile with specified number of output channels [default=16]
This will make it possibler to make customized versions of the plugin exposing for example more than 16 channels. The default remains 16.
A new tool, dgvalidator, has been added for performing xml, semantic and audiofile validation of drumkits from the commandline.
In previous versions when setting the disk-stream cache limit above 2GB it would erroneously be set to unlimited when reloading the session. This bug has now been fixed.