diff options
Diffstat (limited to 'PC')
-rw-r--r-- | PC/winsound.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/PC/winsound.c b/PC/winsound.c index 2654172..63906c9 100644 --- a/PC/winsound.c +++ b/PC/winsound.c @@ -8,6 +8,7 @@ */ /* Modified by Guido van Rossum */ +/* Beep added by Mark Hammond */ /* Example: @@ -43,6 +44,13 @@ static char sound_playsound_doc[] = "The sound argument can be a filename, data, or None.\n" "For flag values, ored together, see module documentation.\n"; +static char sound_beep_doc[] = +"Beep(frequency, duration) - a wrapper around the Windows Beep API\n" +"\n" +"The frequency argument specifies frequency, in hertz, of the sound.\n" +"This parameter must be in the range 37 through 32,767 (0x25 through 0x7FFF).\n" +"The duration argument specifies the number of milli-seconds.\n"; + static char sound_module_doc[] = "PlaySound(sound, flags) - play a sound\n" "SND_FILENAME - sound is a wav file name\n" @@ -54,7 +62,8 @@ static char sound_module_doc[] = "SND_NODEFAULT - Do not play a default beep if the sound can not be found\n" "SND_NOSTOP - Do not interrupt any sounds currently playing\n" // Raising RuntimeError if needed "SND_NOWAIT - Return immediately if the sound driver is busy\n" // Without any errors -; +"\n" +"Beep(frequency, duration) - Make a beep through the PC speaker.\n"; PyObject *sound_playsound(PyObject *s, PyObject *args) { @@ -89,9 +98,30 @@ PyObject *sound_playsound(PyObject *s, PyObject *args) return Py_None; } +static PyObject *sound_beep( PyObject *self, PyObject *args ) +{ + int freq; + int dur; + BOOL ok; + + if (!PyArg_ParseTuple(args, "ii:Beep", &freq, &dur)) + return NULL; + Py_BEGIN_ALLOW_THREADS + ok = Beep(freq,dur); + Py_END_ALLOW_THREADS + if(!ok) + { + PyErr_SetString(PyExc_RuntimeError,"Failed to beep"); + return NULL; + } + Py_INCREF(Py_None); + return Py_None; +} + static struct PyMethodDef sound_methods[] = { {"PlaySound", sound_playsound, 1, sound_playsound_doc}, + {"Beep", sound_beep, 1, sound_beep_doc}, {NULL, NULL} }; |