changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/alsa/pkg.lisp

changeset 698: 96958d3eb5b0
parent: 7e3c88fff062
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
238
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; alsa.lisp --- low-level bindings to ALSA
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;;; Commentary:
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 (defpackage :alsa
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
   (:use :cl :std :sb-alien)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
   (:import-from :sb-unix :off-t)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
   (:export ))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 (in-package :alsa)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 (define-alien-loader "asound" t "/usr/lib/")
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
 (defconstant %seek-set 0)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 (defconstant %seek-cur 1)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 (defconstant %seek-end 2)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
 (define-alien-type snd-pcm (* t))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 (define-alien-type snd-output (* t))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
 (define-alien-type snd-pcm-stream int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
 (define-alien-type snd-pcm-mode int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
 (define-alien-routine snd-pcm-open int (pcm (* snd-pcm)) (name c-string) (ty snd-pcm-stream) (mode snd-pcm-mode))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
 (define-alien-routine snd-pcm-close int (pcm snd-pcm))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
 (define-alien-routine snd-strerror c-string (errnum int))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
 ;; TODO
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 (define-alien-type snd-pcm-format int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
 (define-alien-type snd-pcm-access int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
 (define-alien-routine snd-pcm-set-params int
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
   (pcm snd-pcm)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
   (format snd-pcm-format)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
   (access snd-pcm-access)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
   (channels unsigned-int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
   (rate unsigned-int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
   (soft-resample int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
   (latency unsigned-int))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
 (define-alien-routine snd-pcm-recover int
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
   (pcm snd-pcm)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
   (err int)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
   (silent int))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 (define-alien-type snd-pcm-sframes long)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
 (define-alien-type snd-pcm-uframes unsigned-long)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
 (define-alien-routine snd-pcm-writei snd-pcm-sframes
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
   (pcm snd-pcm)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
   (buffer (* t))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
   (size snd-pcm-uframes))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
 (define-alien-routine snd-output-stdio-attach int
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
   (outputp (* snd-output))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
   (file (* t))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
   (close int))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
 (define-alien-routine snd-pcm-dump int
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
   (pcm snd-pcm)
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
   (out snd-output))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 (define-alien-variable stdout (* t))
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
 
6fa723592550 audio ffi, io work
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69