def on_get_data(self, data): ansi.debug('on_get_data') # fill the chunk with audio data from the stream source data += self.getData() # return true to continue playing return True
def onSongChanged(self, *args, **kwargs): ansi.debug('onSongChanged') if self.pcm: self.pcm.close() self.pcm = alsaaudio.PCM(type=alsaaudio.PCM_PLAYBACK) # mode=alsaaudio.PCM_NORMAL) if self.debug: ansi.debug('Song changed; channels: {}; samplerate: {}; period size: {}', self.sampleGen.channels, self.sampleGen.samplerate, self.sampleGen.framesPerChunk) self.pcm.setchannels(self.sampleGen.channels) self.pcm.setrate(self.sampleGen.samplerate) self.pcm.setperiodsize(self.sampleGen.framesPerChunk) self.pcm.setformat(alsaaudio.PCM_FORMAT_S16_LE)
def sample_rate(self): ansi.debug('sample_rate') return self.GetSampleRate()
def channel_count(self): ansi.debug('channel_count') return self.GetChannelsCount()
def OnGetData(self): ansi.debug('OnGetData') return self.getData()
def initialize(self, *args, **kwargs): ansi.debug('initialize') self.Initialize(*args, **kwargs)
def _finishPlay(self): ansi.debug('_finishPlay') self.Play()
def _finishPlay(self): ansi.debug('_finishPlay (sfml2)') sfml.SoundStream.play(self)
def play(self): ansi.debug('play') self.sampleGen.loadNextFile() mainLoop.currentProcess.queueCall(self._finishPlay)
def onSongChanged(self, *args, **kwargs): ansi.debug('onSongChanged') if (self.channel_count, self.sample_rate) != (self.sampleGen.channels, self.sampleGen.samplerate): self.initialize(self.sampleGen.channels, self.sampleGen.samplerate)
def __init__(self, sampleGen): ansi.debug('__init__') sfml.SoundStream.__init__(self) self.sampleGen = sampleGen sampleGen.onSongChanged.add(self.onSongChanged)