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_KPRESCALE 0xe7
|
||||||
#define MAS_REG_KBASS 0x6b
|
#define MAS_REG_KBASS 0x6b
|
||||||
#define MAS_REG_KTREBLE 0x6f
|
#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
|
* MAS commands
|
||||||
|
|
|
@ -56,21 +56,30 @@ static char *units[] =
|
||||||
{
|
{
|
||||||
"%", /* Volume */
|
"%", /* Volume */
|
||||||
"dB", /* Bass */
|
"dB", /* Bass */
|
||||||
"dB" /* Treble */
|
"dB", /* Treble */
|
||||||
|
"", /* Balance */
|
||||||
|
"dB", /* Loudness */
|
||||||
|
"%" /* Bass boost */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int numdecimals[] =
|
static int numdecimals[] =
|
||||||
{
|
{
|
||||||
0, /* Volume */
|
0, /* Volume */
|
||||||
0, /* Bass */
|
0, /* Bass */
|
||||||
0 /* Treble */
|
0, /* Treble */
|
||||||
|
0, /* Balance */
|
||||||
|
0, /* Loudness */
|
||||||
|
0 /* Bass boost */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int minval[] =
|
static int minval[] =
|
||||||
{
|
{
|
||||||
0, /* Volume */
|
0, /* Volume */
|
||||||
0, /* Bass */
|
0, /* Bass */
|
||||||
0 /* Treble */
|
0, /* Treble */
|
||||||
|
0, /* Balance */
|
||||||
|
0, /* Loudness */
|
||||||
|
0 /* Bass boost */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int maxval[] =
|
static int maxval[] =
|
||||||
|
@ -78,11 +87,14 @@ static int maxval[] =
|
||||||
50, /* Volume */
|
50, /* Volume */
|
||||||
#ifdef ARCHOS_RECORDER
|
#ifdef ARCHOS_RECORDER
|
||||||
24, /* Bass */
|
24, /* Bass */
|
||||||
24 /* Treble */
|
24, /* Treble */
|
||||||
#else
|
#else
|
||||||
30, /* Bass */
|
30, /* Bass */
|
||||||
30 /* Treble */
|
30, /* Treble */
|
||||||
#endif
|
#endif
|
||||||
|
100, /* Balance */
|
||||||
|
17, /* Loudness */
|
||||||
|
10 /* Bass boost */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int defaultval[] =
|
static int defaultval[] =
|
||||||
|
@ -90,11 +102,14 @@ static int defaultval[] =
|
||||||
70/2, /* Volume */
|
70/2, /* Volume */
|
||||||
#ifdef ARCHOS_RECORDER
|
#ifdef ARCHOS_RECORDER
|
||||||
12+6, /* Bass */
|
12+6, /* Bass */
|
||||||
12+6 /* Treble */
|
12+6, /* Treble */
|
||||||
#else
|
#else
|
||||||
15+7, /* Bass */
|
15+7, /* Bass */
|
||||||
15+7 /* Treble */
|
15+7, /* Treble */
|
||||||
#endif
|
#endif
|
||||||
|
50, /* Balance */
|
||||||
|
0, /* Loudness */
|
||||||
|
0 /* Bass boost */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *mpeg_sound_unit(int setting)
|
char *mpeg_sound_unit(int setting)
|
||||||
|
@ -965,6 +980,34 @@ void mpeg_sound_set(int setting, int value)
|
||||||
set_prescaled_volume();
|
set_prescaled_volume();
|
||||||
#endif
|
#endif
|
||||||
break;
|
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 */
|
#endif /* SIMULATOR */
|
||||||
}
|
}
|
||||||
|
@ -994,18 +1037,30 @@ int mpeg_val2phys(int setting, int value)
|
||||||
result = value - 15;
|
result = value - 15;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef ARCHOS_RECORDER
|
||||||
|
case SOUND_LOUDNESS:
|
||||||
|
result = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SOUND_SUPERBASS:
|
||||||
|
result = value * 10;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return result;
|
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
|
#ifdef SIMULATOR
|
||||||
volume = bass = treble;
|
volume = bass = treble = loudness = bass_boost;
|
||||||
#else
|
#else
|
||||||
#ifdef ARCHOS_RECORDER
|
#ifdef ARCHOS_RECORDER
|
||||||
int rc;
|
int rc;
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
|
#else
|
||||||
|
loudness = bass_boost;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
setup_sci0();
|
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_BASS, bass);
|
||||||
mpeg_sound_set(SOUND_TREBLE, treble);
|
mpeg_sound_set(SOUND_TREBLE, treble);
|
||||||
mpeg_sound_set(SOUND_VOLUME, volume);
|
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 */
|
#endif /* SIMULATOR */
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#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_play(char* trackname);
|
||||||
void mpeg_stop(void);
|
void mpeg_stop(void);
|
||||||
void mpeg_pause(void);
|
void mpeg_pause(void);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue