Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Revision 0832165c43cc059ca2d8de0bef09990f6ebdcae0 authored by cvs2svn on 18 March 2002, 16:47:35 UTC, committed by cvs2svn on 18 March 2002, 16:47:35 UTC
1 parent 0c3ea5d
Tip revision: 0832165c43cc059ca2d8de0bef09990f6ebdcae0 authored by cvs2svn on 18 March 2002, 16:47:35 UTC
This commit was manufactured by cvs2svn to create tag 'r221c1'.
This commit was manufactured by cvs2svn to create tag 'r221c1'.
Tip revision: 0832165
playaiff.py
import aiff
import al
import sys
import time
def main():
v = 1
c = al.newconfig()
nchannels = c.getchannels()
nsampframes = 0 # ???
sampwidth = c.getwidth()
samprate = 0.0 # unknown
filename = sys.argv[1]
f = open(filename, 'r')
type, totalsize = aiff.read_chunk_header(f)
if type <> 'FORM':
raise aiff.Error, 'FORM chunk expected at start of file'
aiff.read_form_chunk(f)
while 1:
try:
type, size = aiff.read_chunk_header(f)
except EOFError:
break
if v: print 'header:', `type`, size
if type == 'COMM':
nchannels, nsampframes, sampwidth, samprate = \
aiff.read_comm_chunk(f)
if v: print nchannels, nsampframes, sampwidth, samprate
elif type == 'SSND':
offset, blocksize = aiff.read_ssnd_chunk(f)
if v: print offset, blocksize
data = f.read(size-8)
if size%2: void = f.read(1)
p = makeport(nchannels, sampwidth, samprate)
play(p, data, offset, blocksize)
elif type in aiff.skiplist:
aiff.skip_chunk(f, size)
else:
raise aiff.Error, 'bad chunk type ' + type
def makeport(nchannels, sampwidth, samprate):
c = al.newconfig()
c.setchannels(nchannels)
c.setwidth(sampwidth/8)
# can't set the rate...
p = al.openport('', 'w', c)
return p
def play(p, data, offset, blocksize):
data = data[offset:]
p.writesamps(data)
while p.getfilled() > 0: time.sleep(0.01)
main()
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...