81 lines
2.2 KiB
Scheme
81 lines
2.2 KiB
Scheme
(define-module (yammer ffi)
|
|
#:use-module (system foreign)
|
|
#:export (FFTW_ESTIMATE
|
|
fftw_destroy_plan
|
|
init_plan
|
|
do-dft
|
|
make-pa-simple
|
|
read_from_pa
|
|
pa_simple_free))
|
|
|
|
(add-to-load-path
|
|
(string-append
|
|
(if (getenv "XDG_CONFIG_HOME")
|
|
(getenv "XDG_CONFIG_HOME")
|
|
(string-append (getenv "HOME") "/.config"))
|
|
"/yammer"))
|
|
(load-from-path "config.scm")
|
|
|
|
(define fftw #f)
|
|
(define pulseaudio #f)
|
|
(define libyammer (dynamic-link "libyammer"))
|
|
|
|
(define FFTW_ESTIMATE #f)
|
|
(define fftw_destroy_plan #f)
|
|
(define do_dft #f)
|
|
(define init_plan #f)
|
|
(define (do-dft plan lst len) #f)
|
|
|
|
(define make_pa_simple #f)
|
|
(define (make-pa-simple rate dev) #f)
|
|
(define read_from_pa #f)
|
|
(define pa_simple_free #f)
|
|
|
|
(if using-fftw?
|
|
(begin
|
|
(set! fftw (dynamic-link "libfftw3"))
|
|
(set! FFTW_ESTIMATE 48)
|
|
|
|
(set! fftw_destroy_plan
|
|
(pointer->procedure void
|
|
(dynamic-func "fftw_destroy_plan" fftw)
|
|
(list '*)))
|
|
|
|
(set! do_dft
|
|
(pointer->procedure '*
|
|
(dynamic-func "do_dft" libyammer)
|
|
(list '* '* int)))
|
|
|
|
(set! init_plan
|
|
(pointer->procedure '*
|
|
(dynamic-func "init_plan" libyammer)
|
|
(list int)))
|
|
|
|
(set! do-dft
|
|
(lambda (plan lst len)
|
|
(define out (do_dft plan (bytevector->pointer (list->s16vector lst)) len))
|
|
(pointer->bytevector out (floor/ len 2) (sizeof short) 's16)))))
|
|
|
|
(if using-pulse?
|
|
(begin
|
|
(set! pulseaudio (dynamic-link "libpulse-simple"))
|
|
|
|
(set! make_pa_simple
|
|
(pointer->procedure '*
|
|
(dynamic-func "make_pa_simple" libyammer)
|
|
(list unsigned-int '* int)))
|
|
|
|
(set! make-pa-simple
|
|
(lambda (rate dev latency)
|
|
(make_pa_simple rate (string->pointer dev latency))))
|
|
|
|
(set! read_from_pa
|
|
(pointer->procedure '*
|
|
(dynamic-func "read_from_pa" libyammer)
|
|
(list '* size_t)))
|
|
|
|
(set! pa_simple_free
|
|
(pointer->procedure void
|
|
(dynamic-func "pa_simple_free" pulseaudio)
|
|
(list '*)))))
|