forked from len0rd/rockbox
Pitch steps changed to 0.1% instead of 1%.
Holding down ON+RIGHT/LEFT increases/decreses pitch 2% while key is held down, then returns. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2718 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
8ca78b6665
commit
0834d3f322
2 changed files with 44 additions and 14 deletions
|
|
@ -116,12 +116,10 @@ void usb_screen(void)
|
|||
2 if USB was connected */
|
||||
int on_screen(void)
|
||||
{
|
||||
static int pitch = 100;
|
||||
static int pitch = 1000;
|
||||
bool exit = false;
|
||||
bool used = false;
|
||||
|
||||
lcd_setfont(FONT_SYSFIXED);
|
||||
|
||||
while (!exit) {
|
||||
|
||||
if ( used ) {
|
||||
|
|
@ -131,6 +129,7 @@ int on_screen(void)
|
|||
|
||||
lcd_scroll_pause();
|
||||
lcd_clear_display();
|
||||
lcd_setfont(FONT_SYSFIXED);
|
||||
|
||||
ptr = str(LANG_PITCH_UP);
|
||||
lcd_getstringsize(ptr,&w,&h);
|
||||
|
|
@ -138,7 +137,7 @@ int on_screen(void)
|
|||
lcd_bitmap(bitmap_icons_7x8[Icon_UpArrow],
|
||||
LCD_WIDTH/2 - 3, h*2, 7, 8, true);
|
||||
|
||||
snprintf(buf, sizeof buf, "%d%%", pitch);
|
||||
snprintf(buf, sizeof buf, "%d.%d%%", pitch / 10, pitch % 10 );
|
||||
lcd_getstringsize(buf,&w,&h);
|
||||
lcd_putsxy((LCD_WIDTH-w)/2, h, buf);
|
||||
|
||||
|
|
@ -165,8 +164,8 @@ int on_screen(void)
|
|||
case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
|
||||
used = true;
|
||||
pitch++;
|
||||
if ( pitch > 200 )
|
||||
pitch = 200;
|
||||
if ( pitch > 2000 )
|
||||
pitch = 2000;
|
||||
#ifdef HAVE_MAS3587F
|
||||
mpeg_set_pitch(pitch);
|
||||
#endif
|
||||
|
|
@ -177,8 +176,8 @@ int on_screen(void)
|
|||
case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
|
||||
used = true;
|
||||
pitch--;
|
||||
if ( pitch < 50 )
|
||||
pitch = 50;
|
||||
if ( pitch < 500 )
|
||||
pitch = 500;
|
||||
#ifdef HAVE_MAS3587F
|
||||
mpeg_set_pitch(pitch);
|
||||
#endif
|
||||
|
|
@ -199,6 +198,34 @@ int on_screen(void)
|
|||
exit = true;
|
||||
break;
|
||||
|
||||
case BUTTON_ON | BUTTON_RIGHT:
|
||||
if ( pitch < 2000 ) {
|
||||
pitch += 20;
|
||||
mpeg_set_pitch(pitch);
|
||||
}
|
||||
break;
|
||||
|
||||
case BUTTON_RIGHT | BUTTON_REL:
|
||||
if ( pitch > 500 ) {
|
||||
pitch -= 20;
|
||||
mpeg_set_pitch(pitch);
|
||||
}
|
||||
break;
|
||||
|
||||
case BUTTON_ON | BUTTON_LEFT:
|
||||
if ( pitch > 500 ) {
|
||||
pitch -= 20;
|
||||
mpeg_set_pitch(pitch);
|
||||
}
|
||||
break;
|
||||
|
||||
case BUTTON_LEFT | BUTTON_REL:
|
||||
if ( pitch < 2000 ) {
|
||||
pitch += 20;
|
||||
mpeg_set_pitch(pitch);
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef SIMULATOR
|
||||
case BUTTON_ON:
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -1985,16 +1985,19 @@ void mpeg_sound_channel_config(int configuration)
|
|||
#ifdef HAVE_MAS3587F
|
||||
/* This function works by telling the decoder that we have another
|
||||
crystal frequency than we actually have. It will adjust its internal
|
||||
parameters and the result is that the audio is played at another pitch */
|
||||
void mpeg_set_pitch(int percent)
|
||||
parameters and the result is that the audio is played at another pitch.
|
||||
|
||||
The pitch value is in tenths of percent.
|
||||
*/
|
||||
void mpeg_set_pitch(int pitch)
|
||||
{
|
||||
unsigned long val;
|
||||
|
||||
/* invert percent value */
|
||||
percent = 10000/percent;
|
||||
/* invert pitch value */
|
||||
pitch = 1000000/pitch;
|
||||
|
||||
/* Calculate the new (bogus) frequency */
|
||||
val = 18432*percent/100;
|
||||
val = 18432*pitch/1000;
|
||||
|
||||
mas_writemem(MAS_BANK_D0,0x7f3,&val,1);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue