mirror of
https://github.com/abakh/nbsdgames
synced 2025-04-28 14:09:32 -04:00
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
class Music:
|
|
def __init__(self, filename):
|
|
self.filename = filename
|
|
self.w = None
|
|
self.sampledata = ''
|
|
def openchannel(self):
|
|
if self.w is not None:
|
|
self.w.close()
|
|
import wave
|
|
self.w = w = wave.open(open(self.filename, 'rb'), 'r')
|
|
self.w_params = (w.getnchannels(),
|
|
w.getsampwidth(),
|
|
w.getframerate())
|
|
chan, width, freq = self.w_params
|
|
self.dataleft = w.getnframes() * (chan*width)
|
|
self.sampledata = ''
|
|
def decode(self, mixer, bytecount):
|
|
result = self.sampledata
|
|
if not result and self.dataleft > 0:
|
|
# decode and convert some more data
|
|
chan, width, freq = self.w_params
|
|
#framecount = bytecount / (chan*width)
|
|
inputdata = self.w.readframes(bytecount) #(framecount)
|
|
self.dataleft -= len(inputdata)
|
|
result = mixer.resample(inputdata,
|
|
freq = freq,
|
|
bits = width * 8,
|
|
signed = width > 1,
|
|
channels = chan,
|
|
byteorder = 'little')
|
|
#print len(result)
|
|
self.sampledata = result[bytecount:]
|
|
return result[:bytecount]
|