summaryrefslogtreecommitdiffstats
path: root/Modules/winsound.c
blob: d3f747f863d711ae0832de9f077a105b4aa1c6b8 (plain)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
 * SOUND
 * $Id$
 *
 * play sound on a windows platform
 *
 * history:
 * 99-02-02 fl  created
 *
 * Copyright (c) 1999 by Secret Labs AB.
 * Copyright (c) 1999 by Fredrik Lundh.
 *
 * fredrik@pythonware.com
 * http://www.pythonware.com
 *
 * --------------------------------------------------------------------
 * Permission to use, copy, modify, and distribute this software and
 * its associated documentation for any purpose and without fee is
 * hereby granted.  This software is provided as is.
 * --------------------------------------------------------------------
 */

#include "Python.h"

#include "windows.h"
#include "mmsystem.h"

static PyObject*
_play(PyObject* self, PyObject* args)
{
    int result;
    
    /* first argument is a string that should contain the contents of
       a WAV file.  second argument should be non-zero to wait for the
       sound to complete. */

    char *data = NULL;
    int bytes;
    int wait = 0;
    if (!PyArg_ParseTuple(args, "|s#i", &data, &bytes, &wait))
	return NULL;

    result = PlaySound(data, NULL, (SND_MEMORY|SND_NOWAIT|SND_NODEFAULT) |
                       (wait ? 0 : SND_ASYNC));

    return Py_BuildValue("i", result);
}

static PyObject*
_stop(PyObject* self, PyObject* args)
{
    if (!PyArg_NoArgs(args))
	return NULL;

    return Py_BuildValue("i", PlaySound(NULL, NULL, 0));
}

static PyMethodDef _functions[] = {
    {"play", _play, 1},
    {"stop", _stop, 0},
    {NULL, NULL}
};

void
#ifdef WIN32
__declspec(dllexport)
#endif
initwinsound()
{
    Py_InitModule("winsound", _functions);
}