From 7bade1a24f6fa725148d5c7fb66d267b05b0e333 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Tue, 6 Jul 2004 12:17:14 +0000 Subject: Bass boost removed in favour of some new sound settings: Super bass and five new MDB parameters: strength, harmonics, center, shape and enable git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4839 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/mp3_playback.h | 25 ++++--- firmware/mp3_playback.c | 158 ++++++++++++++++++++++++++++++++--------- 2 files changed, 141 insertions(+), 42 deletions(-) (limited to 'firmware') diff --git a/firmware/export/mp3_playback.h b/firmware/export/mp3_playback.h index ad989a2572..2370614e19 100644 --- a/firmware/export/mp3_playback.h +++ b/firmware/export/mp3_playback.h @@ -26,7 +26,10 @@ /* functions formerly in mpeg.c */ void mp3_init(int volume, int bass, int treble, int balance, - int loudness, int bass_boost, int avc, int channel_config); + int loudness, int avc, int channel_config, + int mdb_strength, int mdb_harmonics, + int mdb_center, int mdb_shape, bool mdb_enable, + bool superbass); void mpeg_sound_set(int setting, int value); int mpeg_sound_min(int setting); int mpeg_sound_max(int setting); @@ -35,6 +38,7 @@ void mpeg_sound_channel_config(int configuration); int mpeg_val2phys(int setting, int value); char *mpeg_sound_unit(int setting); int mpeg_sound_numdecimals(int setting); +int mpeg_sound_steps(int setting); #if defined(HAVE_MAS3587F) || defined(SIMULATOR) void mpeg_set_pitch(int percent); #endif @@ -63,13 +67,18 @@ unsigned char* mp3_get_pos(void); #define SOUND_TREBLE 2 #define SOUND_BALANCE 3 #define SOUND_LOUDNESS 4 -#define SOUND_SUPERBASS 5 -#define SOUND_AVC 6 -#define SOUND_CHANNELS 7 -#define SOUND_LEFT_GAIN 8 -#define SOUND_RIGHT_GAIN 9 -#define SOUND_MIC_GAIN 10 -#define SOUND_NUMSETTINGS 11 +#define SOUND_AVC 5 +#define SOUND_CHANNELS 6 +#define SOUND_LEFT_GAIN 7 +#define SOUND_RIGHT_GAIN 8 +#define SOUND_MIC_GAIN 9 +#define SOUND_MDB_STRENGTH 10 +#define SOUND_MDB_HARMONICS 11 +#define SOUND_MDB_CENTER 12 +#define SOUND_MDB_SHAPE 13 +#define SOUND_MDB_ENABLE 14 +#define SOUND_SUPERBASS 15 +#define SOUND_NUMSETTINGS 16 #define MPEG_SOUND_STEREO 0 #define MPEG_SOUND_STEREO_NARROW 1 diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c index 5d43458445..b890362776 100644 --- a/firmware/mp3_playback.c +++ b/firmware/mp3_playback.c @@ -68,12 +68,17 @@ static char *units[] = "dB", /* Treble */ "%", /* Balance */ "dB", /* Loudness */ - "%", /* Bass boost */ "", /* AVC */ "", /* Channels */ "dB", /* Left gain */ "dB", /* Right gain */ "dB", /* Mic gain */ + "dB", /* MDB Strength */ + "%", /* MDB Harmonics */ + "Hz", /* MDB Center */ + "Hz", /* MDB Shape */ + "", /* MDB Enable */ + "", /* Super bass */ }; static int numdecimals[] = @@ -83,12 +88,37 @@ static int numdecimals[] = 0, /* Treble */ 0, /* Balance */ 0, /* Loudness */ - 0, /* Bass boost */ 0, /* AVC */ 0, /* Channels */ 1, /* Left gain */ 1, /* Right gain */ 1, /* Mic gain */ + 0, /* MDB Strength */ + 0, /* MDB Harmonics */ + 0, /* MDB Center */ + 0, /* MDB Shape */ + 0, /* MDB Enable */ + 0, /* Super bass */ +}; + +static int steps[] = +{ + 1, /* Volume */ + 1, /* Bass */ + 1, /* Treble */ + 2, /* Balance */ + 1, /* Loudness */ + 1, /* AVC */ + 1, /* Channels */ + 1, /* Left gain */ + 1, /* Right gain */ + 1, /* Mic gain */ + 1, /* MDB Strength */ + 1, /* MDB Harmonics */ + 10, /* MDB Center */ + 10, /* MDB Shape */ + 1, /* MDB Enable */ + 1, /* Super bass */ }; static int minval[] = @@ -103,12 +133,17 @@ static int minval[] = #endif -100, /* Balance */ 0, /* Loudness */ - 0, /* Bass boost */ -1, /* AVC */ 0, /* Channels */ 0, /* Left gain */ 0, /* Right gain */ 0, /* Mic gain */ + 0, /* MDB Strength */ + 0, /* MDB Harmonics */ + 20, /* MDB Center */ + 50, /* MDB Shape */ + 0, /* MDB Enable */ + 0, /* Super bass */ }; static int maxval[] = @@ -123,12 +158,17 @@ static int maxval[] = #endif 100, /* Balance */ 17, /* Loudness */ - 100, /* Bass boost */ 4, /* AVC */ 6, /* Channels */ 15, /* Left gain */ 15, /* Right gain */ 15, /* Mic gain */ + 127, /* MDB Strength */ + 100, /* MDB Harmonics */ + 300, /* MDB Center */ + 300, /* MDB Shape */ + 1, /* MDB Enable */ + 1, /* Super bass */ }; static int defaultval[] = @@ -143,12 +183,17 @@ static int defaultval[] = #endif 0, /* Balance */ 0, /* Loudness */ - 0, /* Bass boost */ 0, /* AVC */ 0, /* Channels */ 8, /* Left gain */ 8, /* Right gain */ 2, /* Mic gain */ + 50, /* MDB Strength */ + 48, /* MDB Harmonics */ + 60, /* MDB Center */ + 90, /* MDB Shape */ + 0, /* MDB Enable */ + 0, /* Super bass */ }; char *mpeg_sound_unit(int setting) @@ -161,6 +206,11 @@ int mpeg_sound_numdecimals(int setting) return numdecimals[setting]; } +int mpeg_sound_steps(int setting) +{ + return steps[setting]; +} + int mpeg_sound_min(int setting) { return minval[setting]; @@ -566,6 +616,11 @@ void set_prescaled_volume(void) #endif /* HAVE_MAS3507D */ #endif /* !SIMULATOR */ +#ifdef HAVE_MAS3587F +unsigned long mdb_shape_shadow = 0; +unsigned long loudness_shadow = 0; +#endif + void mpeg_sound_set(int setting, int value) { #ifdef SIMULATOR @@ -645,30 +700,10 @@ void mpeg_sound_set(int setting, int value) break; #ifdef HAVE_MAS3587F - case SOUND_SUPERBASS: - if (value) { - tmp = MAX(MIN(value * 127 / 100, 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); + loudness_shadow = (loudness_shadow & 0x04) | + (MAX(MIN(value * 4, 0x44), 0) << 8); + mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); break; case SOUND_AVC: @@ -695,7 +730,36 @@ void mpeg_sound_set(int setting, int value) } mas_codec_writereg(MAS_REG_KAVC, tmp); break; -#endif + + case SOUND_MDB_STRENGTH: + mas_codec_writereg(MAS_REG_KMDB_STR, (value & 0x7f) << 8); + break; + + case SOUND_MDB_HARMONICS: + tmp = value * 127 / 100; + mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0x7f) << 8); + break; + + case SOUND_MDB_CENTER: + mas_codec_writereg(MAS_REG_KMDB_FC, (value/10) << 8); + break; + + case SOUND_MDB_SHAPE: + mdb_shape_shadow = (mdb_shape_shadow & 0x02) | ((value/10) << 8); + mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); + break; + + case SOUND_MDB_ENABLE: + mdb_shape_shadow = (mdb_shape_shadow & ~0x02) | (value?2:0); + mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); + break; + + case SOUND_SUPERBASS: + loudness_shadow = (loudness_shadow & ~0x04) | + (value?4:0); + mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); + break; +#endif case SOUND_CHANNELS: mpeg_sound_channel_config(value); break; @@ -832,15 +896,36 @@ void mpeg_set_pitch(int pitch) #endif void mp3_init(int volume, int bass, int treble, int balance, int loudness, - int bass_boost, int avc, int channel_config) + int avc, int channel_config, + int mdb_strength, int mdb_harmonics, + int mdb_center, int mdb_shape, bool mdb_enable, + bool superbass) { #ifdef SIMULATOR - volume = bass = treble = balance = loudness - = bass_boost = avc = channel_config; + (void)volume; + (void)bass; + (void)treble; + (void)balance; + (void)loudness; + (void)avc; + (void)channel_config; + (void)mdb_strength; + (void)mdb_harmonics; + (void)mdb_center; + (void)mdb_shape; + (void)mdb_enable; + (void)superbass; #else #ifdef HAVE_MAS3507D unsigned long val; - loudness = bass_boost = avc; + (void)loudness; + (void)avc; + (void)mdb_strength; + (void)mdb_harmonics; + (void)mdb_center; + (void)mdb_shape; + (void)mdb_enable; + (void)superbass; #endif setup_sci0(); @@ -929,8 +1014,13 @@ void mp3_init(int volume, int bass, int treble, int balance, int loudness, #ifdef HAVE_MAS3587F mpeg_sound_channel_config(channel_config); mpeg_sound_set(SOUND_LOUDNESS, loudness); - mpeg_sound_set(SOUND_SUPERBASS, bass_boost); mpeg_sound_set(SOUND_AVC, avc); + mpeg_sound_set(SOUND_MDB_STRENGTH, mdb_strength); + mpeg_sound_set(SOUND_MDB_HARMONICS, mdb_harmonics); + mpeg_sound_set(SOUND_MDB_CENTER, mdb_center); + mpeg_sound_set(SOUND_MDB_SHAPE, mdb_shape); + mpeg_sound_set(SOUND_MDB_ENABLE, mdb_enable); + mpeg_sound_set(SOUND_SUPERBASS, superbass); #endif #endif /* !SIMULATOR */ -- cgit v1.2.3