This is an old revision of the document!


Release Notes for DrumGizmo-0.9.17

Roadmap: version_0917

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:

  • Improved sample selection algorithm.
  • Clicky-kit feature.
  • Midnam support.
  • Directed choke functionality.
  • Drumkit metadata support.
  • Experimental Cocoa UI support for MacOSX.

Also some bug fixes and a lot of code refactoring (replaced eXpat with pugixml for one).

Improved Sample Selection Algorithm

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:

  • Close: It should be pretty close to the velocity that we actually want.
  • Diverse: However, it also shouldn't be a sample that we selected very recently, as this would sound unrealistic.
  • Random: Even if it selects different samples, it shouldn't have any repeating patterns in the selected samples. Thus, it should be somewhat randomized.
  • Equal Probability: Intuitively, the more samples a drumkit has, the more realistic it should sound. However, for this to be true, we also have to use all of the samples that are available. Thus, if two samples have a similar velocity, then we want them to be equally likely to be selected.

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:

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. For a more in-depth discussion about the new sample algorithm, see this pdf which will be updated in the future.

Now, try it out and tell us what you think! :)

Read a more in-depth description of the new algorithm and how it works its magicmath in this document.

Clicky-Kit Feature

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>

Midnam Support in LV2

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.

Directed Choke Functionality

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>

Drumkit Metadata

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>

Experimental Cocoa UI support for MacOSX

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.

Other Minor Changes and Bugfixes

Set Default Path

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.

Compile-time Configure Number of Outputs

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 possible to make customized versions of the plugin exposing for example more than 16 channels. The default remains 16.

dgvalidator - drumkit validation tool

A new tool, dgvalidator, has been added for performing xml, semantic and audiofile validation of drumkits from the commandline.

Fix Cache Limit Storage

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.

changelog/drumgizmo-0.9.17.1562406228.txt.gz · Last modified: 2019/07/06 11:43 by deva
Trace: drumgizmo-0.9.17
GNU Free Documentation License 1.3
Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0