Changeset 1193

Show
Ignore:
Timestamp:
08/04/08 06:36:56 (4 months ago)
Author:
cdavid
Message:

Translate backend specific exception into IOError.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/audiolab/scikits/audiolab/soundio/alsa.py

    r1189 r1193  
     1import numpy as np 
     2 
    13from _alsa import card_name, card_indexes, asoundlib_version 
    2 from _alsa import Device 
     4from _alsa import Device, AlsaException 
     5 
     6def play(input, samplerate = 48000): 
     7    if input.ndim == 1: 
     8        n = input.size 
     9        nc = 1 
     10    elif input.ndim == 2: 
     11        n, nc = input.shape 
     12    else: 
     13        raise ValueError("Only ndim 1 or 2 supported") 
     14 
     15    try: 
     16        dev = Device(samplerate = samplerate, channels = nc) 
     17 
     18        assert nc == dev.channels 
     19        assert input.dtype == np.float32 or input.dtype == np.float64 
     20 
     21        dev.play_short((16384 * input).astype(np.int16)) 
     22    except AlsaException, e: 
     23        raise IOError(str(e)) 
    324 
    425if __name__ == '__main__': 
     
    930    dev = Device() 
    1031    print "Device name:", dev.name 
     32 
     33    a = 0.2 * np.random.randn(4e4) 
     34    play(a, 16000) 
     35    play(a, 8000) 
     36    play(a, 22050)