diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/action.h | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-gigabeat.c | 5 | ||||
-rw-r--r-- | apps/keymaps/keymap-h10.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-h1x0_h3x0.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ipod.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-ondio.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-recorder.c | 1 | ||||
-rw-r--r-- | apps/keymaps/keymap-x5.c | 1 | ||||
-rw-r--r-- | apps/lang/english.lang | 28 | ||||
-rw-r--r-- | apps/screens.c | 170 |
10 files changed, 170 insertions, 40 deletions
diff --git a/apps/action.h b/apps/action.h index c096abf880..d3da152e35 100644 --- a/apps/action.h +++ b/apps/action.h | |||
@@ -187,6 +187,7 @@ enum { | |||
187 | ACTION_PS_NUDGE_RIGHT, | 187 | ACTION_PS_NUDGE_RIGHT, |
188 | ACTION_PS_NUDGE_LEFTOFF, | 188 | ACTION_PS_NUDGE_LEFTOFF, |
189 | ACTION_PS_NUDGE_RIGHTOFF, | 189 | ACTION_PS_NUDGE_RIGHTOFF, |
190 | ACTION_PS_TOGGLE_MODE, | ||
190 | ACTION_PS_RESET, | 191 | ACTION_PS_RESET, |
191 | ACTION_PS_EXIT, /* _STD_* isnt going to work here */ | 192 | ACTION_PS_EXIT, /* _STD_* isnt going to work here */ |
192 | 193 | ||
diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c index 9822049214..e248e2c4db 100644 --- a/apps/keymaps/keymap-gigabeat.c +++ b/apps/keymaps/keymap-gigabeat.c | |||
@@ -216,8 +216,9 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
216 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 216 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
217 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 217 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
218 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 218 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
219 | { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE }, | 219 | { ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE }, |
220 | { ACTION_PS_EXIT, BUTTON_A, BUTTON_NONE }, | 220 | { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE }, |
221 | { ACTION_PS_EXIT, BUTTON_A, BUTTON_NONE }, | ||
221 | 222 | ||
222 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | 223 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) |
223 | }; /* button_context_pitchcreen */ | 224 | }; /* button_context_pitchcreen */ |
diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c index 45dde38844..b1355568ec 100644 --- a/apps/keymaps/keymap-h10.c +++ b/apps/keymaps/keymap-h10.c | |||
@@ -254,6 +254,7 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
254 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_REW|BUTTON_REL, BUTTON_NONE }, | 254 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_REW|BUTTON_REL, BUTTON_NONE }, |
255 | { ACTION_PS_NUDGE_RIGHT, BUTTON_FF, BUTTON_NONE }, | 255 | { ACTION_PS_NUDGE_RIGHT, BUTTON_FF, BUTTON_NONE }, |
256 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_FF|BUTTON_REL, BUTTON_NONE }, | 256 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_FF|BUTTON_REL, BUTTON_NONE }, |
257 | { ACTION_PS_TOGGLE_MODE, BUTTON_POWER, BUTTON_NONE }, | ||
257 | { ACTION_PS_RESET, BUTTON_PLAY, BUTTON_NONE }, | 258 | { ACTION_PS_RESET, BUTTON_PLAY, BUTTON_NONE }, |
258 | { ACTION_PS_EXIT, BUTTON_LEFT, BUTTON_NONE }, | 259 | { ACTION_PS_EXIT, BUTTON_LEFT, BUTTON_NONE }, |
259 | 260 | ||
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c index 7eaccc96a7..7793669d33 100644 --- a/apps/keymaps/keymap-h1x0_h3x0.c +++ b/apps/keymaps/keymap-h1x0_h3x0.c | |||
@@ -226,6 +226,7 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
226 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 226 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
227 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 227 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
228 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 228 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
229 | { ACTION_PS_TOGGLE_MODE, BUTTON_MODE, BUTTON_NONE }, | ||
229 | { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, | 230 | { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, |
230 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, | 231 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, |
231 | 232 | ||
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c index be5429d65b..e0268e29ca 100644 --- a/apps/keymaps/keymap-ipod.c +++ b/apps/keymaps/keymap-ipod.c | |||
@@ -143,6 +143,7 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
143 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 143 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
144 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 144 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
145 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 145 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
146 | { ACTION_PS_TOGGLE_MODE, BUTTON_SELECT, BUTTON_NONE }, | ||
146 | { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE }, | 147 | { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE }, |
147 | { ACTION_PS_EXIT, BUTTON_SELECT, BUTTON_NONE }, | 148 | { ACTION_PS_EXIT, BUTTON_SELECT, BUTTON_NONE }, |
148 | 149 | ||
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c index defc4e3762..bc92fc47ba 100644 --- a/apps/keymaps/keymap-ondio.c +++ b/apps/keymaps/keymap-ondio.c | |||
@@ -125,6 +125,7 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
125 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 125 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
126 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 126 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
127 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 127 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
128 | { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | ||
128 | { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE }, | 129 | { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE }, |
129 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, | 130 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, |
130 | 131 | ||
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c index 718fddf888..cc09b90bfd 100644 --- a/apps/keymaps/keymap-recorder.c +++ b/apps/keymaps/keymap-recorder.c | |||
@@ -150,6 +150,7 @@ static const struct button_mapping button_context_pitchscreen[] = { | |||
150 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 150 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
151 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 151 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
152 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 152 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
153 | { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE }, | ||
153 | { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, | 154 | { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE }, |
154 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, | 155 | { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE }, |
155 | 156 | ||
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c index 2bfa48c517..4b5b74dced 100644 --- a/apps/keymaps/keymap-x5.c +++ b/apps/keymaps/keymap-x5.c | |||
@@ -138,6 +138,7 @@ const struct button_mapping button_context_pitchscreen[] = { | |||
138 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 138 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
139 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | 139 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, |
140 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | 140 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, |
141 | { ACTION_PS_TOGGLE_MODE, BUTTON_SELECT, BUTTON_NONE }, | ||
141 | { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE }, | 142 | { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE }, |
142 | { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE }, | 143 | { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE }, |
143 | 144 | ||
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 0b463f58c0..8d050a72bf 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -9375,6 +9375,34 @@ | |||
9375 | </voice> | 9375 | </voice> |
9376 | </phrase> | 9376 | </phrase> |
9377 | <phrase> | 9377 | <phrase> |
9378 | id: LANG_SYSFONT_PITCH_UP_SEMITONE | ||
9379 | desc: in wps | ||
9380 | user: | ||
9381 | <source> | ||
9382 | *: "Semitone Up" | ||
9383 | </source> | ||
9384 | <dest> | ||
9385 | *: "Semitone Up" | ||
9386 | </dest> | ||
9387 | <voice> | ||
9388 | *: "" | ||
9389 | </voice> | ||
9390 | </phrase> | ||
9391 | <phrase> | ||
9392 | id: LANG_SYSFONT_PITCH_DOWN_SEMITONE | ||
9393 | desc: in wps | ||
9394 | user: | ||
9395 | <source> | ||
9396 | *: "Semitone Down" | ||
9397 | </source> | ||
9398 | <dest> | ||
9399 | *: "Semitone Down" | ||
9400 | </dest> | ||
9401 | <voice> | ||
9402 | *: "" | ||
9403 | </voice> | ||
9404 | </phrase> | ||
9405 | <phrase> | ||
9378 | id: LANG_SYSFONT_F2_MODE | 9406 | id: LANG_SYSFONT_F2_MODE |
9379 | desc: in wps F2 pressed | 9407 | desc: in wps F2 pressed |
9380 | user: | 9408 | user: |
diff --git a/apps/screens.c b/apps/screens.c index b81932b941..50f1055f90 100644 --- a/apps/screens.c +++ b/apps/screens.c | |||
@@ -362,11 +362,23 @@ int charging_screen(void) | |||
362 | #endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING */ | 362 | #endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING */ |
363 | 363 | ||
364 | #ifdef HAVE_PITCHSCREEN | 364 | #ifdef HAVE_PITCHSCREEN |
365 | |||
366 | #define PITCH_MAX 2000 | ||
367 | #define PITCH_MIN 500 | ||
368 | #define PITCH_SMALL_DELTA 1 | ||
369 | #define PITCH_BIG_DELTA 10 | ||
370 | #define PITCH_NUDGE_DELTA 20 | ||
371 | |||
372 | #define PITCH_MODE_ABSOLUTE 1 | ||
373 | #define PITCH_MODE_SEMITONE -PITCH_MODE_ABSOLUTE | ||
374 | |||
375 | static int pitch_mode = PITCH_MODE_ABSOLUTE; /* 1 - absolute, -1 - semitone */ | ||
376 | |||
365 | /* returns: | 377 | /* returns: |
366 | 0 if no key was pressed | 378 | 0 if no key was pressed |
367 | 1 if USB was connected */ | 379 | 1 if USB was connected */ |
368 | 380 | ||
369 | void pitch_screen_draw(struct screen *display, int pitch) | 381 | void pitch_screen_draw(struct screen *display, int pitch, int pitch_mode) |
370 | { | 382 | { |
371 | unsigned char* ptr; | 383 | unsigned char* ptr; |
372 | unsigned char buf[32]; | 384 | unsigned char buf[32]; |
@@ -385,14 +397,22 @@ void pitch_screen_draw(struct screen *display, int pitch) | |||
385 | { | 397 | { |
386 | 398 | ||
387 | /* UP: Pitch Up */ | 399 | /* UP: Pitch Up */ |
388 | ptr = str(LANG_SYSFONT_PITCH_UP); | 400 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
401 | ptr = str(LANG_SYSFONT_PITCH_UP); | ||
402 | } else { | ||
403 | ptr = str(LANG_SYSFONT_PITCH_UP_SEMITONE); | ||
404 | } | ||
389 | display->getstringsize(ptr,&w,&h); | 405 | display->getstringsize(ptr,&w,&h); |
390 | display->putsxy((display->width-w)/2, 0, ptr); | 406 | display->putsxy((display->width-w)/2, 0, ptr); |
391 | display->mono_bitmap(bitmap_icons_7x8[Icon_UpArrow], | 407 | display->mono_bitmap(bitmap_icons_7x8[Icon_UpArrow], |
392 | display->width/2 - 3, h, 7, 8); | 408 | display->width/2 - 3, h, 7, 8); |
393 | 409 | ||
394 | /* DOWN: Pitch Down */ | 410 | /* DOWN: Pitch Down */ |
395 | ptr = str(LANG_SYSFONT_PITCH_DOWN); | 411 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
412 | ptr = str(LANG_SYSFONT_PITCH_DOWN); | ||
413 | } else { | ||
414 | ptr = str(LANG_SYSFONT_PITCH_DOWN_SEMITONE); | ||
415 | } | ||
396 | display->getstringsize(ptr,&w,&h); | 416 | display->getstringsize(ptr,&w,&h); |
397 | display->putsxy((display->width-w)/2, display->height - h, ptr); | 417 | display->putsxy((display->width-w)/2, display->height - h, ptr); |
398 | display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow], | 418 | display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow], |
@@ -426,10 +446,83 @@ void pitch_screen_draw(struct screen *display, int pitch) | |||
426 | display->update(); | 446 | display->update(); |
427 | } | 447 | } |
428 | 448 | ||
449 | static int pitch_increase(int pitch, int delta, | ||
450 | bool allow_cutoff, bool redraw_screens) { | ||
451 | int new_pitch; | ||
452 | int i; | ||
453 | |||
454 | if (delta < 0) { | ||
455 | if (pitch + delta >= PITCH_MIN) { | ||
456 | new_pitch = pitch + delta; | ||
457 | } else { | ||
458 | if (!allow_cutoff) { | ||
459 | return pitch; | ||
460 | } | ||
461 | new_pitch = PITCH_MIN; | ||
462 | } | ||
463 | } else if (delta > 0) { | ||
464 | if (pitch + delta <= PITCH_MAX) { | ||
465 | new_pitch = pitch + delta; | ||
466 | } else { | ||
467 | if (!allow_cutoff) { | ||
468 | return pitch; | ||
469 | } | ||
470 | new_pitch = PITCH_MAX; | ||
471 | } | ||
472 | } else { | ||
473 | /* delta == 0 -> no real change */ | ||
474 | return pitch; | ||
475 | } | ||
476 | sound_set_pitch(new_pitch); | ||
477 | |||
478 | if (redraw_screens) { | ||
479 | FOR_NB_SCREENS(i) | ||
480 | pitch_screen_draw(&screens[i], pitch, pitch_mode); | ||
481 | } | ||
482 | |||
483 | return new_pitch; | ||
484 | } | ||
485 | |||
486 | /* Factor for changing the pitch one half tone up. | ||
487 | The exact value is 2^(1/12) = 1.05946309436 | ||
488 | But we use only integer arithmetics, so take | ||
489 | rounded factor multiplied by 10^5=100,000. This is | ||
490 | enough to get the same promille values as if we | ||
491 | had used floating point (checked with a spread | ||
492 | sheet). | ||
493 | */ | ||
494 | #define PITCH_SEMITONE_FACTOR 105946L | ||
495 | |||
496 | /* Some helpful constants. K is the scaling factor for SEMITONE. | ||
497 | N is for more accurate rounding | ||
498 | KN is K * N | ||
499 | */ | ||
500 | #define PITCH_K_FCT 100000UL | ||
501 | #define PITCH_N_FCT 10 | ||
502 | #define PITCH_KN_FCT 1000000UL | ||
503 | |||
504 | static int pitch_increase_semitone(int pitch, bool up) { | ||
505 | uint32_t tmp; | ||
506 | uint32_t round_fct; /* How much to scale down at the end */ | ||
507 | tmp = pitch; | ||
508 | if (up) { | ||
509 | tmp = tmp * PITCH_SEMITONE_FACTOR; | ||
510 | round_fct = PITCH_K_FCT; | ||
511 | } else { | ||
512 | tmp = (tmp * PITCH_KN_FCT) / PITCH_SEMITONE_FACTOR; | ||
513 | round_fct = PITCH_N_FCT; | ||
514 | } | ||
515 | /* Scaling down with rounding */ | ||
516 | tmp = (tmp + round_fct / 2) / round_fct; | ||
517 | return pitch_increase(pitch, tmp - pitch, false, false); | ||
518 | } | ||
519 | |||
429 | bool pitch_screen(void) | 520 | bool pitch_screen(void) |
430 | { | 521 | { |
431 | int button; | 522 | int button; |
432 | int pitch = sound_get_pitch(); | 523 | int pitch = sound_get_pitch(); |
524 | int new_pitch; | ||
525 | bool nudged = false; | ||
433 | bool exit = false; | 526 | bool exit = false; |
434 | int i; | 527 | int i; |
435 | 528 | ||
@@ -441,64 +534,61 @@ bool pitch_screen(void) | |||
441 | while (!exit) | 534 | while (!exit) |
442 | { | 535 | { |
443 | FOR_NB_SCREENS(i) | 536 | FOR_NB_SCREENS(i) |
444 | pitch_screen_draw(&screens[i],pitch); | 537 | pitch_screen_draw(&screens[i], pitch, pitch_mode); |
445 | 538 | ||
446 | button = get_action(CONTEXT_PITCHSCREEN,TIMEOUT_BLOCK); | 539 | button = get_action(CONTEXT_PITCHSCREEN,TIMEOUT_BLOCK); |
447 | switch (button) { | 540 | switch (button) { |
448 | case ACTION_PS_INC_SMALL: | 541 | case ACTION_PS_INC_SMALL: |
449 | if ( pitch < 2000 ) | 542 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
450 | pitch++; | 543 | pitch = pitch_increase(pitch, PITCH_SMALL_DELTA, true, false); |
451 | sound_set_pitch(pitch); | 544 | } else { |
545 | pitch = pitch_increase_semitone(pitch, true); | ||
546 | } | ||
452 | break; | 547 | break; |
453 | 548 | ||
454 | case ACTION_PS_INC_BIG: | 549 | case ACTION_PS_INC_BIG: |
455 | if ( pitch < 1990 ) | 550 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
456 | pitch += 10; | 551 | pitch = pitch_increase(pitch, PITCH_BIG_DELTA, true, false); |
457 | else | 552 | } |
458 | pitch = 2000; | ||
459 | sound_set_pitch(pitch); | ||
460 | break; | 553 | break; |
461 | 554 | ||
462 | case ACTION_PS_DEC_SMALL: | 555 | case ACTION_PS_DEC_SMALL: |
463 | if ( pitch > 500 ) | 556 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
464 | pitch--; | 557 | pitch = pitch_increase(pitch, -PITCH_SMALL_DELTA, true, false); |
465 | sound_set_pitch(pitch); | 558 | } else { |
559 | pitch = pitch_increase_semitone(pitch, false); | ||
560 | } | ||
466 | break; | 561 | break; |
467 | 562 | ||
468 | case ACTION_PS_DEC_BIG: | 563 | case ACTION_PS_DEC_BIG: |
469 | if ( pitch > 510 ) | 564 | if (pitch_mode == PITCH_MODE_ABSOLUTE) { |
470 | pitch -= 10; | 565 | pitch = pitch_increase(pitch, -PITCH_BIG_DELTA, true, false); |
471 | else | 566 | } |
472 | pitch = 500; | ||
473 | sound_set_pitch(pitch); | ||
474 | break; | 567 | break; |
475 | 568 | ||
476 | case ACTION_PS_NUDGE_RIGHT: | 569 | case ACTION_PS_NUDGE_RIGHT: |
477 | if ( pitch < 1980 ) | 570 | new_pitch = pitch_increase(pitch, PITCH_NUDGE_DELTA, false, true); |
478 | { | 571 | nudged = (new_pitch != pitch); |
479 | pitch += 20; | 572 | pitch = new_pitch; |
480 | sound_set_pitch(pitch); | ||
481 | FOR_NB_SCREENS(i) | ||
482 | pitch_screen_draw(&screens[i],pitch); | ||
483 | } | ||
484 | break; | 573 | break; |
485 | case ACTION_PS_NUDGE_RIGHTOFF: | 574 | case ACTION_PS_NUDGE_RIGHTOFF: |
486 | pitch -= 20; | 575 | if (nudged) { |
487 | sound_set_pitch(pitch); | 576 | pitch = pitch_increase(pitch, -PITCH_NUDGE_DELTA, false, false); |
577 | } | ||
578 | nudged = false; | ||
488 | break; | 579 | break; |
489 | 580 | ||
490 | case ACTION_PS_NUDGE_LEFT: | 581 | case ACTION_PS_NUDGE_LEFT: |
491 | if ( pitch > 520 ) | 582 | new_pitch = pitch_increase(pitch, -PITCH_NUDGE_DELTA, false, true); |
492 | { | 583 | nudged = (new_pitch != pitch); |
493 | pitch -= 20; | 584 | pitch = new_pitch; |
494 | sound_set_pitch(pitch); | ||
495 | FOR_NB_SCREENS(i) | ||
496 | pitch_screen_draw(&screens[i],pitch); | ||
497 | } | ||
498 | break; | 585 | break; |
586 | |||
499 | case ACTION_PS_NUDGE_LEFTOFF: | 587 | case ACTION_PS_NUDGE_LEFTOFF: |
500 | pitch += 20; | 588 | if (nudged) { |
501 | sound_set_pitch(pitch); | 589 | pitch = pitch_increase(pitch, PITCH_NUDGE_DELTA, false, false); |
590 | } | ||
591 | nudged = false; | ||
502 | break; | 592 | break; |
503 | 593 | ||
504 | case ACTION_PS_RESET: | 594 | case ACTION_PS_RESET: |
@@ -506,6 +596,10 @@ bool pitch_screen(void) | |||
506 | sound_set_pitch( pitch ); | 596 | sound_set_pitch( pitch ); |
507 | break; | 597 | break; |
508 | 598 | ||
599 | case ACTION_PS_TOGGLE_MODE: | ||
600 | pitch_mode = -pitch_mode; | ||
601 | break; | ||
602 | |||
509 | case ACTION_PS_EXIT: | 603 | case ACTION_PS_EXIT: |
510 | exit = true; | 604 | exit = true; |
511 | break; | 605 | break; |