summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-09-12 12:25:44 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-09-12 12:25:44 +0000
commit5ed78ea80cdaa0ede4df89568f0781fa477a5738 (patch)
tree0fbd18be15fd91b96e19c689d6e6f6f55a07ed77
parent174f4945f33fb23295559cc77c0763819411c3e3 (diff)
downloadrockbox-5ed78ea80cdaa0ede4df89568f0781fa477a5738.tar.gz
rockbox-5ed78ea80cdaa0ede4df89568f0781fa477a5738.zip
Pitch control for Recorder
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2267 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/mpeg.c20
-rw-r--r--firmware/mpeg.h3
2 files changed, 23 insertions, 0 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 365099129e..ca3ac69692 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -1787,6 +1787,26 @@ void mpeg_sound_channel_config(int configuration)
#endif
}
+#ifdef HAVE_MAS3587F
+/* This function works by telling the decoder that we have another
+ crystal frequency than we actually have. It will adjust its internal
+ parameters and the result is that the audio is played at another pitch */
+void mpeg_set_pitch(int percent)
+{
+ unsigned long val;
+
+ /* Calculate the new (bogus) frequency */
+ val = 18432 + (18432*percent/100);
+
+ mas_writemem(MAS_BANK_D0,0x7f3,&val,1);
+
+ /* We must tell the MAS that the frequency has changed.
+ This will unfortunately cause a short silence. */
+ val = 0x25;
+ mas_writemem(MAS_BANK_D0,0x7f1,&val,1);
+}
+#endif
+
void mpeg_init(int volume, int bass, int treble, int balance, int loudness, int bass_boost, int avc)
{
#ifdef SIMULATOR
diff --git a/firmware/mpeg.h b/firmware/mpeg.h
index f1451227d0..f2a2b38c6c 100644
--- a/firmware/mpeg.h
+++ b/firmware/mpeg.h
@@ -41,6 +41,9 @@ char *mpeg_sound_unit(int setting);
int mpeg_sound_numdecimals(int setting);
struct mp3entry* mpeg_current_track(void);
bool mpeg_has_changed_track(void);
+#ifdef HAVE_MAS3587F
+void mpeg_set_pitch(int percent);
+#endif
#define SOUND_VOLUME 0
#define SOUND_BASS 1