Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
strokeanalysis:stroke_analysis [2013/02/03 19:16] – [Conclusion] devastrokeanalysis:stroke_analysis [2013/02/21 12:35] (current) deva
Line 4: Line 4:
 Two types of analysis are performed: Two types of analysis are performed:
   * A single hard kick drum stroke.   * A single hard kick drum stroke.
-  * A series of strokes at high tempo.+  * A series of strokes at relatively high tempo (resembling approx 200bpm kickdrum  roll).
  
 These two types of strokes are the result of very different playing styles and should cover the most basic uses of the kick drum in metal music. These two types of strokes are the result of very different playing styles and should cover the most basic uses of the kick drum in metal music.
  
-The experiment was performed on an Axis Longboard pedal only, but should for good measure be performed on other types of pedals too.+The experiment was performed on an Axis Longboard pedal only, but should for good measure be performed on other types of pedals too sometime in the future...
  
-A movie was made with 200fps and the 10-20 frames containing each of the two stroke types were subtracted. A couple of examples can be seen here (click to enlarge):\\+A movie was recorded with 220fps and the 10-20 frames containing each of the two stroke types were subtracted. A couple of examples can be seen here (click to enlarge):\\
 {{:strokeanalysis:s00.png?160|}} {{:strokeanalysis:s00.png?160|}}
 {{:strokeanalysis:s05.png?160|}} {{:strokeanalysis:s05.png?160|}}
 {{:strokeanalysis:s11.png?160|}} {{:strokeanalysis:s11.png?160|}}
 {{:strokeanalysis:s16.png?160|}}\\ {{:strokeanalysis:s16.png?160|}}\\
-Note the white dots on the center-of-axis as well on the mallet. These were added in order to be able to identify their exact position in the frame. +Note the white dots on the center-of-axis as well on the mallet. These were added in order to be able to identify the exact mallet and origo positions in each image.
- +
- +
-====Single stroke==== +
-^ Position ^ Vector     ^ Length   ^ Angle     ^ Angle diff ^ Angle speed       ^ +
-| 0        | (-255,391) | 466.80px | 0.000000  | 0.000000   | 0.000000    dgr/s | +
-| 1        | (-247,394) | 465.02px | 1.027597  | 1.027597   | 205.519334  dgr/s | +
-| 2        | (-235,405) | 468.24px | 2.987024  | 1.959427   | 391.885459  dgr/s | +
-| 3        | (-210,420) | 469.57px | 6.546291  | 3.559267   | 711.853364  dgr/s | +
-| 4        | (-176,440) | 473.89px | 11.309932 | 4.763642   | 952.728338  dgr/s | +
-| 5        | (-134,458) | 477.20px | 16.803111 | 5.493178   | 1098.635630 dgr/s | +
-| 6        | ( -74,480) | 485.67px | 24.347241 | 7.544131   | 1508.826102 dgr/s | +
-| 7        | (  -6,491) | 491.04px | 32.411225 | 8.063984   | 1612.796717 dgr/s | +
-| 8        | (  73,493) | 498.38px | 41.534099 | 9.122874   | 1824.574854 dgr/s | +
-| 9        | ( 146,480) | 501.71px | 50.029355 | 8.495256   | 1699.051165 dgr/s | +
-| 10       | ( 232,451) | 507.17px | 60.333194 | 10.303839  | 2060.767896 dgr/s | +
-| 11       | ( 240,446) | 506.47px | 61.396774 | 1.063580   | 212.715922  dgr/s | +
-| 12       | ( 229,452) | 506.70px | 59.979810 | -1.416964  | -283.392753 dgr/s | +
  
 +====Meaurements====
 +===Single stroke===
 +^ Position ^ Vector     ^ Length (px) ^ Angle (dgr) ^ Angle diff (dgr) ^ Angle speed (dgr/s) ^
 +| 0 | (-255,391) | 466.80 | 0.00  | 0.00 | 0.00 |
 +| 1 | (-247,394) | 465.02 | 1.03  | 1.03 | 226.07 |
 +| 2 | (-235,405) | 468.24 | 2.99  | 1.96 | 431.07 |
 +| 3 | (-210,420) | 469.57 | 6.55  | 3.56 | 783.04 |
 +| 4 | (-176,440) | 473.89 | 11.31  | 4.76 | 1048.00 |
 +| 5 | (-134,458) | 477.20 | 16.80  | 5.49 | 1208.50 |
 +| 6 | (-74,480) | 485.67 | 24.35  | 7.54 | 1659.71 |
 +| 7 | (-6,491) | 491.04 | 32.41  | 8.06 | 1774.08 |
 +| 8 | (73,493) | 498.38 | 41.53  | 9.12 | 2007.03 |
 +| 9 | (146,480) | 501.71 | 50.03  | 8.50 | 1868.96 |
 +| 10 | (232,451) | 507.17 | 60.33  | 10.30 | 2266.84 |
 +| 11 | (240,446) | 506.47 | 61.40  | 1.06 | 233.99 |
 +| 12 | (229,452) | 506.70 | 59.98  | -1.42 | -311.73 |
 A plot of the angle velocities reveal a rather 'jaggy' picture:\\ A plot of the angle velocities reveal a rather 'jaggy' picture:\\
 {{:strokeanalysis:single-graph.png?nolink|}} {{:strokeanalysis:single-graph.png?nolink|}}
  
