Re: Possible bug in WAV export
- To: mathgroup at smc.vnet.net
- Subject: [mg87838] Re: Possible bug in WAV export
- From: m.r at inbox.ru
- Date: Fri, 18 Apr 2008 02:41:17 -0400 (EDT)
- References: <ftsd0o$ba7$1@smc.vnet.net> <ftv8on$7kv$1@smc.vnet.net>
On Apr 15, 4:51 am, Szabolcs <szhor... at gmail.com> wrote:
> On Apr 14, 11:39 am, Jerry <Jer75... at yahoo.com> wrote:
>
> > The sound in Mathematica and the sound from the exported WAV file
> > (using some unknown player) seem the same to me. I'm using
> > V6.02 on a XP box.
>
> I experimented some more and it turns out that the problem is not
> limited to WAV (it is present with FLAC and AIFF too). However, the
> problem only appears randomly, and not in each evaluation. The
> following command does not always give the same result:
>
> ImportString[
> ExportString[
> Play[Sum[Sin[2 Pi 440 k t], {k, 1, 4}], {t, 0, 1},
> SampleRate -> 44100, SampleDepth -> 16], "WAV"], "WAV"]
>
> In about 20 or so evaluations I always get a few incorrect results.
> It is not even necessary to play the sound---it is possible to see the
> difference by looking at the spectra:
>
> Table[ImportString[
> ExportString[
> Play[Sum[Sin[2 Pi 440 k t], {k, 1, 4}], {t, 0, 1},
> SampleRate -> 44100, SampleDepth -> 16], "WAV"], "WAV"],
> {20}]
>
> Can anyone else reproduce this problem? It is very strange that the
> result is not deterministic. Any ideas why this might happen?
>
> To demonstrate that this unbelievable thing really happens, here's an
> another example, together with the result. Note that the very same
> command returns different results in subsequent evaluations:
>
> In[1]:=
> Table[
> Total[#[[1, 1, 1]]] &@
> ImportString[
> ExportString[
> Play[Sum[Sin[2 Pi 440 k t], {k, 1, 4}], {t, 0, 1},
> SampleRate -> 44100, SampleDepth -> 16], "WAV"], "WAV"],
> {20}]
>
> Out[1]= {0., 268.745, -0.752563, -0.756226, -0.756226, -2.99866, 0., \
> 0., -2.98279, 0., 0.756226, 341.993, 0., -0.752563, 0., 268.017, \
> -0.752563, 0., -2.2522, 0.}
>
> The small fluctuations could be explained by dithering, but any
> reasonably precise result cannot have a sum of 342! The sound
> function was constructed in such a way that the sum should be 0.
A workaround is to use PlayRange -> All.
Maxim Rytin
m.r at inbox.ru