Table of Contents

Hihat Openness Control Feature - Design Document

This document does not describe a feature in DrumGizmo, but is rather a collection of ideas for how a future feature could be implemented.

Concept

Midi drumkits can sometimes send midi events when the hihat pedal position changes.

No standard way exists for how this is done, but two major ways have been observed:

  1. When the hihat is hit, different note-on events are sent depending on openness, and a specific note for when the hihat is completely closed. See MPS-1000 for an example.
  2. When the hihat is hit, the same note-on event is sent, but when the openness changes a midi CC event is sent with the openness parameter. See Alesis Strata Prime or Roland TD-30 for an example. Note: value 0 seem to be fully open, and 127 fully closed

Somehow map these events to control DrumGizmo sample engine in the most natural way possible.

See this forum post for community discussions on this topic.

Requirements

Since no one way exists, the feature should be configurable by the users to make it work with whatever kit they have available.

It should be possible to also use this feature with a DAW, without a drumkit, using “mouse-notation” in the editor.

Idea 1: Sample Control

Extend the features of the sample generation to include openness parameter, similar to the position parameter (see the distance branch in git) of the snaredrum. When a hihat note is played, select the appropriate one from the set.

The openness must be mappable through the midimap file, which needs extending with a new syntax for mapping either notes to “openness” or specify how CC events are mapped to openness.

If a hihat note is being played and the openness changes the following should happen:

  1. The percentage of the current play position is calculated (eg. 40% in)
  2. A new sample is selected from the new “openness group”
  3. A fade-out is activated in the current sample.
  4. The new sample starts playing also 40% into its duration, with a similar fade-in resulting in a cross-fade between the two.

Idea 2: Simple CC mapping

Instead of extending the sample format, reuse what is and simply extend the midi map to be able to map a specific note with different CC values to different samples. Otherwise similar to Idea 1.