[Numpy-discussion] arrayrange
Miguel Oliveira, Jr.
miguel.oliveira.jr at gmail.com
Wed Mar 14 12:03:04 EDT 2007
Hello,
I've got a few codes that use "arrayrange" within numpy. It happens
that the new version of numpy apparently doesn't recognize
"arrayrange"... I've tried to change it to "arange", but it doesn't
work... So, for example, the code below used to create a sine wave
file, but it's not working anymore... Does anyone have any clue of
what may be a solution for this?
Thanks!!!
Miguel
# Basic sound generation
# Generate a sine wave and stick it in an AIFC file
# Assumes mono, 16-bit sound
# SRate, duration, and frequency are variables
from numpy import arange, sin, pi
from array import array
import aifc
print "----------------"
SRate = 44100.0 # sampling rate of the output file
durSecs = 1.0 #its duration in seconds
durSamps = int(SRate * durSecs) # resulting number of samples
freq = 330 #frequency of the sine wave in Hz (cycles per second)
maxShort = 2** 15 # the largest possible signed 16-bit integer
# Make a floating point sinewave array using two handy functions from
NumPy:
t = arange(0, durSecs, 1.0/SRate)
sineWave = sin(2*pi*freq*t)
# print "max value of sine is: " + str( max(sineWave))
# Now write it into a 16-bit integer array, adjusting the values to
"fill" that format
sineWaveArray = array('h', [0]*len(sineWave))
for i in range(0, len(sineWave)):
sineWaveArray[i] = int(sineWave[i] * maxShort)
# Finally, write it to an AIFF file
filename = str(freq) + ".aiff"
out = aifc.open(filename, "wb")
out.aiff()
#out.setparams((1, 2, 44100, 100, 'NONE', 'not compressed'))
out.setparams((1, 2, int(SRate), int(durSamps), 'NONE', 'not
compressed'))
out.writeframes(sineWaveArray.tostring()) # this is the crucial
step: the .tostring() method forces this into the string format that
AIFC requires
out.close()
print "Successfully wrote a sine wave of frequency " + str(freq) + "
to file: " + filename
More information about the NumPy-Discussion
mailing list