mirror of https://github.com/python/cpython
Initial revision
This commit is contained in:
parent
2739c9cce8
commit
8307443175
|
@ -0,0 +1,65 @@
|
|||
# Compare different audio compression schemes.
|
||||
#
|
||||
# This copies mono audio data from the input port to the output port,
|
||||
# and puts up a window with 4 toggle buttons:
|
||||
#
|
||||
# uLAW : convert the data to uLAW and back
|
||||
# ADPCM : convert the data to ADPCM and back
|
||||
# Difference : make only the difference between the converted and the
|
||||
# original data audible
|
||||
# Exit : quit from the program
|
||||
|
||||
import fl
|
||||
import FL
|
||||
import flp
|
||||
import al
|
||||
import AL
|
||||
import audioop
|
||||
import sys
|
||||
|
||||
class Cmpaf():
|
||||
def init(self):
|
||||
parsetree = flp.parse_form('cmpaf_form','form')
|
||||
flp.create_full_form(self, parsetree)
|
||||
c = al.newconfig()
|
||||
c.setchannels(AL.MONO)
|
||||
c.setqueuesize(1800)
|
||||
self.iport = al.openport('cmpaf','r', c)
|
||||
self.oport = al.openport('cmpaf','w', c)
|
||||
self.do_adpcm = self.do_ulaw = self.do_diff = 0
|
||||
self.acstate = None
|
||||
self.form.show_form(FL.PLACE_SIZE, 1, 'compare audio formats')
|
||||
return self
|
||||
|
||||
def run(self):
|
||||
while 1:
|
||||
olddata = data = self.iport.readsamps(600)
|
||||
if self.do_ulaw:
|
||||
data = audioop.lin2ulaw(data, 2)
|
||||
data = audioop.ulaw2lin(data, 2)
|
||||
if self.do_adpcm:
|
||||
data, nacstate = audioop.lin2adpcm(data, 2, \
|
||||
self.acstate)
|
||||
data, dummy = audioop.adpcm2lin(data, 2, \
|
||||
self.acstate)
|
||||
self.acstate = nacstate
|
||||
if self.do_diff:
|
||||
olddata = audioop.mul(olddata, 2, -1)
|
||||
data = audioop.add(olddata, data, 2)
|
||||
self.oport.writesamps(data)
|
||||
fl.check_forms()
|
||||
|
||||
def cb_exit(self, *args):
|
||||
sys.exit(0)
|
||||
|
||||
def cb_adpcm(self, obj, val):
|
||||
self.do_adpcm = obj.get_button()
|
||||
|
||||
def cb_ulaw(self, obj, val):
|
||||
self.do_ulaw = obj.get_button()
|
||||
|
||||
def cb_diff(self, obj, val):
|
||||
self.do_diff = obj.get_button()
|
||||
|
||||
cmpaf = Cmpaf().init()
|
||||
cmpaf.run()
|
|
@ -0,0 +1,90 @@
|
|||
Magic: 12321
|
||||
|
||||
Internal Form Definition File
|
||||
(do not change)
|
||||
|
||||
Number of forms: 1
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form
|
||||
Width: 230.000000
|
||||
Height: 80.000000
|
||||
Number of Objects: 5
|
||||
|
||||
--------------------
|
||||
class: 1
|
||||
type: 1
|
||||
box: 0.000000 0.000000 230.000000 80.000000
|
||||
boxtype: 1
|
||||
colors: 47 47
|
||||
alignment: 4
|
||||
style: 0
|
||||
size: 11.000000
|
||||
lcol: 0
|
||||
label:
|
||||
name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: 12
|
||||
type: 1
|
||||
box: 10.000000 40.000000 100.000000 30.000000
|
||||
boxtype: 1
|
||||
colors: 39 3
|
||||
alignment: 4
|
||||
style: 0
|
||||
size: 11.000000
|
||||
lcol: 0
|
||||
label: uLAW
|
||||
name: ulawbutton
|
||||
callback: cb_ulaw
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: 12
|
||||
type: 1
|
||||
box: 10.000000 10.000000 100.000000 30.000000
|
||||
boxtype: 1
|
||||
colors: 39 3
|
||||
alignment: 4
|
||||
style: 0
|
||||
size: 11.000000
|
||||
lcol: 0
|
||||
label: ADPCM
|
||||
name: adpcm_button
|
||||
callback: cb_adpcm
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: 11
|
||||
type: 0
|
||||
box: 170.000000 10.000000 50.000000 20.000000
|
||||
boxtype: 1
|
||||
colors: 47 47
|
||||
alignment: 4
|
||||
style: 0
|
||||
size: 11.000000
|
||||
lcol: 0
|
||||
label: EXIT
|
||||
name: exit_button
|
||||
callback: cb_exit
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: 12
|
||||
type: 1
|
||||
box: 120.000000 40.000000 100.000000 30.000000
|
||||
boxtype: 1
|
||||
colors: 39 3
|
||||
alignment: 4
|
||||
style: 0
|
||||
size: 11.000000
|
||||
lcol: 0
|
||||
label: Difference
|
||||
name: diffbutton
|
||||
callback: cb_diff
|
||||
argument: 0
|
||||
|
||||
==============================
|
||||
create_the_forms
|
Loading…
Reference in New Issue