tones.py
1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#tones.py
#A part of NonVisual Desktop Access (NVDA)
#Copyright (C) 2006-2009 NVDA Contributors <http://www.nvda-project.org/>
#This file is covered by the GNU General Public License.
#See the file COPYING for more details.
"""Utilities to generate and play tones"""
import nvwave
import config
import globalVars
from logHandler import log
from ctypes import create_string_buffer, byref
SAMPLE_RATE = 44100
try:
player = nvwave.WavePlayer(channels=2, samplesPerSec=int(SAMPLE_RATE), bitsPerSample=16, outputDevice=config.conf["speech"]["outputDevice"],wantDucking=False)
except:
log.warning("Failed to initialize audio for tones")
player = None
def beep(hz,length,left=50,right=50):
"""Plays a tone at the given hz, length, and stereo balance.
@param hz: pitch in hz of the tone
@type hz: float
@param length: length of the tone in ms
@type length: integer
@param left: volume of the left channel (0 to 100)
@type left: integer
@param right: volume of the right channel (0 to 100)
@type right: integer
"""
log.io("Beep at pitch %s, for %s ms, left volume %s, right volume %s"%(hz,length,left,right))
if not player:
return
from NVDAHelper import generateBeep
bufSize=generateBeep(None,hz,length,left,right)
buf=create_string_buffer(bufSize)
generateBeep(buf,hz,length,left,right)
player.stop()
player.feed(buf.raw)