1
0
Fork 0
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:
Björn Stenberg 2002-10-18 12:05:15 +00:00
parent 8ca78b6665
commit 0834d3f322
2 changed files with 44 additions and 14 deletions

View file

@ -116,12 +116,10 @@ void usb_screen(void)
2 if USB was connected */ 2 if USB was connected */
int on_screen(void) int on_screen(void)
{ {
static int pitch = 100; static int pitch = 1000;
bool exit = false; bool exit = false;
bool used = false; bool used = false;
lcd_setfont(FONT_SYSFIXED);
while (!exit) { while (!exit) {
if ( used ) { if ( used ) {
@ -131,6 +129,7 @@ int on_screen(void)
lcd_scroll_pause(); lcd_scroll_pause();
lcd_clear_display(); lcd_clear_display();
lcd_setfont(FONT_SYSFIXED);
ptr = str(LANG_PITCH_UP); ptr = str(LANG_PITCH_UP);
lcd_getstringsize(ptr,&w,&h); lcd_getstringsize(ptr,&w,&h);
@ -138,7 +137,7 @@ int on_screen(void)
lcd_bitmap(bitmap_icons_7x8[Icon_UpArrow], lcd_bitmap(bitmap_icons_7x8[Icon_UpArrow],
LCD_WIDTH/2 - 3, h*2, 7, 8, true); 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_getstringsize(buf,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, h, buf); lcd_putsxy((LCD_WIDTH-w)/2, h, buf);
@ -165,8 +164,8 @@ int on_screen(void)
case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT: case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
used = true; used = true;
pitch++; pitch++;
if ( pitch > 200 ) if ( pitch > 2000 )
pitch = 200; pitch = 2000;
#ifdef HAVE_MAS3587F #ifdef HAVE_MAS3587F
mpeg_set_pitch(pitch); mpeg_set_pitch(pitch);
#endif #endif
@ -177,8 +176,8 @@ int on_screen(void)
case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT: case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
used = true; used = true;
pitch--; pitch--;
if ( pitch < 50 ) if ( pitch < 500 )
pitch = 50; pitch = 500;
#ifdef HAVE_MAS3587F #ifdef HAVE_MAS3587F
mpeg_set_pitch(pitch); mpeg_set_pitch(pitch);
#endif #endif
@ -199,6 +198,34 @@ int on_screen(void)
exit = true; exit = true;
break; 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 #ifdef SIMULATOR
case BUTTON_ON: case BUTTON_ON:
#else #else

View file

@ -1985,16 +1985,19 @@ void mpeg_sound_channel_config(int configuration)
#ifdef HAVE_MAS3587F #ifdef HAVE_MAS3587F
/* This function works by telling the decoder that we have another /* This function works by telling the decoder that we have another
crystal frequency than we actually have. It will adjust its internal crystal frequency than we actually have. It will adjust its internal
parameters and the result is that the audio is played at another pitch */ parameters and the result is that the audio is played at another pitch.
void mpeg_set_pitch(int percent)
The pitch value is in tenths of percent.
*/
void mpeg_set_pitch(int pitch)
{ {
unsigned long val; unsigned long val;
/* invert percent value */ /* invert pitch value */
percent = 10000/percent; pitch = 1000000/pitch;
/* Calculate the new (bogus) frequency */ /* Calculate the new (bogus) frequency */
val = 18432*percent/100; val = 18432*pitch/1000;
mas_writemem(MAS_BANK_D0,0x7f3,&val,1); mas_writemem(MAS_BANK_D0,0x7f3,&val,1);