17db96d56Sopenharmony_ci:mod:`sunau` --- Read and write Sun AU files 27db96d56Sopenharmony_ci============================================ 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: sunau 57db96d56Sopenharmony_ci :synopsis: Provide an interface to the Sun AU sound format. 67db96d56Sopenharmony_ci :deprecated: 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il> 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci**Source code:** :source:`Lib/sunau.py` 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci.. deprecated-removed:: 3.11 3.13 137db96d56Sopenharmony_ci The :mod:`sunau` module is deprecated 147db96d56Sopenharmony_ci (see :pep:`PEP 594 <594#sunau>` for details). 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci-------------- 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciThe :mod:`sunau` module provides a convenient interface to the Sun AU sound 197db96d56Sopenharmony_ciformat. Note that this module is interface-compatible with the modules 207db96d56Sopenharmony_ci:mod:`aifc` and :mod:`wave`. 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ciAn audio file consists of a header followed by the data. The fields of the 237db96d56Sopenharmony_ciheader are: 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 267db96d56Sopenharmony_ci| Field | Contents | 277db96d56Sopenharmony_ci+===============+===============================================+ 287db96d56Sopenharmony_ci| magic word | The four bytes ``.snd``. | 297db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 307db96d56Sopenharmony_ci| header size | Size of the header, including info, in bytes. | 317db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 327db96d56Sopenharmony_ci| data size | Physical size of the data, in bytes. | 337db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 347db96d56Sopenharmony_ci| encoding | Indicates how the audio samples are encoded. | 357db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 367db96d56Sopenharmony_ci| sample rate | The sampling rate. | 377db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 387db96d56Sopenharmony_ci| # of channels | The number of channels in the samples. | 397db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 407db96d56Sopenharmony_ci| info | ASCII string giving a description of the | 417db96d56Sopenharmony_ci| | audio file (padded with null bytes). | 427db96d56Sopenharmony_ci+---------------+-----------------------------------------------+ 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ciApart from the info field, all header fields are 4 bytes in size. They are all 457db96d56Sopenharmony_ci32-bit unsigned integers encoded in big-endian byte order. 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ciThe :mod:`sunau` module defines the following functions: 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci.. function:: open(file, mode) 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci If *file* is a string, open the file by that name, otherwise treat it as a 537db96d56Sopenharmony_ci seekable file-like object. *mode* can be any of 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci ``'r'`` 567db96d56Sopenharmony_ci Read only mode. 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci ``'w'`` 597db96d56Sopenharmony_ci Write only mode. 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci Note that it does not allow read/write files. 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci A *mode* of ``'r'`` returns an :class:`AU_read` object, while a *mode* of ``'w'`` 647db96d56Sopenharmony_ci or ``'wb'`` returns an :class:`AU_write` object. 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ciThe :mod:`sunau` module defines the following exception: 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci.. exception:: Error 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci An error raised when something is impossible because of Sun AU specs or 727db96d56Sopenharmony_ci implementation deficiency. 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ciThe :mod:`sunau` module defines the following data items: 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci.. data:: AUDIO_FILE_MAGIC 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_ci An integer every valid Sun AU file begins with, stored in big-endian form. This 807db96d56Sopenharmony_ci is the string ``.snd`` interpreted as an integer. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci.. data:: AUDIO_FILE_ENCODING_MULAW_8 847db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_LINEAR_8 857db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_LINEAR_16 867db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_LINEAR_24 877db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_LINEAR_32 887db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_ALAW_8 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci Values of the encoding field from the AU header which are supported by this 917db96d56Sopenharmony_ci module. 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ci.. data:: AUDIO_FILE_ENCODING_FLOAT 957db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_DOUBLE 967db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_ADPCM_G721 977db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_ADPCM_G722 987db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_ADPCM_G723_3 997db96d56Sopenharmony_ci AUDIO_FILE_ENCODING_ADPCM_G723_5 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_ci Additional known values of the encoding field from the AU header, but which are 1027db96d56Sopenharmony_ci not supported by this module. 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci.. _au-read-objects: 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ciAU_read Objects 1087db96d56Sopenharmony_ci--------------- 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ciAU_read objects, as returned by :func:`.open` above, have the following methods: 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci.. method:: AU_read.close() 1147db96d56Sopenharmony_ci 1157db96d56Sopenharmony_ci Close the stream, and make the instance unusable. (This is called automatically 1167db96d56Sopenharmony_ci on deletion.) 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci.. method:: AU_read.getnchannels() 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci Returns number of audio channels (1 for mono, 2 for stereo). 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci.. method:: AU_read.getsampwidth() 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci Returns sample width in bytes. 1277db96d56Sopenharmony_ci 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci.. method:: AU_read.getframerate() 1307db96d56Sopenharmony_ci 1317db96d56Sopenharmony_ci Returns sampling frequency. 1327db96d56Sopenharmony_ci 1337db96d56Sopenharmony_ci 1347db96d56Sopenharmony_ci.. method:: AU_read.getnframes() 1357db96d56Sopenharmony_ci 1367db96d56Sopenharmony_ci Returns number of audio frames. 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci.. method:: AU_read.getcomptype() 1407db96d56Sopenharmony_ci 1417db96d56Sopenharmony_ci Returns compression type. Supported compression types are ``'ULAW'``, ``'ALAW'`` 1427db96d56Sopenharmony_ci and ``'NONE'``. 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci.. method:: AU_read.getcompname() 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci Human-readable version of :meth:`getcomptype`. The supported types have the 1487db96d56Sopenharmony_ci respective names ``'CCITT G.711 u-law'``, ``'CCITT G.711 A-law'`` and ``'not 1497db96d56Sopenharmony_ci compressed'``. 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci 1527db96d56Sopenharmony_ci.. method:: AU_read.getparams() 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth, 1557db96d56Sopenharmony_ci framerate, nframes, comptype, compname)``, equivalent to output of the 1567db96d56Sopenharmony_ci :meth:`get\*` methods. 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci.. method:: AU_read.readframes(n) 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci Reads and returns at most *n* frames of audio, as a :class:`bytes` object. The data 1627db96d56Sopenharmony_ci will be returned in linear format. If the original data is in u-LAW format, it 1637db96d56Sopenharmony_ci will be converted. 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci.. method:: AU_read.rewind() 1677db96d56Sopenharmony_ci 1687db96d56Sopenharmony_ci Rewind the file pointer to the beginning of the audio stream. 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ciThe following two methods define a term "position" which is compatible between 1717db96d56Sopenharmony_cithem, and is otherwise implementation dependent. 1727db96d56Sopenharmony_ci 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ci.. method:: AU_read.setpos(pos) 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci Set the file pointer to the specified position. Only values returned from 1777db96d56Sopenharmony_ci :meth:`tell` should be used for *pos*. 1787db96d56Sopenharmony_ci 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ci.. method:: AU_read.tell() 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ci Return current file pointer position. Note that the returned value has nothing 1837db96d56Sopenharmony_ci to do with the actual position in the file. 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ciThe following two functions are defined for compatibility with the :mod:`aifc`, 1867db96d56Sopenharmony_ciand don't do anything interesting. 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci.. method:: AU_read.getmarkers() 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci Returns ``None``. 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci.. method:: AU_read.getmark(id) 1957db96d56Sopenharmony_ci 1967db96d56Sopenharmony_ci Raise an error. 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci.. _au-write-objects: 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ciAU_write Objects 2027db96d56Sopenharmony_ci---------------- 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ciAU_write objects, as returned by :func:`.open` above, have the following methods: 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci.. method:: AU_write.setnchannels(n) 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci Set the number of channels. 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ci.. method:: AU_write.setsampwidth(n) 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci Set the sample width (in bytes.) 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci .. versionchanged:: 3.4 2177db96d56Sopenharmony_ci Added support for 24-bit samples. 2187db96d56Sopenharmony_ci 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci.. method:: AU_write.setframerate(n) 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci Set the frame rate. 2237db96d56Sopenharmony_ci 2247db96d56Sopenharmony_ci 2257db96d56Sopenharmony_ci.. method:: AU_write.setnframes(n) 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci Set the number of frames. This can be later changed, when and if more frames 2287db96d56Sopenharmony_ci are written. 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci 2317db96d56Sopenharmony_ci.. method:: AU_write.setcomptype(type, name) 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci Set the compression type and description. Only ``'NONE'`` and ``'ULAW'`` are 2347db96d56Sopenharmony_ci supported on output. 2357db96d56Sopenharmony_ci 2367db96d56Sopenharmony_ci 2377db96d56Sopenharmony_ci.. method:: AU_write.setparams(tuple) 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ci The *tuple* should be ``(nchannels, sampwidth, framerate, nframes, comptype, 2407db96d56Sopenharmony_ci compname)``, with values valid for the :meth:`set\*` methods. Set all 2417db96d56Sopenharmony_ci parameters. 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_ci 2447db96d56Sopenharmony_ci.. method:: AU_write.tell() 2457db96d56Sopenharmony_ci 2467db96d56Sopenharmony_ci Return current position in the file, with the same disclaimer for the 2477db96d56Sopenharmony_ci :meth:`AU_read.tell` and :meth:`AU_read.setpos` methods. 2487db96d56Sopenharmony_ci 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ci.. method:: AU_write.writeframesraw(data) 2517db96d56Sopenharmony_ci 2527db96d56Sopenharmony_ci Write audio frames, without correcting *nframes*. 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci .. versionchanged:: 3.4 2557db96d56Sopenharmony_ci Any :term:`bytes-like object` is now accepted. 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci.. method:: AU_write.writeframes(data) 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci Write audio frames and make sure *nframes* is correct. 2617db96d56Sopenharmony_ci 2627db96d56Sopenharmony_ci .. versionchanged:: 3.4 2637db96d56Sopenharmony_ci Any :term:`bytes-like object` is now accepted. 2647db96d56Sopenharmony_ci 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci.. method:: AU_write.close() 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci Make sure *nframes* is correct, and close the file. 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci This method is called upon deletion. 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ciNote that it is invalid to set any parameters after calling :meth:`writeframes` 2737db96d56Sopenharmony_cior :meth:`writeframesraw`. 2747db96d56Sopenharmony_ci 275