Sophie

Sophie

distrib > Mandriva > current > i586 > by-pkgid > ae0a4f27f26602dc31c3bf35e18b5b19 > files > 589

python-enthought-chaco-3.4.0-2mdv2010.2.i586.rpm

#! /bin/env python

# Standard library imports
import os.path
import wave
import numpy

# Enthought library imports
from enthought.util.resource import find_resource

def wav_to_numeric( fname, max_frames=-1 ):
  f = wave.open( fname, 'rb' )
  sampleRate = f.getframerate()
  channels = f.getnchannels()

  if max_frames < 0:
      max_frames = f.getnframes()

  frames = f.readframes(max_frames)
  
  if f.getsampwidth() == 2:
      data = numpy.fromstring(frames, numpy.uint16).astype(numpy.float64) - (2**15 - 0.5) 
  else:
      data = numpy.fromstring(frames, numpy.uint8).astype(numpy.float64) - 127.5 

  if channels == 2:
      left = data[0::2]
      right = data[1::2]

      data = left

  index = numpy.arange(len(data)) * 1.0/sampleRate

  return index, data
  
def test():
    sample_path = os.path.join('examples','data','sample.wav')
    alt_path = os.path.join('..','data','sample.wav')
    fname = find_resource('Chaco', sample_path, alt_path=alt_path,
        return_path=True)
    index, data = wav_to_numeric(fname)
    print data[:100]
    return index, data
    
if __name__== '__main__':
    test()