- (snd_pcm_open NAME SND_PCM_STREAM_PLAYBACK SND_PCM_MODE_BLOCK))
-
-;; Setup PCM
-(define (setup-pcm PCM)
- (snd_pcm_set_params PCM
- (cfg-lookup PCM "format" SND_PCM_FORMAT_S16_LE)
- SND_PCM_ACCESS_RW_INTERLEAVED
- (cfg-lookup PCM "channels" 2)
- (cfg-lookup PCM "rate" 48000)
- 1 ; soft resample (0/1)
- (cfg-lookup PCM "latency" 100000) ; (microseconds)
- ))
+ (if (snd_pcm_open NAME SND_PCM_STREAM_PLAYBACK SND_PCM_MODE_BLOCK)
+ (list NAME $it)))
+
+;; Setup PCM. Preset format. access, channels, rate and soft resample.
+;; Configurable latency.
+(define (setup-pcm PCM NAME)
+ (let ((LATENCY (cfg-lookup NAME "latency" 100000)))
+ (snd_pcm_set_params PCM SND_PCM_FORMAT_S16_LE SND_PCM_ACCESS_RW_INTERLEAVED
+ 2 48000 1 LATENCY )))