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

Re: [pygame] seeking in a .WAV with pygame.mixer.music? and "pynudge"



hi

this examples are quite interesting, i am just having a look at them.
Has anyone coded the slow_down function that works? it would be nice to
have it.
This could be use to do some funny stuff with sounds like granular synthesis and stuff like that. Nice one, thanks for the examples.


thanks



Rene Dudfield wrote:
Hullo,

If your sound was hello.wav, and contained you saying "hello my name is Denise".

# load the sound sound = pygame.mixer.Sound('hello.wav')

sound2 = sound_from_pos(sound, 0.5)

Now sound2 would contain a sound begining at 0.5 seconds into
hello.wav.  It would sound like " name is Denise".  Or maybe "ello my
name is Denise".

Here are some extra comments for the function.

def sound_from_pos(sound, start_pos, samples_per_second = None, inplace = 1):
""" returns a sound which begins at the start_pos.
start_pos - in seconds from the begining.
samples_per_second - """


    # see if we want to reuse the sound data or not.
    if inplace:
        a1 = pygame.sndarray.samples(sound)
    else:
        a1 = pygame.sndarray.array(sound)

    # see if samples per second has been given.  If not, query the mixer.
    #   eg. it might be set to 22050
    if samples_per_second is None:
        samples_per_second = pygame.mixer.get_init()[0]

    # figure out the start position in terms of samples.
    start_pos_in_samples = int(start_pos * samples_per_second)

    # cut the begining off the sound at the start position.
    a2 = a1[start_pos_in_samples:]

    # make the Sound instance from the array.
    sound2 = pygame.sndarray.make_sound(a2)

    return sound2



Try downloading the example, and play around with it.  Run it from
with the examples directory.
http://rene.f0o.com/~rene/sound_array_demos.py

Try printing the sound arrays, and have a look at the data.

If you want, try making a function which trims a sound to a maximum length.

def trim_sound(sound, end_pos, samples_per_second = None, inplace = 1):
    raise NotImplementedError


Clear as mud now?





On 7/19/05, D. Hartley <denise.hartley@xxxxxxxxx> wrote:

Rene,

Thanks for posting this.  Sorry to be dense, but could you explain
what this ends up sounding like? (i.e., a non-technical "for instance,
if your sound was _____, it would sound like a _____ and then do ____"
kind of thing?)

I'm trying to understand how to work with music in programming, but I
don't understand TOO much about music files in general yet so I'm just
looking for a "for dummies" overview sentence or two of what the
output is :)

Thanks so much!

~Denise

On 7/18/05, Rene Dudfield <renesd@xxxxxxxxx> wrote:

Below is a function which makes a new Sound from another one at a
different start_pos.

eg, called like this:
sound = pygame.mixer.Sound(os.path.join('data', 'car_door.wav'))
sound2 = sound_from_pos(sound, 0.2)

ps. I just commited this to examples/sound_array_demos.py in cvs.

So you can load up your .wav, and start playing it at any position.


Cheers.


def sound_from_pos(sound, start_pos, samples_per_second = None, inplace = 1): """ returns a sound which begins at the start_pos. start_pos - in seconds from the begining. samples_per_second - """ if inplace: a1 = pygame.sndarray.samples(sound) else: a1 = pygame.sndarray.array(sound)

  if samples_per_second is None:
      samples_per_second = pygame.mixer.get_init()[0]

  start_pos_in_samples = int(start_pos * samples_per_second)
  a2 = a1[start_pos_in_samples:]
  sound2 = pygame.sndarray.make_sound(a2)

  return sound2




On 7/19/05, James Hofmann <jwhinfinity@xxxxxxxxx> wrote:

I looked for a way....also looked in the standard
Python libraries for something along those lines.
Nothing really seems to provide that kind of low-level
interface. Pymedia might provide that but the
documentation is very sketchy... I had a hard time
trying to figure out what it is and isn't capable of.

I might work on my own problem some more today, and if
I find out anything I'll post it.


Is there any way to address and index the sound data
in a mixer
object?  I've tried dissecting it, but it seems like
there's no PyGame
interface...  soo, if I needed to access it, I'd
have to go to the SDL
level.





____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs






--
altern