diff options
| author | erdgeist <erdgeist@bauklotz.fritz.box> | 2018-04-16 15:59:54 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@bauklotz.fritz.box> | 2018-04-16 15:59:54 +0200 |
| commit | fd0cea2ce5b43f04e9d2abcecc2a1e6b8bb95c73 (patch) | |
| tree | bddd8fa40736eca31a72dfe3cb30a5804997bb6d /engine.c | |
| parent | ed5ec5c193630c230e4a4d3a1a8b0f218381511b (diff) | |
Rework when to play notes in attack
Diffstat (limited to 'engine.c')
| -rw-r--r-- | engine.c | 11 |
1 files changed, 4 insertions, 7 deletions
| @@ -311,7 +311,7 @@ engine_handle_point(LPoint * p, uint32_t monotime) | |||
| 311 | // test if difference is less than g_settled_dist percent of | 311 | // test if difference is less than g_settled_dist percent of |
| 312 | // line segment length | 312 | // line segment length |
| 313 | dt = monotime - s->first_time_seen; | 313 | dt = monotime - s->first_time_seen; |
| 314 | if (dt > 10 && abs(s->last_off - offs) < g_settled_dist) { | 314 | if (dt > g_settled_timedelta && abs(s->last_off - offs) < g_settled_dist) { |
| 315 | s->playing = string_is_playing; | 315 | s->playing = string_is_playing; |
| 316 | 316 | ||
| 317 | // estimated energy of hand is dv/dt from first seen to settled | 317 | // estimated energy of hand is dv/dt from first seen to settled |
| @@ -322,11 +322,7 @@ engine_handle_point(LPoint * p, uint32_t monotime) | |||
| 322 | speed = 64 + speed / 4000; | 322 | speed = 64 + speed / 4000; |
| 323 | if (speed > 127) speed = 127; | 323 | if (speed > 127) speed = 127; |
| 324 | midi_playnote(s->channel, s->note, s->octave, speed); | 324 | midi_playnote(s->channel, s->note, s->octave, speed); |
| 325 | |||
| 326 | /* XXX TODO report speed as midi command */ | ||
| 327 | s->start_off = offs; | ||
| 328 | } | 325 | } |
| 329 | s->octave = oct; | ||
| 330 | s->last_off = offs; | 326 | s->last_off = offs; |
| 331 | break; | 327 | break; |
| 332 | case string_is_playing: | 328 | case string_is_playing: |
| @@ -353,6 +349,7 @@ engine_handle_point(LPoint * p, uint32_t monotime) | |||
| 353 | break; | 349 | break; |
| 354 | } | 350 | } |
| 355 | s->last_time_seen = monotime; | 351 | s->last_time_seen = monotime; |
| 352 | s->seen_but_unchecked = 1; | ||
| 356 | } | 353 | } |
| 357 | 354 | ||
| 358 | void | 355 | void |
| @@ -368,11 +365,10 @@ engine_checksilence(uint32_t monotime) | |||
| 368 | continue; | 365 | continue; |
| 369 | 366 | ||
| 370 | // Play notes in attack that are not visible anymore | 367 | // Play notes in attack that are not visible anymore |
| 371 | if (s->playing == string_is_in_attack && (monotime - s->last_time_seen) > 5) { | 368 | if (s->playing == string_is_in_attack && !s->seen_but_unchecked ) { |
| 372 | int speed, dv, dt = monotime - s->first_time_seen; | 369 | int speed, dv, dt = monotime - s->first_time_seen; |
| 373 | if (!dt) ++dt; | 370 | if (!dt) ++dt; |
| 374 | s->playing = string_is_playing; | 371 | s->playing = string_is_playing; |
| 375 | s->current_pitch = 0; | ||
| 376 | 372 | ||
| 377 | // estimated energy of hand is dv/dt from first seen to settled | 373 | // estimated energy of hand is dv/dt from first seen to settled |
| 378 | dv = abs(s->start_off - s->last_off); | 374 | dv = abs(s->start_off - s->last_off); |
| @@ -390,5 +386,6 @@ engine_checksilence(uint32_t monotime) | |||
| 390 | midi_silencenote(s->channel, s->note, s->octave); | 386 | midi_silencenote(s->channel, s->note, s->octave); |
| 391 | s->playing = string_is_silent; | 387 | s->playing = string_is_silent; |
| 392 | } | 388 | } |
| 389 | s->seen_but_unchecked = 0; | ||
| 393 | } | 390 | } |
| 394 | } | 391 | } |
