| 
							- 
 - import rtaudio as rt
 - 
 - from math import cos
 - 
 - import struct
 - 
 - 
 - class audio_generator:
 -     def __init__(self):
 -         self.idx = -1
 -         self.freq = 440.
 -     def __call__(self):
 - 	self.idx += 1
 - 	if self.idx%48000 == 0:
 -             self.freq *= 2**(1/12.)	
 -         return 0.5*cos(2.*3.1416*self.freq*self.idx/48000.)
 - 
 - 
 - class callback:
 -     def __init__(self, gen):
 -         self.gen = gen
 - 	self.i = 0
 -     def __call__(self,playback, capture):
 -         [struct.pack_into("f", playback, 4*o, self.gen()) for o in xrange(256)]
 - 	self.i = self.i + 256
 - 	if self.i > 48000*10:
 -             print '.'
 -             return 1
 - 
 - dac = rt.RtAudio()
 - 
 - n = dac.getDeviceCount()
 - print 'Number of devices available: ', n
 - 
 - for i in range(n):
 -     try:
 -         print dac.getDeviceInfo(i)
 -     except rt.RtError as e:
 - 	print e
 - 
 - 
 - print 'Default output device: ', dac.getDefaultOutputDevice()
 - print 'Default input device: ', dac.getDefaultInputDevice()
 - 
 - print 'is stream open: ', dac.isStreamOpen()
 - print 'is stream running: ', dac.isStreamRunning()
 - 
 - oParams = {'deviceId': 1, 'nChannels': 1, 'firstChannel': 0}
 - iParams = {'deviceId': 1, 'nChannels': 1, 'firstChannel': 0}
 - 
 - try:
 -   dac.openStream(oParams,oParams,48000,256,callback(audio_generator()) )
 - except rt.RtError as e:
 -   print e
 - else:
 -   dac.startStream()
 - 
 -   import time
 -   print 'latency: ', dac.getStreamLatency()
 - 
 -   while (dac.isStreamRunning()):
 -     time.sleep(0.1)
 - 
 -   print dac.getStreamTime()
 - 
 -   dac.stopStream()
 -   dac.abortStream()
 -   dac.closeStream()
 - 
 
 
  |