-====Stroke sequence==== +===Stroke sequence=== 
-^ Position ^ Vector     ^ Length   ^ Angle     ^ Angle diff ^ Angle speed       +^ Position ^ Vector     ^ Length (px) ^ Angle (dgr) ^ Angle diff (dgr) ^ Angle speed (dgr/s) 
-| 0        | (-381,215) | 437.48px | 0.000000  | 0.000000   | 0.000000    dgr/s +| 0        | (-255,391) | 466.80 | 0.000000  | 0.000000   | 0.000000    | 
-| 1        | (-370,236) | 438.86px 3.095041  3.095041   | 619.008128  dgr/s +| 1        | (-247,394) | 465.02 1.027597  1.027597   | 205.519334  | 
-| 2        | (-356,267) | 445.00px 7.433667  4.338626   | 867.725183  dgr/s +| 2        | (-235,405) | 468.24 2.987024  1.959427   | 391.885459  | 
-| 3        | (-331,304) | 449.42px 13.129037 5.695370   | 1139.074084 dgr/s +| 3        | (-210,420) | 469.57 6.546291  3.559267   | 711.853364  
-| 4        | (-298,346) | 456.64px 19.826380 6.697343   | 1339.468612 dgr/s +| 4        | (-176,440) | 473.89 11.309932 4.763642   | 952.728338  
-| 5        | (-255,389) | 465.13px 27.317846 7.491466   | 1498.293157 dgr/s +| 5        | (-134,458) | 477.20 16.803111 5.493178   | 1098.635630 
-| 6        | (-203,425) | 470.99px 35.032433 | 7.714587   | 1542.917345 dgr/s +| 6        | ( -74,480) | 485.67 24.347241 | 7.544131   | 1508.826102 
-| 7        | (-144,458) | 480.10px 43.110075 | 8.077642   | 1615.528448 dgr/s +| 7        | (  -6,491) | 491.04 32.411225 | 8.063984   | 1612.796717 
-| 8        | ( -78,483) | 489.26px 51.390233 8.280159   | 1656.031738 dgr/s +| 8        | (  73,493) | 498.38 41.534099 9.122874   | 1824.574854 
-| 9        | ( -14,494) | 494.20px 58.940436 7.550203   | 1510.040583 dgr/s +| 9        | ( 146,480) | 501.71 50.029355 8.495256   | 1699.051165 
-| 10       | (  54,496) | 498.93px 66.777144 7.836708   1567.341558 dgr/s +| 10       | ( 232,451) | 507.17 60.333194 10.303839  2060.767896 
-| 11       | ( 110,492) | 504.15px 73.166538 6.389394   | 1277.878850 dgr/s +| 11       | ( 240,446) | 506.47 61.396774 1.063580   | 212.715922  
-| 12       | ( 162,483) | 509.44px 79.105414 | 5.938875   | 1187.775047 dgr/s | +| 12       | ( 229,452) | 506.70 59.979810 | -1.416964  | -283.392753 
-| 13       | ( 198,468) | 508.16px | 83.495869 | 4.390456   | 878.091137  dgr/s | +
-| 14       | ( 216,464) | 511.81px | 85.526559 | 2.030689   | 406.137879  dgr/s | +
-| 15       | ( 210,467) | 512.04px | 84.776208 | -0.750351  | -150.070120 dgr/s |+
 The graph of these angle velocities show a picture rather more 'smooth' than the one rendered from the single stroke:\\ The graph of these angle velocities show a picture rather more 'smooth' than the one rendered from the single stroke:\\
 {{:strokeanalysis:sequence-graph.png?nolink|}} {{:strokeanalysis:sequence-graph.png?nolink|}}
Line 60: Line 56:
 ====Evaluation===== ====Evaluation=====
 ===Samplerate=== ===Samplerate===
-The maximum angle velocity was found in the single stroke and was 2061 degrees per second.+The maximum angle velocity was found in the single stroke and was 2266.84 degrees per second.
 That the maximum angle velocity should be found in the stroke type is not surprising since a single stroke is the result of the hardest foot impact on the pedal.\\ That the maximum angle velocity should be found in the stroke type is not surprising since a single stroke is the result of the hardest foot impact on the pedal.\\
  
