{ "info": { "author": "EBU", "author_email": "ear-admin@list.ebu.ch", "bugtrack_url": null, "classifiers": [], "description": "# EBU ADM Renderer (EAR)\n\n[![Build Status](https://travis-ci.org/ebu/ebu_adm_renderer.svg?branch=master)](https://travis-ci.org/ebu/ebu_adm_renderer)\n[![codecov](https://codecov.io/gh/ebu/ebu_adm_renderer/branch/master/graph/badge.svg)](https://codecov.io/gh/ebu/ebu_adm_renderer)\n\nThe **EBU ADM Renderer** **(*EAR*)** is a complete interpretation of the **Audio Definition Model (ADM)** format, specified in Recommendation [ITU-R BS.2076-1](https://www.itu.int/rec/R-REC-BS.2076/en). ADM is the recommended format for all stages and use cases within the scope of programme productions of **Next Generation Audio (NGA)**. This repository contains a Python reference implementation of the EBU ADM Renderer.\n\nThis Renderer implementation is capable of rendering audio signals to all reproduction systems mentioned in [\"Advanced sound system for programme production (ITU-R BS.2051-1)\"](https://www.itu.int/rec/R-REC-BS.2051/en).\n\nFurther descriptions of the *EAR* algorithms and functionalities can be found in [EBU Tech 3388](https://tech.ebu.ch/publications/adm-renderer-for-use-in-nga-broadcasting).\n\n## Test files\nA initial set of ADM files to test the *EAR* can be found under\n - https://ebu.io/qc/testmaterial and\n - http://cvssp.org/data/s3a/public/radiodrama_register.php\n\n## Installation\n\nTo install the latest release from PyPi:\n\n```bash\n$ pip install ear\n```\n\n### Python versions\n\n*EAR* supports Python 2.7 and Python >=3.6\nand runs on all major platforms (Linux, Mac OSX, Windows).\n\n### Installation of extra packages\n\nIf you want to run the unit tests you can install all extra requirements with pip:\n```bash\n$ pip install ear[test]\n```\n\n## Getting started\n\nThe *EAR* reference implementation comes with two command line tools:\n\n- `ear-render` Is the main tool to render BW64/ADM audio files\n- `ear-utils` Collection of useful ADM utilities\n\n### Command line renderer\n\n```bash\nusage: ear-render [-h] [-d] -s target_system [-l layout_file]\n [--output-gain-db gain_db] [--fail-on-overload]\n [--enable-block-duration-fix] [--programme id]\n [--comp-object id]\n [--apply-conversion {to_cartesian,to_polar}] [--strict]\n input_file output_file\n\nEBU ADM renderer\n\npositional arguments:\n input_file\n output_file\n\noptional arguments:\n -h, --help show this help message and exit\n -d, --debug print debug information when an error occurs\n -s target_system, --system target_system\n Target output system, accoring to ITU-R BS.2051.\n Available systems are: 0+2+0, 0+5+0, 2+5+0, 4+5+0,\n 4+5+1, 3+7+0, 4+9+0, 9+10+3, 0+7+0, 4+7+0\n -l layout_file, --layout layout_file\n Layout config file\n --output-gain-db gain_db\n output gain in dB (default: 0)\n --fail-on-overload, -c\n fail if an overload condition is detected in the\n output\n --enable-block-duration-fix\n automatically try to fix faulty block format durations\n --programme id select an audioProgramme to render by ID\n --comp-object id select an audioObject by ID from a complementary group\n --apply-conversion {to_cartesian,to_polar}\n Apply conversion to Objects audioBlockFormats before\n rendering\n --strict treat unknown ADM attributes as errors\n```\n\nTo render an ADM file, the following three parameters must be given:\n - `-s` followed by the target output format to render to\n - the name of the input file\n - the name of the output file\n\nFor example `ear-render -s 0+5+0 input.wav output_surround.wav` will render the BW64/ADM file `input.wav` to a `0+5+0` target speaker layout and store the result in `output_surround.wav`.\n\nThe *optional* `--layout` parameter allows to specify the real loudspeaker positions and screen dimensions of a reproduction setup.\nRefer to [the layout file documentation](doc/layout_file.md) for more information about its format.\n\n`--fail-on-overload` makes the rendering process fail in case an overload in the output channels to ensure any signal clipping doesn't go unnoticed. Use `--output-gain-db` to adjust the output gain.\n\n`--enable-block-duration-fix` automatically fixes durations of `audioBlockFormats` in case they are not continuous.\n**Please note** that the proper way to handle this situation is to fix the input file.\n\n`--strict` enables strict ADM parsing mode. Some of the currently available\nADM/BW64 files may not strictly adhere to the BS.2076 specification, for example by including xml attributes that are not part of the standard.\nThe default behaviour is to output a warning and continue processing.\nWhen strict mode is enabled, warnings are turned into errors and processing is stopped.\n\n\n**Please note** that, depending on the size of the file, it may\ntake some time to render the file. At the time of writing, the parsing of the ADM XML data is relatively slow when the ADM is large (>= a few megabytes).\n\n### Command line ADM utilities\n\nThe `ear-utils` command provides various subcommands which can be seen on the help message\nwhen called with `ear-utils --help`:\n\nEach subcommand may have its own command line options, which can be\ndisplayed using `ear-utils SUBCOMMAND --help`, where `SUBCOMMAND` is one of the supported subcommands.\n\n```bash\nusage: ear-utils [-h]\n {make_test_bwf,replace_axml,dump_axml,dump_chna,ambix_to_bwf}\n ...\n\nEBU ADM renderer utilities\n\noptional arguments:\n -h, --help show this help message and exit\n\navailable subcommands:\n {make_test_bwf,replace_axml,dump_axml,dump_chna,ambix_to_bwf}\n make_test_bwf make a bwf file from a wav file and some metadata\n replace_axml replace the axml chunk in an existing ADM BWF file\n dump_axml dump the axml chunk of an ADM BWF file to stdout\n dump_chna dump the chna chunk of an ADM BWF file to stdout\n ambix_to_bwf make a BWF file from an ambix format HOA file\n```\n\n#### HOA ADM Creation\n```bash\nusage: ear-utils ambix_to_bwf [-h] [--norm NORM] [--nfcDist NFCDIST]\n [--screenRef] [--chna-only]\n input output\n\npositional arguments:\n input input file\n output output BWF file\n\noptional arguments:\n -h, --help show this help message and exit\n --norm NORM normalization mode\n --nfcDist NFCDIST Near-Field Compensation Distance (float)\n --screenRef Screen Reference\n --chna-only use only CHNA with common definitions\n```\n\n\nTo convert an ambiX file in an ADM one, the following two parameters must be given:\n- the name of the input file\n- the name of the output file\n\nThe optional parameters are :\n- The normalization of the signals (N3D, FuMa or SN3D, which is the default value)\n- The NFC Distance, i.e., the distance at which the HOA mix was created. A float value between 0 and 20 meters must be given.\n The default value 0 means no NFC processing.\n- The screenRef flag, which tells if the audio content is screen related or not. The default value is False, which means no screen scaling.\n\nFor example, `ear-utils ambix_to_bwf --nfcDist 2.53 input.wav output.wav` will create an ADM file called output.wav containing the audio samples of the input.wav file and the ADM metadata corresponding to an ambiX file with SN3D normalization, an 2.53 meters nfcDist, and no screen scaling.\n\n**Please note** that the software implicitly assumes that all the HOA channels are in ACN ordering and that no channel is missing. For example, it will assumes the signal is a 4th order HOA signal if it finds 25 channels ((4+1)\u00b2=25).\n\n# Changelog\n\n## [2.0.0] - 2019-05-22\n\nChanges for ITU ADM renderer reference code.\n\n- Changes to rendering of Objects specified using Cartesian parameters.\n- Added conversion between Cartesian and polar Objects parameters.\n- Changed to BSD-Clear license.\n\n## [1.2.0] - 2019-05-22\n\n### Fixed\n- Slightly non-normalised gains in extent panner.\n\n### Changed\n- Improved downmix/upmix behaviour for DirectSpeakers content specified using\n the common definitions.\n- Change default azimuth of M+-SC to 15.\n- Support wider azimuths for M+-SC; they may now be between 5 and 25 degrees,\n or 35 and 60 degrees.\n- Removed LFE behaviour for Objects.\n- Validate Cartesian and frequency information for Objects\n\n## [1.1.2] - 2019-05-22\n\n### Fixed\n- Bug whereby NaNs could be produced in polar extent panner.\n\n## [1.1.1] - 2019-04-12\n\n### Fixed\n- `aspectRatio` is an attribute not an element.\n- Accept the `urn:ebu:metadata-schema:ebuCore_2016` namespace.\n- Added default for Z coordinates.\n- Various deprecation warnings.\n\n### Added\n- Specified loudspeaker positions are now checked against the allowed ranges.\n- Validation of screenEdgeLock in Objects.\n\n## [1.1.0] - 2018-11-26\n\n### Removed\n- `adm_parent` references in ADM objects.\n\n### Added\n- `Matrix` type support.\n- Simple validation of ADM data model, and more extensive validation of ADM\n structures.\n- Support for rendering objects with silent `audioTrackUID` references.\n- Support for `audioPackFormat` HOA parameters.\n- Selection of `audioProgramme` and complementary `audioObjects` from\n `ear-render`.\n- `adm_path` to `RenderingItems`, with pointers to the corresponding ADM\n objects. This is not used by the renderer but is a useful feature for other\n applications built on top of the underlying ADM library.\n- Support for more flexible referencing of nested `audioPackFormats`; each\n `audioTrackUID` or `chna` row can reference any appropriate `audioPackFormat`\n on the path from the root `audioPackFormat` (which contains the full set of\n `audioChannelFormats` used) to the `audioPackFormat` that contains the\n `audioChannelFormat` of the track.\n- Better support for using multi-channel `audioPackFormats` -- in an\n `audioObject` or `chna`-only file using multiple `audioPackFormats` may be\n ambiguous if they share some `audioChannelFormats`. This should now be\n handled correctly in all cases.\n\n### Changed\n- The reference direction between `audioTrackFormat` and `audioStreamFormat`\n was reversed in the data model (`audioTrackFormat`s now point at a single\n `audioStreamFormat`), and `axml` references in either direction now establish\n this relationship. Note that this does not follow the exact wording in\n BS.2076-1, but this helps compatibility with other systems and should match\n future revisions of BS.2076. If either of these references are omitted a\n warning will be issued when a file is rendered. When generating BW64+ADM\n files (with `ear-utils`) both reference directions are now included.\n- Complete re-implementation of `RenderingItem` selection to support other\n features in this release. This functionality was moved from\n `ear.fileio.utils` to `ear.core.select_items`.\n- `RenderingItems` now use the `TrackSpec` structure rather than an index to\n point to their source audio, to allow for silent and `Matrix` tracks.\n\n## [1.0.1] - 2018-11-23\n\n### Changed\n- An error will be raised if any `audioTrackUID` elements or CHNA rows have ID\n `ATU_00000000`, as references to these elements could be confused with silent\n `audioTrackUID` references.\n- Miscellaneous improvements to testing infrastructure.\n\n### Fixed\n- When generating BW64+ADM files (with `ear-utils`), do not generate\n `audioTrackUID`s with ID `ATU_00000000`, which (as above) could be confused\n with silent `audioTrackUID` references.\n- Updated use of `attrs` to fix deprecation warnings.\n- Wrong imports and CHNA chunk generation in `replace_axml` command.\n- Pytest warnings fixed by upgrading `pytest-datafiles` to 2.0.\n- Error when testing `block_aligner` on python 3.7 with coverage enabled.\n- Error in `PeakMonitor` when rendering very short files.\n- `dump_chna` in binary mode on python 3.\n- Padding character in axml chunk.\n\n## 1.0.0 - 2018-03-29\n\nInitial release.\n\n[2.0.0]: https://github.com/ebu/ebu_adm_renderer/compare/1.2.0...2.0.0\n[1.2.0]: https://github.com/ebu/ebu_adm_renderer/compare/1.1.2...1.2.0\n[1.1.2]: https://github.com/ebu/ebu_adm_renderer/compare/1.1.1...1.1.2\n[1.1.1]: https://github.com/ebu/ebu_adm_renderer/compare/1.1.0...1.1.1\n[1.1.0]: https://github.com/ebu/ebu_adm_renderer/compare/1.0.1...1.1.0\n[1.0.1]: https://github.com/ebu/ebu_adm_renderer/compare/1.0.0...1.0.1", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ebu/ebu_adm_renderer", "keywords": "", "license": "BSD-3-Clause-Clear", "maintainer": "", "maintainer_email": "", "name": "ear", "package_url": "https://pypi.org/project/ear/", "platform": "", "project_url": "https://pypi.org/project/ear/", "project_urls": { "Homepage": "https://github.com/ebu/ebu_adm_renderer" }, "release_url": "https://pypi.org/project/ear/2.0.0/", "requires_dist": null, "requires_python": "", "summary": "EBU ADM Renderer", "version": "2.0.0" }, "last_serial": 5304244, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "aae9af9546584a0998e8d34fbe7c38b9", "sha256": "24a5281dc952722d10b08005e56cbc8b1a2e5ad3f8230d19cc4b5e77c6b9f239" }, "downloads": -1, "filename": "ear-1.0.0.tar.gz", "has_sig": false, "md5_digest": "aae9af9546584a0998e8d34fbe7c38b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 549946, "upload_time": "2018-03-29T13:46:19", "url": "https://files.pythonhosted.org/packages/71/b2/edf518664df1f147bbe8ae81222222e2e107cf53734ecf8605f1d9f01cc6/ear-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "07db1263cce6357a2c0794398c6c650a", "sha256": "4403d9c27b7a33bea2b4754205d50ddee5d0ddb7b4f88721202cd983ac9b5abc" }, "downloads": -1, "filename": "ear-1.0.1.tar.gz", "has_sig": false, "md5_digest": "07db1263cce6357a2c0794398c6c650a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 551353, "upload_time": "2018-11-23T18:47:56", "url": "https://files.pythonhosted.org/packages/31/2d/985426ac8b7659c147f342cf8fff7f5b9b991b363487ce0f8bc20af34040/ear-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "8b835eb39134ce007698f9185a0a27bb", "sha256": "0c98e571efdbd72ab2c2b395fadf736493d5b84f34004e98abead89be75cb0f0" }, "downloads": -1, "filename": "ear-1.1.0.tar.gz", "has_sig": false, "md5_digest": "8b835eb39134ce007698f9185a0a27bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 580351, "upload_time": "2018-11-26T17:03:17", "url": "https://files.pythonhosted.org/packages/55/bf/63a60657907ecaa65a075e9f18a529db07c11b63f53a7b8782fbb67005f1/ear-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "88f507090315ed128486357eec08f52f", "sha256": "710b48d7a363c50fa169a2cd18626f6122833ded895eaa00505eb3faeddb50f4" }, "downloads": -1, "filename": "ear-1.1.1.tar.gz", "has_sig": false, "md5_digest": "88f507090315ed128486357eec08f52f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 586723, "upload_time": "2019-04-12T10:27:04", "url": "https://files.pythonhosted.org/packages/00/12/7135bdcc0ec548ba76d18f68a43a17324a2a5793523437f858bb304bcfcf/ear-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "405b9c45da29656e1b4f46a85770e6ff", "sha256": "86245143607137c8598341f5ae7f32d4f2bd5fcc7bd6a5a6ec9829df3f4c6b4c" }, "downloads": -1, "filename": "ear-1.1.2.tar.gz", "has_sig": false, "md5_digest": "405b9c45da29656e1b4f46a85770e6ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 587088, "upload_time": "2019-05-22T19:38:37", "url": "https://files.pythonhosted.org/packages/0e/bd/1d873d8c0d78bf3236316fb434d76f3b02a14cd0403c1fe9aa4e0522bc9b/ear-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7b6b50db5abbc13883aca9910564e52f", "sha256": "f1b0317792a0182b2aa6c24d66f1c94e18fe241b28c5740bdeb93d3c5e5493d7" }, "downloads": -1, "filename": "ear-1.2.0.tar.gz", "has_sig": false, "md5_digest": "7b6b50db5abbc13883aca9910564e52f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 595218, "upload_time": "2019-05-22T19:39:33", "url": "https://files.pythonhosted.org/packages/c0/8e/e7a75a71b980653e9529a7b1b91b0309739f5a883137cdbdd6b6a102b61f/ear-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "b11003807e555cb2e571f2a1f1d035fc", "sha256": "52c2507c03d47be2a0e70fd0478f8a827d75a01c338eb2c77c3ad7282cec6f3b" }, "downloads": -1, "filename": "ear-2.0.0.tar.gz", "has_sig": false, "md5_digest": "b11003807e555cb2e571f2a1f1d035fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 614016, "upload_time": "2019-05-22T19:40:23", "url": "https://files.pythonhosted.org/packages/56/39/c014b0020c0d3024e7aa8b0f026a865be5abc469a7ff3ab59957099f23a3/ear-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b11003807e555cb2e571f2a1f1d035fc", "sha256": "52c2507c03d47be2a0e70fd0478f8a827d75a01c338eb2c77c3ad7282cec6f3b" }, "downloads": -1, "filename": "ear-2.0.0.tar.gz", "has_sig": false, "md5_digest": "b11003807e555cb2e571f2a1f1d035fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 614016, "upload_time": "2019-05-22T19:40:23", "url": "https://files.pythonhosted.org/packages/56/39/c014b0020c0d3024e7aa8b0f026a865be5abc469a7ff3ab59957099f23a3/ear-2.0.0.tar.gz" } ] }