xref: /third_party/python/Doc/library/aifc.rst (revision 7db96d56)
17db96d56Sopenharmony_ci:mod:`aifc` --- Read and write AIFF and AIFC files
27db96d56Sopenharmony_ci==================================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: aifc
57db96d56Sopenharmony_ci   :synopsis: Read and write audio files in AIFF or AIFC format.
67db96d56Sopenharmony_ci   :deprecated:
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci**Source code:** :source:`Lib/aifc.py`
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci.. index::
117db96d56Sopenharmony_ci   single: Audio Interchange File Format
127db96d56Sopenharmony_ci   single: AIFF
137db96d56Sopenharmony_ci   single: AIFF-C
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci.. deprecated-removed:: 3.11 3.13
177db96d56Sopenharmony_ci   The :mod:`aifc` module is deprecated
187db96d56Sopenharmony_ci   (see :pep:`PEP 594 <594#aifc>` for details).
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci--------------
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ciThis module provides support for reading and writing AIFF and AIFF-C files.
237db96d56Sopenharmony_ciAIFF is Audio Interchange File Format, a format for storing digital audio
247db96d56Sopenharmony_cisamples in a file.  AIFF-C is a newer version of the format that includes the
257db96d56Sopenharmony_ciability to compress the audio data.
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ciAudio files have a number of parameters that describe the audio data. The
287db96d56Sopenharmony_cisampling rate or frame rate is the number of times per second the sound is
297db96d56Sopenharmony_cisampled.  The number of channels indicate if the audio is mono, stereo, or
307db96d56Sopenharmony_ciquadro.  Each frame consists of one sample per channel.  The sample size is the
317db96d56Sopenharmony_cisize in bytes of each sample.  Thus a frame consists of
327db96d56Sopenharmony_ci``nchannels * samplesize`` bytes, and a second's worth of audio consists of
337db96d56Sopenharmony_ci``nchannels * samplesize * framerate`` bytes.
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciFor example, CD quality audio has a sample size of two bytes (16 bits), uses two
367db96d56Sopenharmony_cichannels (stereo) and has a frame rate of 44,100 frames/second.  This gives a
377db96d56Sopenharmony_ciframe size of 4 bytes (2\*2), and a second's worth occupies 2\*2\*44100 bytes
387db96d56Sopenharmony_ci(176,400 bytes).
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ciModule :mod:`aifc` defines the following function:
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci.. function:: open(file, mode=None)
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci   Open an AIFF or AIFF-C file and return an object instance with methods that are
467db96d56Sopenharmony_ci   described below.  The argument *file* is either a string naming a file or a
477db96d56Sopenharmony_ci   :term:`file object`.  *mode* must be ``'r'`` or ``'rb'`` when the file must be
487db96d56Sopenharmony_ci   opened for reading, or ``'w'``  or ``'wb'`` when the file must be opened for writing.
497db96d56Sopenharmony_ci   If omitted, ``file.mode`` is used if it exists, otherwise ``'rb'`` is used.  When
507db96d56Sopenharmony_ci   used for writing, the file object should be seekable, unless you know ahead of
517db96d56Sopenharmony_ci   time how many samples you are going to write in total and use
527db96d56Sopenharmony_ci   :meth:`writeframesraw` and :meth:`setnframes`.
537db96d56Sopenharmony_ci   The :func:`.open` function may be used in a :keyword:`with` statement.  When
547db96d56Sopenharmony_ci   the :keyword:`!with` block completes, the :meth:`~aifc.close` method is called.
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci   .. versionchanged:: 3.4
577db96d56Sopenharmony_ci      Support for the :keyword:`with` statement was added.
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ciObjects returned by :func:`.open` when a file is opened for reading have the
607db96d56Sopenharmony_cifollowing methods:
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci.. method:: aifc.getnchannels()
647db96d56Sopenharmony_ci
657db96d56Sopenharmony_ci   Return the number of audio channels (1 for mono, 2 for stereo).
667db96d56Sopenharmony_ci
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ci.. method:: aifc.getsampwidth()
697db96d56Sopenharmony_ci
707db96d56Sopenharmony_ci   Return the size in bytes of individual samples.
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_ci.. method:: aifc.getframerate()
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ci   Return the sampling rate (number of audio frames per second).
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ci.. method:: aifc.getnframes()
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_ci   Return the number of audio frames in the file.
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci.. method:: aifc.getcomptype()
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci   Return a bytes array of length 4 describing the type of compression
867db96d56Sopenharmony_ci   used in the audio file.  For AIFF files, the returned value is
877db96d56Sopenharmony_ci   ``b'NONE'``.
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ci.. method:: aifc.getcompname()
917db96d56Sopenharmony_ci
927db96d56Sopenharmony_ci   Return a bytes array convertible to a human-readable description
937db96d56Sopenharmony_ci   of the type of compression used in the audio file.  For AIFF files,
947db96d56Sopenharmony_ci   the returned value is ``b'not compressed'``.
957db96d56Sopenharmony_ci
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ci.. method:: aifc.getparams()
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci   Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth,
1007db96d56Sopenharmony_ci   framerate, nframes, comptype, compname)``, equivalent to output of the
1017db96d56Sopenharmony_ci   :meth:`get\*` methods.
1027db96d56Sopenharmony_ci
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_ci.. method:: aifc.getmarkers()
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci   Return a list of markers in the audio file.  A marker consists of a tuple of
1077db96d56Sopenharmony_ci   three elements.  The first is the mark ID (an integer), the second is the mark
1087db96d56Sopenharmony_ci   position in frames from the beginning of the data (an integer), the third is the
1097db96d56Sopenharmony_ci   name of the mark (a string).
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ci
1127db96d56Sopenharmony_ci.. method:: aifc.getmark(id)
1137db96d56Sopenharmony_ci
1147db96d56Sopenharmony_ci   Return the tuple as described in :meth:`getmarkers` for the mark with the given
1157db96d56Sopenharmony_ci   *id*.
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci
1187db96d56Sopenharmony_ci.. method:: aifc.readframes(nframes)
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci   Read and return the next *nframes* frames from the audio file.  The returned
1217db96d56Sopenharmony_ci   data is a string containing for each frame the uncompressed samples of all
1227db96d56Sopenharmony_ci   channels.
1237db96d56Sopenharmony_ci
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_ci.. method:: aifc.rewind()
1267db96d56Sopenharmony_ci
1277db96d56Sopenharmony_ci   Rewind the read pointer.  The next :meth:`readframes` will start from the
1287db96d56Sopenharmony_ci   beginning.
1297db96d56Sopenharmony_ci
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci.. method:: aifc.setpos(pos)
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_ci   Seek to the specified frame number.
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci
1367db96d56Sopenharmony_ci.. method:: aifc.tell()
1377db96d56Sopenharmony_ci
1387db96d56Sopenharmony_ci   Return the current frame number.
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ci.. method:: aifc.close()
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ci   Close the AIFF file.  After calling this method, the object can no longer be
1447db96d56Sopenharmony_ci   used.
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ciObjects returned by :func:`.open` when a file is opened for writing have all the
1477db96d56Sopenharmony_ciabove methods, except for :meth:`readframes` and :meth:`setpos`.  In addition
1487db96d56Sopenharmony_cithe following methods exist.  The :meth:`get\*` methods can only be called after
1497db96d56Sopenharmony_cithe corresponding :meth:`set\*` methods have been called.  Before the first
1507db96d56Sopenharmony_ci:meth:`writeframes` or :meth:`writeframesraw`, all parameters except for the
1517db96d56Sopenharmony_cinumber of frames must be filled in.
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci.. method:: aifc.aiff()
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_ci   Create an AIFF file.  The default is that an AIFF-C file is created, unless the
1577db96d56Sopenharmony_ci   name of the file ends in ``'.aiff'`` in which case the default is an AIFF file.
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ci
1607db96d56Sopenharmony_ci.. method:: aifc.aifc()
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ci   Create an AIFF-C file.  The default is that an AIFF-C file is created, unless
1637db96d56Sopenharmony_ci   the name of the file ends in ``'.aiff'`` in which case the default is an AIFF
1647db96d56Sopenharmony_ci   file.
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci.. method:: aifc.setnchannels(nchannels)
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci   Specify the number of channels in the audio file.
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ci.. method:: aifc.setsampwidth(width)
1737db96d56Sopenharmony_ci
1747db96d56Sopenharmony_ci   Specify the size in bytes of audio samples.
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci.. method:: aifc.setframerate(rate)
1787db96d56Sopenharmony_ci
1797db96d56Sopenharmony_ci   Specify the sampling frequency in frames per second.
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci.. method:: aifc.setnframes(nframes)
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_ci   Specify the number of frames that are to be written to the audio file. If this
1857db96d56Sopenharmony_ci   parameter is not set, or not set correctly, the file needs to support seeking.
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_ci.. method:: aifc.setcomptype(type, name)
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_ci   .. index::
1917db96d56Sopenharmony_ci      single: u-LAW
1927db96d56Sopenharmony_ci      single: A-LAW
1937db96d56Sopenharmony_ci      single: G.722
1947db96d56Sopenharmony_ci
1957db96d56Sopenharmony_ci   Specify the compression type.  If not specified, the audio data will
1967db96d56Sopenharmony_ci   not be compressed.  In AIFF files, compression is not possible.
1977db96d56Sopenharmony_ci   The name parameter should be a human-readable description of the
1987db96d56Sopenharmony_ci   compression type as a bytes array, the type parameter should be a
1997db96d56Sopenharmony_ci   bytes array of length 4.  Currently the following compression types
2007db96d56Sopenharmony_ci   are supported: ``b'NONE'``, ``b'ULAW'``, ``b'ALAW'``, ``b'G722'``.
2017db96d56Sopenharmony_ci
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci.. method:: aifc.setparams(nchannels, sampwidth, framerate, comptype, compname)
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_ci   Set all the above parameters at once.  The argument is a tuple consisting of the
2067db96d56Sopenharmony_ci   various parameters.  This means that it is possible to use the result of a
2077db96d56Sopenharmony_ci   :meth:`getparams` call as argument to :meth:`setparams`.
2087db96d56Sopenharmony_ci
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ci.. method:: aifc.setmark(id, pos, name)
2117db96d56Sopenharmony_ci
2127db96d56Sopenharmony_ci   Add a mark with the given id (larger than 0), and the given name at the given
2137db96d56Sopenharmony_ci   position.  This method can be called at any time before :meth:`close`.
2147db96d56Sopenharmony_ci
2157db96d56Sopenharmony_ci
2167db96d56Sopenharmony_ci.. method:: aifc.tell()
2177db96d56Sopenharmony_ci   :noindex:
2187db96d56Sopenharmony_ci
2197db96d56Sopenharmony_ci   Return the current write position in the output file.  Useful in combination
2207db96d56Sopenharmony_ci   with :meth:`setmark`.
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ci.. method:: aifc.writeframes(data)
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci   Write data to the output file.  This method can only be called after the audio
2267db96d56Sopenharmony_ci   file parameters have been set.
2277db96d56Sopenharmony_ci
2287db96d56Sopenharmony_ci   .. versionchanged:: 3.4
2297db96d56Sopenharmony_ci      Any :term:`bytes-like object` is now accepted.
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci
2327db96d56Sopenharmony_ci.. method:: aifc.writeframesraw(data)
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci   Like :meth:`writeframes`, except that the header of the audio file is not
2357db96d56Sopenharmony_ci   updated.
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ci   .. versionchanged:: 3.4
2387db96d56Sopenharmony_ci      Any :term:`bytes-like object` is now accepted.
2397db96d56Sopenharmony_ci
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_ci.. method:: aifc.close()
2427db96d56Sopenharmony_ci   :noindex:
2437db96d56Sopenharmony_ci
2447db96d56Sopenharmony_ci   Close the AIFF file.  The header of the file is updated to reflect the actual
2457db96d56Sopenharmony_ci   size of the audio data. After calling this method, the object can no longer be
2467db96d56Sopenharmony_ci   used.
2477db96d56Sopenharmony_ci
248