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

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



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
>>>
>>>
>
>