-If we assume the target latency to be at most 1ms and we assume that the software is responding in the area of microseconds we can estimate the target ADC resolution.\\ +If we assume the target latency to be at most 1ms and we assume that the software is responding in the area of microseconds and therefore negligible we can estimate the target ADC sampling resolution.\\ 
-Lets start by pointing out that since the video framerate was 200fps each frame represent a state in 5ms intervals; ie. we are looking for something around at least 5 times more accurate.\\+Lets start by pointing out that since the video framerate was 220fps each frame represent a state in 4.55ms intervals; ie. we are looking for something around at least 5 times more accurate.\\
  
-The single stroke took 11 frames in total which is 55ms and during this time the mallet moved 61.4 degrees, resulting in a minimum resolution of 1.12 samplings per millisecond.+The single stroke took 11 frames in total which is 50ms and during this time the mallet moved 61.4 degrees, resulting in a minimum resolution of 1.23 samplings per millisecond.
  
-However, if we look at the diff in the last two velocities before the impact it was 10.3 degrees in 5ms it is evident that the minimum resolution should be higher, namely 2.06 samplings per millisecond.+However, if we look at the diff in the last two velocities before the impact it was 10.3 degrees in 4.55ms it is evident that the minimum resolution should be higher, namely 2.26 samplings per millisecond.
  
-Ergo: **A sampling of 2kHz should be sufficient.**+Ergo: **A sampling of approximately 2kHz should be sufficient.**
  
-//However// ... the result of this mechanism is the playing of a sample at probably 44.1kHz or 48kHz and in order to avoid phasing problems when mixing with the analogue drumsound it should be considered to make the ADC samplerate 44.1kHz or 48kHz as well.+//However// ... the result of this mechanism is the playing of a sample at probably 44.1kHz or 48kHz and in order to avoid phasing problems when mixing with the analogue drum sound it should be considered to make the ADC samplerate 44.1kHz or 48kHz as well.
  
 ===Bit precision=== ===Bit precision===
-Lets again look at the highest angle velocity and extrapolate the number of sample values needed to describe each of the in between steps with a minimum step range of 1ms.+When considering bit precision it is the lowest angle velocity upon impact that are the worst case scenario. 
 +If we therefore look at the stroke sequence we can observe a 2.03 degrees between the last two frames, giving 0.446 degrees in the last millisecond. 
 +If we divide the entire 84 degree interval into 0.446 degree segments the result is a minimum of 188 steps.
  
-Between the last two frames (5ms) there are an angle diff of 10.3 degrees, ie. 2.06 degrees in the last millisecond before impact. +Ergo: **A bit precision of 8 should be sufficient.**
-If we divide the entire 84 degree (maximum angle span observed in the stroke sequence, not the single stroke) interval into 2.06 degree segments the result is a minimum of 40 steps.+
  
-Ergo: **A bit precision of 6 should be sufficient.** +//However// ... since we cannot assume that we will work within the entirety of the bit span of the ADC it should be noted that the bit precision is the //used// number of bits for the mallet swing and a substantial amount of headroom should be added in order to match different spring types and initial tensions.
- +
-//However// ... since we cannot assume that we will work within the entirety of the bit span of the ADC it should be noted that the bit precision is the //used// number of bits for the mallet swing and a substantial amount of headroom should be added in order to match different spring types and tensions.+
 How much 'substantial' is in this case I am not able to evaluate in this article. How much 'substantial' is in this case I am not able to evaluate in this article.
  
Line 88: Line 83:
 Since this experiment has not been performed by the fastest or hardest hitting drummer in the world, or the most latency sensitive one for that matter, we should increase both samplerate and bit precision in order to make sure all drummers are covered. Since this experiment has not been performed by the fastest or hardest hitting drummer in the world, or the most latency sensitive one for that matter, we should increase both samplerate and bit precision in order to make sure all drummers are covered.
  
-If say the drummer hits twice as hard (double the angle velocity) and cannot accept latency at more than 0.1ms the calculations from above will be:\\+If say the drummer hits twice as hard (double the angle velocity) and cannot accept latency at more than 0.5ms the calculations from above will be:\\ 
 + 
 +Samplerate: 2 * 2.03 degrees in 4.55ms = **8kHz sampling** (but still it should be considered to use 44.1kHz or 48kHz to avoid phasing problems)\\
  
-Samplerate: 20.6 degrees in 5ms = 4kHz sampling (still considering 44.1kHz or 48kHz to avoid phasing problems)\\+A very slow stroke is the worst case scenario when considering the bit precision since we need more steps in the final steps of the swing. 
 +If say the angle velocity is half of the measured one and the drummer is sensitive to latencies above 0.5ms the number of needed steps will go up by factor of 4:
  
-Bit precision: 80 steps = bit precision + headroom.\\+Bit precision: 188 * 4 steps = **10 bit precision** + headroom.\\
strokeanalysis/stroke_analysis.1359915360.txt.gz · Last modified: by deva
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0