Freedrum midi commands. V6
Some of you techies out there will be happy to hear that Freedrum can be controlled via standard MIDI messages. There are a few, per-sensor, global settings that are set via MIDI CC messages along with per-zone (zone==pad or drum) settings.
Don’t forget that, depending on how you send these values you might need to add the standard 2-byte MIDI header to the data. Usually 0x8080 works fine for that.
Also note that none of these values are guaranteed to be stay the same forever. They are valid for v3 of the firmware but we don’t promise more than that.
When writing the below CC values, you get return values in the form of CC 21. It carries the following possible value byes:
- 0 ok
- 1 badChannel
- 2 gyroWarning. Gyro maxed out, play softer dude!
- 3 unknown CC. Strange command sent to sensor.
- 4 general error
“Global” settings (affecting all zones of a sensor)
Sent when the sensor moves to another zone, value is the zone number
With CC 20 you can send a few commands to Freedrum. The commands are sent in the “value” byte of the midi message.
- value=0 : Save settings. Without this command, any settings you’ve set with the other CC’s are lost when the sensor is turned off.
- value=1 : Factory reset. Resets sensor zones to the default 6-zone setup.
Emitted when sensor changes reference drum.
Sets the sensitivity of the sensor. This value is sort of an amplification factor: If you need to strike too hard to get a loud sound/velocity with a sensor, this is the value to tweak. Defaults to 10. For a foot pedal it’s often better to set it higher, at 30 or so.
This is the lowest hit strength at which the sensor will generate midi on notes at all. Set it higher if you get a lot of false hits (notes when you were not intending to hit anything.)
default value: 12
This one affects how quickly the reference drum adjusts the drumkit. The reference drum is the currently most played drum/zone and it’s used to eliminate drift. Each hit on the reference drum slightly orients the kit towards an angle where the reference drum is in a good position in its zone. This is to prevent gyro drifting. As long as you hit the reference drum now and then, the kit will remain stable and not turn.
This value determines how many pad hits we look at for determining what is a good reference drum. The higher this value, the less often we switch between reference drums.
How accurately do we need to hit the ref drum in y-axis to get prediction of hit time? 0 means turn off this kind of prediction.
There are also settings for the different pads/zones of the sensor. As of v3 of the firmware there are 6 different zones. The MIDI channel represents the zone (ranging from 0-15). By default zone 0 is the hihat, 1 is the snare etc.
Sets the midi note to send for this zone/pad.
With this one you can set the angle of a specific zone. Keep in mind that midi values range from 0-126, we scale this so that 126=360deg. By default, the drums on the lower layer (hihat, snare, floor tom) are at y=0deg and the upper layer (cymbals etc) are at y=50deg
The z-axis is the one point up from earth. By default, the snare is at z=0deg.
When you set this > 0 the sensor begins to stream x axis values as CC 107 messages. Values come at a rate of about 10/second.
To read one of the values from above, send CC 22 with value set to the corresponding CC. The sensor will answer with the currently set value for that parameter. Use the channel as zone number where applicable.
We also have a few MIDI Sysex messages. Sysex are sent as
0xf0 0x04 0xf7 - enter bootloader (for firmware update)
0xf0 0x05 0xf7 - turn off
If you for example want to change the snare to a cymbal (midi note 57) you would send this in one midi message:
0x8080 //midi header, omitted depending on transport protocol
0xB1 // MIDI CC + channel 1 because the snare is in zone 1
0x6A // CC 106, midiNoteForPad above
0x39 // note 57
As a response we get
0x15 // CC 21, “status”
0x0 // ok