korg_wavedrum_midification
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
korg_wavedrum_midification [2014/03/26 17:21] – moved how to add the library to separate chapter midisaron | korg_wavedrum_midification [2015/02/09 17:55] (current) – [MIDIfying the Wavedrum - Software] Updated Software download midisaron | ||
---|---|---|---|
Line 39: | Line 39: | ||
====MIDIfying the Wavedrum - Software==== | ====MIDIfying the Wavedrum - Software==== | ||
- | {{: | + | {{: |
==Capturing the head's and the rim's signals== | ==Capturing the head's and the rim's signals== | ||
The ADC takes a sample every 50 microseconds. When idle, the head piezo, the rim piezos and the force sensor are sampled in turns. When a trigger on the head or on the rim is detected, i. e. a threshold is crossed, the force sensor is temporarily not sampled until 64 samples on the triggered channel (head or rim) are recorded and the event is processed. During that time the non-triggered channel (i. e. head if rim is triggered and vice versa) can still be triggered, so " | The ADC takes a sample every 50 microseconds. When idle, the head piezo, the rim piezos and the force sensor are sampled in turns. When a trigger on the head or on the rim is detected, i. e. a threshold is crossed, the force sensor is temporarily not sampled until 64 samples on the triggered channel (head or rim) are recorded and the event is processed. During that time the non-triggered channel (i. e. head if rim is triggered and vice versa) can still be triggered, so " | ||
Line 58: | Line 58: | ||
===Processing the signals=== | ===Processing the signals=== | ||
After 64 samples of the head or rim signal have been captured, a FFT (Fast Fourier Transform) on these samples is performed. This results in 33 (usable) frequency bins representing the spectrum of the signal. I did not program the FFT myself but took it from NXP' | After 64 samples of the head or rim signal have been captured, a FFT (Fast Fourier Transform) on these samples is performed. This results in 33 (usable) frequency bins representing the spectrum of the signal. I did not program the FFT myself but took it from NXP' | ||
- | [[http:// | + | [[http:// |
I think it's amazing that the humble LPC1769 can calculate a 64-points-FFT so quickly that the delay is not noticable (at least to me). There are countless ways how the result of a FFT can be used. For the head signal, the high frequency components are stronger when the head is hit with a harder object (drumstick rather than hand), and when it's hit closer to the rim. This way a crude position detection is possible.\\ | I think it's amazing that the humble LPC1769 can calculate a 64-points-FFT so quickly that the delay is not noticable (at least to me). There are countless ways how the result of a FFT can be used. For the head signal, the high frequency components are stronger when the head is hit with a harder object (drumstick rather than hand), and when it's hit closer to the rim. This way a crude position detection is possible.\\ | ||
Only the absolute values of the complex frequency bin values are used. The correct formula would be | Only the absolute values of the complex frequency bin values are used. The correct formula would be | ||
Line 73: | Line 73: | ||
===MIDI=== | ===MIDI=== | ||
This picture shows how the signals from the sensors are processed and converted to MIDI messages. At the same time this is how the SoundDiver editor window looks like: | This picture shows how the signals from the sensors are processed and converted to MIDI messages. At the same time this is how the SoundDiver editor window looks like: | ||
+ | |||
{{: | {{: | ||
Line 89: | Line 90: | ||
Various user-settable parameters can be transmitted to the software via MIDI Sysex messages. The bulk dump format is as follows: | Various user-settable parameters can be transmitted to the software via MIDI Sysex messages. The bulk dump format is as follows: | ||
- | $F0 $7D $57 $44 $4D $49 $20 $02 $00 $00 //$0h $0l....$0h $0l// $F7 | + | $F0 $7D $57 $44 $4D $49 $20 $02 $00 $00 //$0l $0h....$0l |
- | The //$0h $0l....$0h $0l// part designates a block of 512 MIDI bytes. These represent 256 parameter bytes ((as in SYSEX_FORMAT 1 in tutorial 025)) which are listed in the table below (numbered from 0 to 255). Some parameters are 16-bit, in these cases the LSByte is sent first.\\ | + | The //$0l $0h....$0l |
When the software receives such a message, the parameters are updated. The internal settings can be requested with a dump request: | When the software receives such a message, the parameters are updated. The internal settings can be requested with a dump request: | ||
korg_wavedrum_midification.1395854489.txt.gz · Last modified: 2014/03/26 17:21 by midisaron