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