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 */
|
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,14 +129,15 @@ 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);
|
||||||
lcd_putsxy((LCD_WIDTH-w)/2, 0, ptr);
|
lcd_putsxy((LCD_WIDTH-w)/2, 0, ptr);
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue