#lang racket
(require ffi/vector
ffi/unsafe
(rename-in racket/contract [-> c->])
"portaudio.rkt"
"callback-support.rkt")
(define nat? exact-nonnegative-integer?)
(provide/contract [s16vec-record (c-> nat? integer? s16vector?)])
(define channels 2)
(define (s16vec-record frames sample-rate)
(pa-maybe-initialize)
(define copying-info (make-copying-info/rec frames))
(define sr/i (exact->inexact sample-rate))
(define stream
(pa-open-default-stream
2 0 'paInt16 sr/i 0 copying-callback/rec copying-info))
(pa-start-stream stream)
(sleep (* frames (/ 1 sample-rate)))
(extract-recorded-sound copying-info))