17db96d56Sopenharmony_ci:mod:`winsound` --- Sound-playing interface for Windows
27db96d56Sopenharmony_ci=======================================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: winsound
57db96d56Sopenharmony_ci   :platform: Windows
67db96d56Sopenharmony_ci   :synopsis: Access to the sound-playing machinery for Windows.
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci.. moduleauthor:: Toby Dickenson <htrd90@zepler.org>
97db96d56Sopenharmony_ci.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci--------------
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciThe :mod:`winsound` module provides access to the basic sound-playing machinery
147db96d56Sopenharmony_ciprovided by Windows platforms.  It includes functions and several constants.
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_ci.. function:: Beep(frequency, duration)
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci   Beep the PC's speaker. The *frequency* parameter specifies frequency, in hertz,
207db96d56Sopenharmony_ci   of the sound, and must be in the range 37 through 32,767. The *duration*
217db96d56Sopenharmony_ci   parameter specifies the number of milliseconds the sound should last.  If the
227db96d56Sopenharmony_ci   system is not able to beep the speaker, :exc:`RuntimeError` is raised.
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci.. function:: PlaySound(sound, flags)
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ci   Call the underlying :c:func:`PlaySound` function from the Platform API.  The
287db96d56Sopenharmony_ci   *sound* parameter may be a filename, a system sound alias, audio data as a
297db96d56Sopenharmony_ci   :term:`bytes-like object`, or ``None``.  Its
307db96d56Sopenharmony_ci   interpretation depends on the value of *flags*, which can be a bitwise ORed
317db96d56Sopenharmony_ci   combination of the constants described below. If the *sound* parameter is
327db96d56Sopenharmony_ci   ``None``, any currently playing waveform sound is stopped. If the system
337db96d56Sopenharmony_ci   indicates an error, :exc:`RuntimeError` is raised.
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci.. function:: MessageBeep(type=MB_OK)
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci   Call the underlying :c:func:`MessageBeep` function from the Platform API.  This
397db96d56Sopenharmony_ci   plays a sound as specified in the registry.  The *type* argument specifies which
407db96d56Sopenharmony_ci   sound to play; possible values are ``-1``, ``MB_ICONASTERISK``,
417db96d56Sopenharmony_ci   ``MB_ICONEXCLAMATION``, ``MB_ICONHAND``, ``MB_ICONQUESTION``, and ``MB_OK``, all
427db96d56Sopenharmony_ci   described below.  The value ``-1`` produces a "simple beep"; this is the final
437db96d56Sopenharmony_ci   fallback if a sound cannot be played otherwise.  If the system indicates an
447db96d56Sopenharmony_ci   error, :exc:`RuntimeError` is raised.
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci.. data:: SND_FILENAME
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ci   The *sound* parameter is the name of a WAV file. Do not use with
507db96d56Sopenharmony_ci   :const:`SND_ALIAS`.
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci.. data:: SND_ALIAS
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ci   The *sound* parameter is a sound association name from the registry.  If the
567db96d56Sopenharmony_ci   registry contains no such name, play the system default sound unless
577db96d56Sopenharmony_ci   :const:`SND_NODEFAULT` is also specified. If no default sound is registered,
587db96d56Sopenharmony_ci   raise :exc:`RuntimeError`. Do not use with :const:`SND_FILENAME`.
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_ci   All Win32 systems support at least the following; most systems support many
617db96d56Sopenharmony_ci   more:
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
647db96d56Sopenharmony_ci   | :func:`PlaySound` *name* | Corresponding Control Panel Sound name |
657db96d56Sopenharmony_ci   +==========================+========================================+
667db96d56Sopenharmony_ci   | ``'SystemAsterisk'``     | Asterisk                               |
677db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
687db96d56Sopenharmony_ci   | ``'SystemExclamation'``  | Exclamation                            |
697db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
707db96d56Sopenharmony_ci   | ``'SystemExit'``         | Exit Windows                           |
717db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
727db96d56Sopenharmony_ci   | ``'SystemHand'``         | Critical Stop                          |
737db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
747db96d56Sopenharmony_ci   | ``'SystemQuestion'``     | Question                               |
757db96d56Sopenharmony_ci   +--------------------------+----------------------------------------+
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci   For example::
787db96d56Sopenharmony_ci
797db96d56Sopenharmony_ci      import winsound
807db96d56Sopenharmony_ci      # Play Windows exit sound.
817db96d56Sopenharmony_ci      winsound.PlaySound("SystemExit", winsound.SND_ALIAS)
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci      # Probably play Windows default sound, if any is registered (because
847db96d56Sopenharmony_ci      # "*" probably isn't the registered name of any sound).
857db96d56Sopenharmony_ci      winsound.PlaySound("*", winsound.SND_ALIAS)
867db96d56Sopenharmony_ci
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci.. data:: SND_LOOP
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ci   Play the sound repeatedly.  The :const:`SND_ASYNC` flag must also be used to
917db96d56Sopenharmony_ci   avoid blocking.  Cannot be used with :const:`SND_MEMORY`.
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ci
947db96d56Sopenharmony_ci.. data:: SND_MEMORY
957db96d56Sopenharmony_ci
967db96d56Sopenharmony_ci   The *sound* parameter to :func:`PlaySound` is a memory image of a WAV file, as a
977db96d56Sopenharmony_ci   :term:`bytes-like object`.
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci   .. note::
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_ci      This module does not support playing from a memory image asynchronously, so a
1027db96d56Sopenharmony_ci      combination of this flag and :const:`SND_ASYNC` will raise :exc:`RuntimeError`.
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_ci
1057db96d56Sopenharmony_ci.. data:: SND_PURGE
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci   Stop playing all instances of the specified sound.
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ci   .. note::
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ci      This flag is not supported on modern Windows platforms.
1127db96d56Sopenharmony_ci
1137db96d56Sopenharmony_ci
1147db96d56Sopenharmony_ci.. data:: SND_ASYNC
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ci   Return immediately, allowing sounds to play asynchronously.
1177db96d56Sopenharmony_ci
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci.. data:: SND_NODEFAULT
1207db96d56Sopenharmony_ci
1217db96d56Sopenharmony_ci   If the specified sound cannot be found, do not play the system default sound.
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_ci
1247db96d56Sopenharmony_ci.. data:: SND_NOSTOP
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci   Do not interrupt sounds currently playing.
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ci.. data:: SND_NOWAIT
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci   Return immediately if the sound driver is busy.
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_ci   .. note::
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci      This flag is not supported on modern Windows platforms.
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci
1387db96d56Sopenharmony_ci.. data:: MB_ICONASTERISK
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci   Play the ``SystemDefault`` sound.
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ci.. data:: MB_ICONEXCLAMATION
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ci   Play the ``SystemExclamation`` sound.
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_ci.. data:: MB_ICONHAND
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ci   Play the ``SystemHand`` sound.
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci.. data:: MB_ICONQUESTION
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ci   Play the ``SystemQuestion`` sound.
1567db96d56Sopenharmony_ci
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci.. data:: MB_OK
1597db96d56Sopenharmony_ci
1607db96d56Sopenharmony_ci   Play the ``SystemDefault`` sound.
1617db96d56Sopenharmony_ci
162