forked from len0rd/rockbox
Loudness and Superbass patch by Heikki Hannikainen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1400 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
6515c1c109
commit
e0d88a11d9
3 changed files with 74 additions and 10 deletions
|
@ -60,6 +60,11 @@
|
|||
#define MAS_REG_KPRESCALE 0xe7
|
||||
#define MAS_REG_KBASS 0x6b
|
||||
#define MAS_REG_KTREBLE 0x6f
|
||||
#define MAS_REG_KMDB_SWITCH 0x21
|
||||
#define MAS_REG_KMDB_STR 0x22
|
||||
#define MAS_REG_KMDB_HAR 0x23
|
||||
#define MAS_REG_KMDB_FC 0x24
|
||||
#define MAS_REG_KLOUDNESS 0x1e
|
||||
|
||||
/*
|
||||
* MAS commands
|
||||
|
|
|
@ -56,21 +56,30 @@ static char *units[] =
|
|||
{
|
||||
"%", /* Volume */
|
||||
"dB", /* Bass */
|
||||
"dB" /* Treble */
|
||||
"dB", /* Treble */
|
||||
"", /* Balance */
|
||||
"dB", /* Loudness */
|
||||
"%" /* Bass boost */
|
||||
};
|
||||
|
||||
static int numdecimals[] =
|
||||
{
|
||||
0, /* Volume */
|
||||
0, /* Bass */
|
||||
0 /* Treble */
|
||||
0, /* Treble */
|
||||
0, /* Balance */
|
||||
0, /* Loudness */
|
||||
0 /* Bass boost */
|
||||
};
|
||||
|
||||
static int minval[] =
|
||||
{
|
||||
0, /* Volume */
|
||||
0, /* Bass */
|
||||
0 /* Treble */
|
||||
0, /* Treble */
|
||||
0, /* Balance */
|
||||
0, /* Loudness */
|
||||
0 /* Bass boost */
|
||||
};
|
||||
|
||||
static int maxval[] =
|
||||
|
@ -78,11 +87,14 @@ static int maxval[] =
|
|||
50, /* Volume */
|
||||
#ifdef ARCHOS_RECORDER
|
||||
24, /* Bass */
|
||||
24 /* Treble */
|
||||
24, /* Treble */
|
||||
#else
|
||||
30, /* Bass */
|
||||
30 /* Treble */
|
||||
30, /* Treble */
|
||||
#endif
|
||||
100, /* Balance */
|
||||
17, /* Loudness */
|
||||
10 /* Bass boost */
|
||||
};
|
||||
|
||||
static int defaultval[] =
|
||||
|
@ -90,11 +102,14 @@ static int defaultval[] =
|
|||
70/2, /* Volume */
|
||||
#ifdef ARCHOS_RECORDER
|
||||
12+6, /* Bass */
|
||||
12+6 /* Treble */
|
||||
12+6, /* Treble */
|
||||
#else
|
||||
15+7, /* Bass */
|
||||
15+7 /* Treble */
|
||||
15+7, /* Treble */
|
||||
#endif
|
||||
50, /* Balance */
|
||||
0, /* Loudness */
|
||||
0 /* Bass boost */
|
||||
};
|
||||
|
||||
char *mpeg_sound_unit(int setting)
|
||||
|
@ -965,6 +980,34 @@ void mpeg_sound_set(int setting, int value)
|
|||
set_prescaled_volume();
|
||||
#endif
|
||||
break;
|
||||
|
||||
#ifdef ARCHOS_RECORDER
|
||||
case SOUND_SUPERBASS:
|
||||
if (value) {
|
||||
tmp = MAX(MIN(value * 12, 0x7f), 0);
|
||||
mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8);
|
||||
tmp = 0x30; /* MDB_HAR: Space for experiment here */
|
||||
mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8);
|
||||
tmp = 60 / 10; /* calculate MDB_FC, 60hz - experiment here,
|
||||
this would depend on the earphones...
|
||||
perhaps make it tunable? */
|
||||
mas_codec_writereg(MAS_REG_KMDB_FC, (tmp & 0xff) << 8);
|
||||
tmp = (3 * tmp) / 2; /* calculate MDB_SHAPE */
|
||||
mas_codec_writereg(MAS_REG_KMDB_SWITCH,
|
||||
((tmp & 0xff) << 8) /* MDB_SHAPE */
|
||||
| 2); /* MDB_SWITCH enable */
|
||||
} else {
|
||||
mas_codec_writereg(MAS_REG_KMDB_STR, 0);
|
||||
mas_codec_writereg(MAS_REG_KMDB_HAR, 0);
|
||||
mas_codec_writereg(MAS_REG_KMDB_SWITCH, 0); /* MDB_SWITCH disable */
|
||||
}
|
||||
break;
|
||||
|
||||
case SOUND_LOUDNESS:
|
||||
tmp = MAX(MIN(value * 4, 0x44), 0);
|
||||
mas_codec_writereg(MAS_REG_KLOUDNESS, (tmp & 0xff) << 8);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
#endif /* SIMULATOR */
|
||||
}
|
||||
|
@ -994,18 +1037,30 @@ int mpeg_val2phys(int setting, int value)
|
|||
result = value - 15;
|
||||
#endif
|
||||
break;
|
||||
|
||||
#ifdef ARCHOS_RECORDER
|
||||
case SOUND_LOUDNESS:
|
||||
result = value;
|
||||
break;
|
||||
|
||||
case SOUND_SUPERBASS:
|
||||
result = value * 10;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void mpeg_init(int volume, int bass, int treble)
|
||||
void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost)
|
||||
{
|
||||
#ifdef SIMULATOR
|
||||
volume = bass = treble;
|
||||
volume = bass = treble = loudness = bass_boost;
|
||||
#else
|
||||
#ifdef ARCHOS_RECORDER
|
||||
int rc;
|
||||
unsigned long val;
|
||||
#else
|
||||
loudness = bass_boost;
|
||||
#endif
|
||||
|
||||
setup_sci0();
|
||||
|
@ -1069,5 +1124,9 @@ void mpeg_init(int volume, int bass, int treble)
|
|||
mpeg_sound_set(SOUND_BASS, bass);
|
||||
mpeg_sound_set(SOUND_TREBLE, treble);
|
||||
mpeg_sound_set(SOUND_VOLUME, volume);
|
||||
#ifdef ARCHOS_RECORDER
|
||||
mpeg_sound_set(SOUND_LOUDNESS, loudness);
|
||||
mpeg_sound_set(SOUND_SUPERBASS, bass_boost);
|
||||
#endif
|
||||
#endif /* SIMULATOR */
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <stdbool.h>
|
||||
|
||||
void mpeg_init(int volume, int bass, int treble);
|
||||
void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost);
|
||||
void mpeg_play(char* trackname);
|
||||
void mpeg_stop(void);
|
||||
void mpeg_pause(void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue