Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
aa14837b
Commit
aa14837b
authored
Dec 17, 1993
by
Sjoerd Mullender
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Interface to audio hardware for SGI and Sun.
parent
21a3ff9d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
205 additions
and
0 deletions
+205
-0
Lib/audiodev.py
Lib/audiodev.py
+205
-0
No files found.
Lib/audiodev.py
0 → 100644
View file @
aa14837b
import
AL
,
SUNAUDIODEV
error
=
'audiodev.error'
class
Play_Audio_sgi
:
# Private instance variables
access
frameratelist
,
nchannelslist
,
sampwidthlist
,
oldparams
,
\
params
,
config
,
inited_outrate
,
inited_width
,
\
inited_nchannels
,
port
,
converter
:
private
frameratelist
=
[(
48000
,
AL
.
RATE_48000
),
(
44100
,
AL
.
RATE_44100
),
(
32000
,
AL
.
RATE_32000
),
(
22050
,
AL
.
RATE_22050
),
(
16000
,
AL
.
RATE_16000
),
(
11025
,
AL
.
RATE_11025
),
(
8000
,
AL
.
RATE_8000
)]
nchannelslist
=
[(
1
,
AL
.
MONO
),
(
2
,
AL
.
STEREO
)]
sampwidthlist
=
[(
1
,
AL
.
SAMPLE_8
),
(
2
,
AL
.
SAMPLE_16
),
(
3
,
AL
.
SAMPLE_24
)]
def
__init__
(
self
):
import
al
self
.
oldparams
=
[]
self
.
params
=
[
AL
.
OUTPUT_RATE
,
0
]
self
.
config
=
al
.
newconfig
()
self
.
inited_outrate
=
0
self
.
inited_width
=
0
self
.
inited_nchannels
=
0
self
.
converter
=
None
self
.
port
=
None
return
def
__del__
(
self
):
if
self
.
port
:
self
.
stop
()
if
self
.
oldparams
:
import
al
al
.
setparams
(
AL
.
DEFAULT_DEVICE
,
self
.
oldparams
)
self
.
oldparams
=
[]
def
wait
(
self
):
if
not
self
.
port
:
return
import
time
while
self
.
port
.
getfilled
()
>
0
:
time
.
sleep
(
0.1
)
self
.
stop
()
def
stop
(
self
):
if
self
.
port
:
self
.
port
.
closeport
()
self
.
port
=
None
if
self
.
oldparams
:
import
al
al
.
setparams
(
AL
.
DEFAULT_DEVICE
,
self
.
oldparams
)
self
.
oldparams
=
[]
def
setoutrate
(
self
,
rate
):
for
(
raw
,
cooked
)
in
self
.
frameratelist
:
if
rate
==
raw
:
self
.
params
[
1
]
=
cooked
self
.
inited_outrate
=
1
break
else
:
raise
error
,
'bad output rate'
def
setsampwidth
(
self
,
width
):
for
(
raw
,
cooked
)
in
self
.
sampwidthlist
:
if
width
==
raw
:
self
.
config
.
setwidth
(
cooked
)
self
.
inited_width
=
1
break
else
:
if
width
==
0
:
self
.
inited_width
=
0
self
.
config
.
setwidth
(
AL
.
SAMPLE_16
)
self
.
converter
=
self
.
ulaw2lin
else
:
raise
error
,
'bad sample width'
def
setnchannels
(
self
,
nchannels
):
for
(
raw
,
cooked
)
in
self
.
nchannelslist
:
if
nchannels
==
raw
:
self
.
config
.
setchannels
(
cooked
)
self
.
inited_nchannels
=
1
break
else
:
raise
error
,
'bad # of channels'
def
writeframes
(
self
,
data
):
if
not
(
self
.
inited_outrate
and
self
.
inited_nchannels
):
raise
error
,
'params not specified'
if
not
self
.
port
:
import
al
self
.
port
=
al
.
openport
(
'Python'
,
'w'
,
self
.
config
)
self
.
oldparams
=
self
.
params
[:]
al
.
getparams
(
AL
.
DEFAULT_DEVICE
,
self
.
oldparams
)
al
.
setparams
(
AL
.
DEFAULT_DEVICE
,
self
.
params
)
if
self
.
converter
:
data
=
self
.
converter
(
data
)
self
.
port
.
writesamps
(
data
)
def
getfilled
(
self
):
if
self
.
port
:
return
self
.
port
.
getfilled
()
else
:
return
0
def
getfillable
(
self
):
if
self
.
port
:
return
self
.
port
.
getfillable
()
else
:
return
self
.
config
.
getqueuesize
()
# private methods
access
*
:
private
def
ulaw2lin
(
self
,
data
):
import
audioop
return
audioop
.
ulaw2lin
(
data
,
2
)
class
Play_Audio_sun
:
access
outrate
,
sampwidth
,
nchannels
,
inited_outrate
,
inited_width
,
\
inited_nchannels
,
converter
:
private
def
__init__
(
self
):
self
.
outrate
=
0
self
.
sampwidth
=
0
self
.
nchannels
=
0
self
.
inited_outrate
=
0
self
.
inited_width
=
0
self
.
inited_nchannels
=
0
self
.
converter
=
None
self
.
port
=
None
return
def
__del__
(
self
):
self
.
stop
()
def
setoutrate
(
self
,
rate
):
self
.
outrate
=
rate
self
.
inited_outrate
=
1
def
setsampwidth
(
self
,
width
):
self
.
sampwidth
=
width
self
.
inited_width
=
1
def
setnchannels
(
self
,
nchannels
):
self
.
nchannels
=
nchannels
self
.
inited_nchannels
=
1
def
writeframes
(
self
,
data
):
if
not
(
self
.
inited_outrate
and
self
.
inited_width
and
self
.
inited_nchannels
):
raise
error
,
'params not specified'
if
not
self
.
port
:
import
sunaudiodev
self
.
port
=
sunaudiodev
.
open
(
'w'
)
info
=
self
.
port
.
getinfo
()
info
.
o_sample_rate
=
self
.
outrate
info
.
o_channels
=
self
.
nchannels
if
self
.
sampwidth
==
0
:
info
.
o_precision
=
8
self
.
o_encoding
=
ENCODING_ULAW
else
:
info
.
o_precision
=
8
*
self
.
sampwidth
info
.
o_encoding
=
SUNAUDIODEV
.
ENCODING_LINEAR
self
.
port
.
setinfo
(
info
)
if
self
.
converter
:
data
=
self
.
converter
(
data
)
self
.
port
.
write
(
data
)
def
wait
(
self
):
if
not
self
.
port
:
return
self
.
port
.
drain
()
self
.
stop
()
def
stop
(
self
):
if
self
.
port
:
self
.
port
.
flush
()
self
.
port
.
close
()
self
.
port
=
None
def
getfilled
(
self
):
if
self
.
port
:
return
self
.
port
.
obufcount
()
else
:
return
0
def
getfillable
(
self
):
return
BUFFERSIZE
-
self
.
getfilled
()
def
AudioDev
():
try
:
import
al
return
Play_Audio_sgi
()
except
ImportError
:
try
:
import
sunaudiodev
return
Play_Audio_sun
()
except
ImportError
:
raise
error
,
'no audio device'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment