[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Obtain actual volume of sample being played



Sweet!  I will play around with this.

Cheers

Forrest Voight wrote:
sound = pygame.mixer.Sound('x.wav')
array = pygame.sndarray.samples(sound)


On Tue, Jul 15, 2008 at 3:16 PM, Wyatt Olson <wyatt.olson@xxxxxxxxx> wrote:
How do you access the sndarray for a sound loaded from a .wav sample?  From
what I can tell, you can either create a Sound object from a .wav file, or
from a sndarray object, but I don't see how you can access the backing
sndarray from a .wav Sound...

Sorry if I am missing something obvious.

Cheers

Forrest Voight wrote:
You could access a sndarray and average the current portion of it. You
could probably even use numpy to do  a fourier transform on it.

On Tue, Jul 15, 2008 at 12:26 PM, Wyatt Olson <wyatt.olson@xxxxxxxxx>
wrote:

Hello,

Does anyone know if it is possible to obtain the actual volume of the
sample
being played at a given moment?  This is not the same as getting the
volume
level which was set earlier, on either the sample or the channel.

For instance, assume that I am playing a sample which starts at low
volume
(-70dB), increases to 0dB after 5 seconds, then fades out to -70dB again.
 If I play that sample at volume = 1.0, I would want to be able to return
an
approximation of the actual dB value at the given time.  For instance, if
I
were to query it at 0 seconds, I would get 0.000001; querying at 5
seconds
would return 1.0; querying at 7.5 seconds would give 0.5 or something.
Make sense?  I would want to have this controllable at the channel and /
or
sample level, not the mixer - I need to show each channel separately.  I
don't care about linear / logarithmic conversions or anything... I
essentially just need a number from 0 to 9 indicating very approximately
how
loud the sound is.

I want this information to display semi-accurate VU / peak meter
information, based on actual samples.  This is for my slave software for
an
electronic drum set.  Currently I show VU information based on the
velocity
of a drum pad hit, which is decent, but it would be nice to use the
actual
sample information as well.

I have looked through the documentation, and I don't think it can be
done,
but I figured I may as well submit this question to the gurus on teh
interwebs. 8-)

Cheers