Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
271 commits
Select commit Hold shift + click to select a range
38a7af7
changes test: add zoneExclusion
tomjnixon Apr 20, 2021
2c05551
changes test: regenerate data
tomjnixon Apr 20, 2021
f26f304
screen scale: check that calls to interp have sorted xp values
tomjnixon Apr 19, 2021
214eb36
screen scale: check for valid screen in PolarEdges
tomjnixon Apr 19, 2021
2185dcd
feature: add loudnessMetadata from BS.2076-1
kickermeister Mar 20, 2021
3eadd61
fix warnings from ruamel.yaml
tomjnixon Jun 15, 2021
6c7d264
conversion: remove duplicated test cases
tomjnixon Apr 23, 2021
01ba2e7
conversion: fix mixed-up height and depth
tomjnixon Apr 23, 2021
a9d6949
conversion: update changelog
tomjnixon Aug 18, 2021
b8625c1
channel lock: fix priority order
tomjnixon Jul 19, 2021
0680fe3
channel lock: add more tests
tomjnixon Jul 19, 2021
7126a37
channel lock: update changelog
tomjnixon Aug 19, 2021
898de61
adm: export ObjectPosition
tomjnixon Jul 29, 2021
e230863
adm: export DirectSpeakerPosition
tomjnixon Jul 30, 2021
459b6d0
adm: rename BlockFormat to AudioBlockFormat
tomjnixon Aug 17, 2021
b412cc3
adm: export AudioBlockFormat
tomjnixon Aug 17, 2021
742da6d
exceptions: fix typo in message
tomjnixon Aug 2, 2021
08a6636
docs: correct elevation copy/paste error
tomjnixon Aug 9, 2021
97f1db8
docs: fix select_rendering_items docstring
tomjnixon Jul 29, 2021
58dce34
docs: fix typo in DirectSpeakersTypeMetadata
tomjnixon Jul 30, 2021
9eb6e27
docs: fix typo in Alegendre
tomjnixon Aug 9, 2021
f2276e6
docs: fix load_real_layout return type
tomjnixon Aug 2, 2021
3e0c18e
docs: fix load_real_layout parameter name
tomjnixon Aug 17, 2021
de079fa
docs: fix TrackProcessor return type
tomjnixon Aug 2, 2021
a7136d2
docs: improve select_rendering_items formatting
tomjnixon Aug 2, 2021
f4965fc
docs: improve layout doc formatting
tomjnixon Aug 2, 2021
3fb4abc
docs: improve bs2051 doc format
tomjnixon Aug 2, 2021
3f4dd05
docs: improve metadata_input formatting
tomjnixon Aug 2, 2021
93a45e7
docs: refer to TrackProcessor from TrackProcessorBase
tomjnixon Aug 2, 2021
bee7fab
docs: document conversion module
tomjnixon Aug 9, 2021
e38bb9c
docs: add ADM docs
tomjnixon Jul 29, 2021
e56339b
docs: document main_elements
tomjnixon Jul 29, 2021
b5fd928
docs: document block_formats
tomjnixon Jul 29, 2021
c1c9c1c
docs: document elements/geom
tomjnixon Jul 29, 2021
a46e553
docs: document CHNA chunks
tomjnixon Jul 29, 2021
a567e50
docs: document bw64 reader
tomjnixon Jul 29, 2021
b683a79
docs: document BW64 utils
tomjnixon Jul 29, 2021
8a0689c
builder: improve DEFAULT sentinel
tomjnixon Jul 30, 2021
334a1d0
docs: misc. builder improvements
tomjnixon Jul 30, 2021
23f0907
docs: document load_common_definitions
tomjnixon Jul 30, 2021
3583e74
docs: document generate_ids
tomjnixon Jul 30, 2021
716a1e2
docs: document adm xml
tomjnixon Jul 30, 2021
adab899
docs: document position mixins
tomjnixon Aug 9, 2021
e137ae3
docs: impove Position docs
tomjnixon Aug 9, 2021
5af8a6d
docs: document screen representations
tomjnixon Aug 9, 2021
609bd9a
docs: refresh geom documentation
tomjnixon Aug 9, 2021
258c8a3
docs: split out argument parser to allow autodoc
tomjnixon Aug 11, 2021
48cb9c1
docs: add help for positional arguments
tomjnixon Aug 17, 2021
b779997
docs: initial commit of sphinx documentation
tomjnixon Jul 29, 2021
0687b47
docs: add sphinxarg
tomjnixon Aug 17, 2021
42819ad
docs: add basic usage docs
tomjnixon Aug 17, 2021
55b210d
add old changes to changelog
tomjnixon Aug 18, 2021
1b45eba
docs: fix string escape warnings
tomjnixon Aug 19, 2021
35cc50d
fix misc. typos
tomjnixon Dec 17, 2020
fb74eae
add class to find channel formats in objects
tomjnixon Dec 17, 2020
0c81296
fileio/adm: add new timing fixes module
tomjnixon Sep 25, 2019
9d1f694
docs: add timing fixes
tomjnixon Aug 23, 2021
986992a
cmdline: use timing_fixes and validation when loading files
tomjnixon Sep 25, 2019
75dd672
fileio/adm: deprecate old fix_block_format_durations argument
tomjnixon Sep 25, 2019
77468b4
fileio/adm: move rtime and duration check to adm.verify
tomjnixon Sep 26, 2019
3299afc
cmdline: add command to regenerate ADM files
tomjnixon Dec 17, 2020
52812d2
add timing fixes to changelog
tomjnixon Aug 23, 2021
211d3b6
core/directspeakers: add warning for possible LFE errors
tomjnixon Sep 27, 2019
b3a3341
add LFE warning to changelog
tomjnixon Aug 23, 2021
08eea83
cmdline: add error handling context manager
tomjnixon Aug 24, 2021
f9c7d6c
cmdline: route warnings through logger
tomjnixon Aug 24, 2021
65213a3
cmdline: limit number of warnings by default
tomjnixon Aug 24, 2021
f3dff87
cmdline: use error_handler in ear-utils
tomjnixon Aug 24, 2021
befb09a
add warnings update to changelog
tomjnixon Aug 24, 2021
5f3de90
run black on builder
tomjnixon Sep 24, 2021
420682e
adm builder: multi-channel item creation and split format from content
tomjnixon Sep 27, 2021
22638ac
doc: fix class references in builder
tomjnixon Sep 28, 2021
7baa24c
run black on ambix_to_bwf
tomjnixon Sep 28, 2021
fad2341
use builder in ambix_to_bwf
tomjnixon Sep 28, 2021
1ab055c
fixup channel_frequency docs
tomjnixon Nov 5, 2021
4038e6f
reformat hoa
tomjnixon Nov 5, 2021
57d8d6e
select items: refactor get_single_param and get_per_channel_param
tomjnixon Nov 15, 2021
6338163
add absoluteDistance to ExtraData
tomjnixon Nov 15, 2021
e36fdd8
select_items: populate pack_absoluteDistance
tomjnixon Nov 15, 2021
74c7a25
ci: test on python 3.10
tomjnixon Jan 21, 2022
96b1227
update test dependencies
tomjnixon Jan 21, 2022
0f05289
changes test: add a small absolute tolerance
tomjnixon Jan 21, 2022
ce78be3
bw64: ignore extraData unless correct formatTag is used
tomjnixon Jan 21, 2022
b0f84ec
bw64: fix extraData checks
tomjnixon Jan 21, 2022
184b7d1
bw64: add basic tests for extradata
tomjnixon Jan 21, 2022
402f3fb
bw64: check that fmt and data chunks exist
tomjnixon Jan 25, 2022
9b06142
bw64: more robust extraData parsing
tomjnixon Jan 24, 2022
eb4324c
update gain calc changes test data
tomjnixon Jan 26, 2022
cf41183
relax required attrs version
tomjnixon Jan 26, 2022
2f2031b
update changelog
tomjnixon Jan 26, 2022
a0e37d3
version 2.1.0
tomjnixon Jan 26, 2022
4937d7a
add warning for missing rtime in blocks with duration
tomjnixon Oct 4, 2022
f5b7e86
add test for missing rtime warning
tomjnixon Oct 4, 2022
02fc85b
ear-utils: write regenerated rather than original CHNA
tomjnixon Oct 6, 2022
614a6a6
fix duplicated test name
tomjnixon Oct 6, 2022
de85479
bw64: add padding after data chunk
tomjnixon Oct 6, 2022
e36f935
bw64: check chunk end position
tomjnixon Oct 6, 2022
479c7f9
ear-utils: add rewrite command
tomjnixon Oct 6, 2022
a9e42d3
add padding info to changelog
tomjnixon Oct 6, 2022
029f6de
builder: fix mutable default parameter
tomjnixon Nov 29, 2022
3c8d06e
ci: remove python 3.6
tomjnixon Dec 7, 2022
9cdba24
ci: test on python 3.11
tomjnixon Dec 7, 2022
ef21890
fix pytest warning warnings
tomjnixon Dec 7, 2022
9e9327b
options: remove commented output support
tomjnixon Jun 27, 2023
b9ca3b7
switch from ruamel.yaml to PyYAML
tomjnixon Jun 27, 2023
bc2d35a
remove unused import
tomjnixon Dec 15, 2022
d9cc445
fix copy/paste error in AlloChannelLockHandler docs
tomjnixon Jun 14, 2023
f7a7f74
fix typo in variable name
tomjnixon Jun 14, 2023
ea3b69e
nix: update to 23.03 and use channel
tomjnixon Jun 27, 2023
3de9949
nix: add darker for formatting changes in old files
tomjnixon Jun 27, 2023
3d2bbc8
nix: run tests
tomjnixon Jun 27, 2023
e1a072a
nix: remove old patch
tomjnixon Jun 27, 2023
0b18e30
nix: remove old comment
tomjnixon Jun 27, 2023
9abdc92
add basic tests for HOA panner
tomjnixon Jun 27, 2023
8a0f110
correct HOABuilder docstring
tomjnixon Jun 27, 2023
640780b
mark pvs as non-writable
tomjnixon Jul 13, 2023
01e0831
fix typo in docs
tomjnixon Jul 20, 2023
99627ad
tests: only find tests in ear
tomjnixon Aug 30, 2023
9ea5c86
update attrs requirement to at least 22.2
tomjnixon Jun 27, 2023
9067c3d
tests: add json serialisatio format
tomjnixon Jul 12, 2023
cad7847
tests: switch from pickle to json for gain calc changes test
tomjnixon Jul 12, 2023
29efa87
fix plot_point_source aspect ratio
tomjnixon Oct 3, 2023
e3caad6
fix spelling error in comment
tomjnixon Oct 31, 2023
4aba7b4
run ear-utils in debug mode while testing
tomjnixon Jun 15, 2023
731d9fe
add audioFormatExtended version support
tomjnixon Jun 15, 2023
1fc023c
add audioTrackUID to audioChannelFormat reference
davemar-bbc Aug 3, 2021
d44d97d
builder: support audioTrackUID to audioChannelFormat references
tomjnixon Jun 19, 2023
8863759
validate that atu to acf references are only in -2
tomjnixon Jun 20, 2023
643e299
validate track or channel references
tomjnixon Jun 20, 2023
b4f3167
select_items: follow audioTrackUID to audioChannelFormat reference
tomjnixon Jun 20, 2023
656cccd
parse gainUnit
tomjnixon Jun 26, 2023
9a53be8
add gain to all audioBlockFormat types
tomjnixon Jun 27, 2023
6c57dd2
render gain in directspeakers
tomjnixon Jun 27, 2023
cf08cd7
hoa: add gains to metadata and render them
tomjnixon Jun 27, 2023
59b9466
hoa: extract gains in item selection
tomjnixon Jun 27, 2023
52506bf
pass context in ADM validation
tomjnixon Jun 28, 2023
b422df5
xml: add GenericElement
tomjnixon Jun 28, 2023
54aaf46
split gain_element into v1/v2
tomjnixon Jun 28, 2023
6232026
xml: use GenericElement for objects position
tomjnixon Jun 28, 2023
426683d
regenerate test_bwf for position change
tomjnixon Jun 28, 2023
61d0fc3
xml: use GenericElement for directspeakers position
tomjnixon Jun 28, 2023
cfd1e21
use GenericElement for gain_attribute
tomjnixon Jun 29, 2023
bfbe3d8
xml: refactor to allow support for different versions
tomjnixon Jun 30, 2023
e3185c7
xml: add helper for setting version in tests
tomjnixon Jun 30, 2023
7a39eb1
xml: split handling of gain var by version
tomjnixon Jun 30, 2023
62ebacb
add audioObject gain
tomjnixon Jul 6, 2023
856bbd2
add audioObject mute
tomjnixon Jul 6, 2023
556b69b
make audioTrackUID to audioChannelFormat reference V2-only
tomjnixon Jul 13, 2023
f45f8c6
add audioObject gain and mute to ExtraData
tomjnixon Jul 13, 2023
f9309a9
extract audioObject gain and mute in item selection
tomjnixon Jul 13, 2023
d1d11fe
test audioTrackUID to audioChannelFormat reference
tomjnixon Jul 13, 2023
d8d3ceb
add get_object_gain
tomjnixon Jul 13, 2023
413cb19
apply audioObject gain for Objects
tomjnixon Jul 13, 2023
abac247
apply audioObject gain for DirectSpeakers
tomjnixon Jul 13, 2023
a5f0df5
apply audioObject gain for HOA
tomjnixon Jul 13, 2023
5dde437
add positionOffset data
tomjnixon Jul 18, 2023
937ee26
add object_positionOffset to metadata_input
tomjnixon Jul 18, 2023
522c584
implement positionOffset xml parsing
tomjnixon Dec 1, 2023
ecdde91
set positionOffset in select_items
tomjnixon Jul 18, 2023
76d0876
reject position_offset in DirectSpeakers
tomjnixon Jul 18, 2023
2c3d9f1
reject position_offset in HOA
tomjnixon Jul 18, 2023
ff9eb00
handle position_offset in Objects
tomjnixon Jul 18, 2023
46b3b62
alternativeValueSet: add data
tomjnixon Jul 20, 2023
d5b995c
alternativeValueSet: lookup references
tomjnixon Jul 20, 2023
3cebf6f
alternativeValueSet: generate ids
tomjnixon Jul 20, 2023
60497bf
alternativeValueSet: xml parsing and generation
tomjnixon Jul 20, 2023
8fd28ad
check that audioObject parameters are only in leaf objects
tomjnixon Jul 21, 2023
4e353fb
avs: validate structure
tomjnixon Jul 24, 2023
08c34bb
refactor ExtraData creation
tomjnixon Jul 24, 2023
fe81205
apply alternativeValueSet in item selection
tomjnixon Jul 25, 2023
299be3f
time format: don't allow empty decimal part
tomjnixon Oct 5, 2023
9b7f16c
time format: implement fractional time format
tomjnixon Oct 9, 2023
3d735be
time format: document FractionalTime
tomjnixon Oct 9, 2023
3ca925e
docs: update requirements
tomjnixon Oct 9, 2023
0d0ef42
time format: enable fractional time for BS.2076-2
tomjnixon Oct 9, 2023
4959ad7
implement audioObjectInteraction
tomjnixon Oct 31, 2023
0e0912e
add audioObjectInteraction to alternativeValueSet
tomjnixon Nov 1, 2023
8858591
add document version to metadata input
tomjnixon Nov 6, 2023
1b4ab49
set azimuthRange default based on version
tomjnixon Nov 6, 2023
724e293
generate_test_file: allow setting objectDivergence
tomjnixon Nov 7, 2023
7c2b9ca
generate_test_file: allow setting version
tomjnixon Nov 7, 2023
7b500f2
add v2 integration test
tomjnixon Nov 7, 2023
b59f8bc
fix typo in docstring
tomjnixon Nov 9, 2023
623553d
format test_matrix
tomjnixon Nov 10, 2023
cc00b44
add GainTrackSpec and processor
tomjnixon Nov 10, 2023
879ab73
apply matrix gains in item selection
tomjnixon Nov 10, 2023
7129286
fix typo in regenerate command-line
tomjnixon Nov 14, 2023
9454b93
test_utils: move openBw64 import to top level
tomjnixon Nov 16, 2023
c367fcd
document check_round_trip
tomjnixon Nov 16, 2023
b660e36
add xml defaults test
tomjnixon Nov 16, 2023
a94e3ce
bw64: add formatInfo property
tomjnixon Nov 16, 2023
5369415
bw64: add basic test of openBw64Adm
tomjnixon Nov 16, 2023
c328fef
xml: extract find_audioFormatExtended
tomjnixon Nov 16, 2023
77b9a18
bw64: add iter_sample_blocks to Bw64Reader
tomjnixon Nov 16, 2023
4a48be7
ear-utils: add option to set version to regenerate
tomjnixon Nov 16, 2023
9587b99
nix: remove enum34 input
tomjnixon Nov 23, 2023
995c5fa
more complete testing of extra data in item selection
tomjnixon Nov 24, 2023
5debc19
add warning for v2 file rendering
tomjnixon Nov 24, 2023
9b6f00c
fix warning in adapted layout test
tomjnixon Nov 24, 2023
0ff6956
check warnings output in integration tests
tomjnixon Nov 24, 2023
f3c24eb
add v2 support to changelog
tomjnixon Nov 24, 2023
11b15d7
add set-version to changelog
tomjnixon Nov 24, 2023
594c025
use .formatInfo when rewriting bwf files
tomjnixon Nov 24, 2023
6b8be35
nix: update to 23.11
tomjnixon Jan 9, 2024
bf07628
nix: switch to pypa build
tomjnixon Jan 9, 2024
5feeec5
nix: switch darker to pypa build
tomjnixon Jan 9, 2024
3c0aa79
switch from pkg_resources to importlib_resources
tomjnixon Jan 9, 2024
1982712
update multipledispatch
tomjnixon Jan 9, 2024
cc03db6
switch from setup.py to pyproject.toml
tomjnixon Jan 9, 2024
458b49b
nix: stop on first test failure
tomjnixon Jan 9, 2024
7d18d21
nix: switch to venv-based shell
tomjnixon Jan 9, 2024
fa1e890
ci: update python versions
tomjnixon Jan 9, 2024
87c70d6
fix wrong parameter name in comment
tomjnixon Feb 13, 2024
922ab18
add importance to all block types
tomjnixon Feb 20, 2024
f9249de
xml: mark new audioBlockFormat gains as v2 only
tomjnixon Feb 20, 2024
4fba025
xml: add v2 importance to all block format types
tomjnixon Feb 20, 2024
59f0efe
xml: test v2 gain and importance
tomjnixon Feb 20, 2024
2a794d8
xml: test gain representations
tomjnixon Feb 20, 2024
601eac7
add finite_float validator
tomjnixon Feb 20, 2024
343db46
use finite_float for all float parameters
tomjnixon Feb 20, 2024
2e6bf1e
metadata_input: default ImportanceData for HOARenderingItem
tomjnixon Feb 26, 2024
ab00be9
metadata_input: add importances to HOATypeMetadata
tomjnixon Feb 20, 2024
8416ef9
select_items: set HOA importances
tomjnixon Feb 20, 2024
889f7f0
importance: filter blocks for any non-HOA rendering items
tomjnixon Feb 19, 2024
3459321
importance: add test for DirectSpeakersRenderingItem object/pack filter
tomjnixon Feb 22, 2024
d0032dd
importance: refactor block test
tomjnixon Feb 22, 2024
becd25c
importance: refactor mute_audioBlockFormat_by_importance
tomjnixon Feb 22, 2024
ca3513f
importance: test DirectSpeakers block filter
tomjnixon Feb 22, 2024
090c4fb
importance: filter HOA channels/blocks by importance
tomjnixon Feb 26, 2024
ba4576d
pack allocation: fix with multiple silent packs
tomjnixon Apr 4, 2024
4afc370
pack allocation: add alternative implementation
tomjnixon Apr 4, 2024
febd9d2
pack allocation: improve allocation equality test
tomjnixon Apr 4, 2024
3473916
pack allocation: add more tests
tomjnixon Apr 4, 2024
6ae6fbf
pack allocation: improve test setup
tomjnixon Apr 9, 2024
f47fb09
pack allocation: add randomised tests
tomjnixon Apr 9, 2024
a719ca4
xml: warn on use of gainUnit
tomjnixon Mar 11, 2024
91fbdde
fileio: improve handling of wav files with missing/malformed ADM
tomjnixon Mar 12, 2024
5376da1
cmdline: raise an exception when there is no ADM data
tomjnixon Mar 12, 2024
e245bb9
doc: avoid html_static_path warning
tomjnixon Mar 12, 2024
67e1671
doc: use :ref: to make references look better
tomjnixon Mar 12, 2024
71d1295
doc: add details of output format
tomjnixon Mar 12, 2024
eedd306
nix: add documentation requirements
tomjnixon Mar 12, 2024
c4b2724
fix wording in docs
tomjnixon Mar 18, 2024
b6561aa
fix zero trackIndex in validation test
tomjnixon Mar 18, 2024
d6cd2a5
validate that trackIndex is a non-zero int
tomjnixon Mar 18, 2024
21053a2
add utility to validate trackIndex values
tomjnixon Mar 18, 2024
a04e287
fileio: run trackIndex validation in Bw64AdmReader
tomjnixon Mar 18, 2024
6c5f008
xml: don't parse ADM elements outside audioFormatExtended
tomjnixon Jul 26, 2024
e2086e7
avs: fix structure validation
tomjnixon Jul 26, 2024
3de5957
fileio/adm: fix stream and track format ID generation
tomjnixon Jul 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: test

on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.8", "3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v2

- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}

- name: install libsndfile
run: sudo apt-get install -y libsndfile1

- name: Install Tox
run: pip install tox

- name: Run Tox
run: tox -e py

- name: Upload Coverage
uses: actions/upload-artifact@v2
with:
name: coverage-${{ matrix.python }}
# use a wildcard so that the archives have a folder in the root
path: .tox/py/cov_*
33 changes: 0 additions & 33 deletions .travis.yml

This file was deleted.

65 changes: 65 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
# Changelog

## Unreleased Changes

### Fixed
- Padding after data chunks in bw64 files was not written, and this error was silently ignored in the reader. This can be fixed with the new `ear-utils rewrite` command.
- Mutable default parameters in ADMBuilder could cause unexpected extra blocks to be added when this was used from other programs.
- ADM elements outside the `audioFormatExtended` were parsed, causing errors for some files containing non-standard ADM data.
- Generated IDs for audioStreamFormat and audioTrackFormat included the format (i.e. always PCM, or 0001), but should include the type of the linked channel/pack format. See [#78].

### Changed
- Added a warning for audioBlockFormats which have a duration but no rtime; previously these were fixed silently. See [#54].
- Switched from ruamel.yaml to PyYAML. See [#62].

### Added

- Preliminary support for BS.2076-2 structures. Until this is standardised, a warning will be emitted when rendering files with this version. See [#59] and [#58].
- `--set-version` to `ear-utils regenerate`. This can be used to fix files which use BS.2076-2 features but have no version tag.

## [2.1.0] - 2022-01-26

### Fixed
- Depth and height parameters were switched in metadata conversion. See [#26].
- Bug in channel lock priority order, which controls the loudspeaker selection when the object position is the same distance from multiple loudspeakers. See [#28].
- Screen scaling now fails explicitly in cases where it was not well-defined before, generally with extreme positions and sizes. See [#22].
- Errors with gaps at the start of metadata. See [#13].
- Rounding of times in XML writer. See [#12].
- `audioStreamFormat` referencing error messages. See [34b738a] and [04533fc].
- Improved extraData handling in BW64 reader; see [#48]

### Changed
- `DirectSpeakers` panner uses allocentric panning for Cartesian positions. See [222374a].
- Removed python 2.7 support.
- `fix_block_format_durations` parameter is deprecated, and the ADM XML parser no longer issues warnings for timing issues -- use `ear.fileio.adm.timing_fixes` for this functionality instead. See [#8].
- `--enable-block-duration-fix` performs more extensive fixes; this now fixes the following issues:
- `audioBlockFormats` where the `rtime` plus the `duration` of one `audioBlockFormat` does not match the `rtime` of the next.
- `interpolationTime` parameter larger than `duration`.
- `audioBlockFormat` `rtime` plus `duration` extending past the end of the containing `audioObject`.
- Issue a warning for `DirectSpeakers` blocks with a `speakerLabel` containing `LFE` which is not detected as an LFE channel. See [#9].
- Improved warning and error output: tidier formatting, and repeated warnings are suppressed by default. See [#37].

### Added
- `loudnessMetadata` data structures, parsing and generation. See [#25].
- `ear-utils regenerate` command to re-generate AXML and CHNA chunks. See [#8].
- The `absoluteDistance` parameter is now extracted from AXML and added to the `ExtraData` structure; see [#45].
- Lots of documentation, see https://ear.readthedocs.io/

## [2.0.0] - 2019-05-22

Changes for ITU ADM renderer reference code.
Expand Down Expand Up @@ -104,6 +149,26 @@ Changes for ITU ADM renderer reference code.

Initial release.

[#8]: https://github.com/ebu/ebu_adm_renderer/pull/8
[#9]: https://github.com/ebu/ebu_adm_renderer/pull/9
[#12]: https://github.com/ebu/ebu_adm_renderer/pull/12
[#13]: https://github.com/ebu/ebu_adm_renderer/pull/13
[#22]: https://github.com/ebu/ebu_adm_renderer/pull/22
[#25]: https://github.com/ebu/ebu_adm_renderer/pull/25
[#26]: https://github.com/ebu/ebu_adm_renderer/pull/26
[#28]: https://github.com/ebu/ebu_adm_renderer/pull/28
[#37]: https://github.com/ebu/ebu_adm_renderer/pull/37
[#45]: https://github.com/ebu/ebu_adm_renderer/pull/45
[#48]: https://github.com/ebu/ebu_adm_renderer/pull/48
[#54]: https://github.com/ebu/ebu_adm_renderer/pull/54
[#62]: https://github.com/ebu/ebu_adm_renderer/pull/62
[#59]: https://github.com/ebu/ebu_adm_renderer/pull/59
[#58]: https://github.com/ebu/ebu_adm_renderer/issues/58
[#78]: https://github.com/ebu/ebu_adm_renderer/pull/78
[34b738a]: https://github.com/ebu/ebu_adm_renderer/commit/34b738a
[04533fc]: https://github.com/ebu/ebu_adm_renderer/commit/04533fc
[222374a]: https://github.com/ebu/ebu_adm_renderer/commit/222374a
[2.1.0]: https://github.com/ebu/ebu_adm_renderer/compare/2.0.0...2.1.0
[2.0.0]: https://github.com/ebu/ebu_adm_renderer/compare/1.2.0...2.0.0
[1.2.0]: https://github.com/ebu/ebu_adm_renderer/compare/1.1.2...1.2.0
[1.1.2]: https://github.com/ebu/ebu_adm_renderer/compare/1.1.1...1.1.2
Expand Down
3 changes: 2 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
include README.md
include CHANGELOG.md
include ear/core/data/README.md
include LICENSE
include doc/layout_file.md
include tox.ini

graft ear
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# EBU ADM Renderer (EAR)

[![Build Status](https://travis-ci.org/ebu/ebu_adm_renderer.svg?branch=master)](https://travis-ci.org/ebu/ebu_adm_renderer)
[![codecov](https://codecov.io/gh/ebu/ebu_adm_renderer/branch/master/graph/badge.svg)](https://codecov.io/gh/ebu/ebu_adm_renderer)
[![build status badge](https://github.com/ebu/ebu_adm_renderer/workflows/test/badge.svg)](https://github.com/ebu/ebu_adm_renderer/actions?workflow=test)

The **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.

Expand All @@ -26,8 +25,8 @@ $ pip install ear

### Python versions

*EAR* supports Python 2.7 and Python >=3.6
and runs on all major platforms (Linux, Mac OSX, Windows).
*EAR* supports Python >=3.6 and runs on all major platforms (Linux, Mac OSX,
Windows).

### Installation of extra packages

Expand Down
2 changes: 2 additions & 0 deletions doc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
env
_build
18 changes: 18 additions & 0 deletions doc/ADM_XML.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ADM XML Handling
================

.. py:module:: ear.fileio.adm.xml

XML Parsing
-----------

.. autofunction:: load_axml_doc
.. autofunction:: load_axml_string
.. autofunction:: load_axml_file
.. autofunction:: parse_string
.. autofunction:: parse_file

XML Generation
--------------

.. autofunction:: adm_to_xml
193 changes: 193 additions & 0 deletions doc/ADM_data.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
ADM Data
--------

.. py:module:: ear.fileio.adm

The ADM data representation is in the `ear.fileio.adm` module.

An ADM document is represented by an :class:`adm.ADM` object, which contains
lists of all of the top-level ADM elements.

In general, element objects have properties which match the ADM XML tag or
attribute names, except for:

- The main ID of elements are stored in an ``.id`` property, rather than (for
example) ``.audioProgrammeID``.

- ``typeDefinition`` and ``typeLabel`` are resolved to a single ``.type``
property.

- ``formatDefinition`` and ``formatLabel`` are resolved to a single ``.format``
property.

- References to other objects by ID are translated into a python object
reference, or a list of references. For example, ``audioObjectIDRef``
elements in an ``audioContent`` tag become a list of
:class:`elements.AudioObject` stored in
:attr:`elements.AudioContent.audioObjects`.

.. note::
Element objects do contain ``IDRef`` properties (e.g.
``audioObjectIDRef``), which are used while parsing, but these are
cleared when references are resolved to avoid storing conflicting
information.

- In representations of ADM elements which contain both text and attributes
(for example ``<objectDivergence azimuthRange="30">0.5</objectDivergence>``),
the text part is stored in a semantically-relevant property, e.g.
:attr:`elements.ObjectDivergence.value`. For boolean elements (e.g.
``channelLock``), this is represented by the presence or absence of the
object in the parent object.

.. autoclass:: ear.fileio.adm.adm.ADM
:members:

Top-level Elements
~~~~~~~~~~~~~~~~~~

.. autoclass:: ear.fileio.adm.elements.main_elements.ADMElement
:members:

.. autoclass:: ear.fileio.adm.elements.AudioProgramme
:members:

.. autoclass:: ear.fileio.adm.elements.AudioContent
:members:

.. autoclass:: ear.fileio.adm.elements.AudioObject
:members:

.. autoclass:: ear.fileio.adm.elements.AudioPackFormat
:members:

.. autoclass:: ear.fileio.adm.elements.AudioChannelFormat
:members:

.. autoclass:: ear.fileio.adm.elements.AudioTrackFormat
:members:

.. autoclass:: ear.fileio.adm.elements.AudioStreamFormat
:members:

.. autoclass:: ear.fileio.adm.elements.AudioTrackUID
:members:

Common Sub-Elements
~~~~~~~~~~~~~~~~~~~

.. autoclass:: ear.fileio.adm.elements.TypeDefinition
:members:
:undoc-members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.FormatDefinition
:members:
:undoc-members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.LoudnessMetadata
:members:

.. autoclass:: ear.fileio.adm.elements.Frequency
:members:

Common Types
~~~~~~~~~~~~

.. autoclass:: ear.fileio.adm.elements.ScreenEdgeLock
:members:

Timing
~~~~~~

In general, times and durations are stored as a fractional number of seconds,
represented by :class:`fractions.Fraction`.

In order to represent fractional ADM times, :class:`time_format.FractionalTime`, a subclass
of :class:`fractions.Fraction`, is used, while decimal times are represented by
:class:`fractions.Fraction`.

.. autoclass:: ear.fileio.adm.time_format.FractionalTime
:members:

.. autofunction:: ear.fileio.adm.time_format.parse_time

.. autofunction:: ear.fileio.adm.time_format.unparse_time


audioBlockFormat types
~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: ear.fileio.adm.elements.AudioBlockFormat
:members:

Objects audioBlockFormat
''''''''''''''''''''''''

.. autoclass:: ear.fileio.adm.elements.AudioBlockFormatObjects
:members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.CartesianZone
:members:

.. autoclass:: ear.fileio.adm.elements.PolarZone
:members:

.. autoclass:: ear.fileio.adm.elements.ChannelLock
:members:

.. autoclass:: ear.fileio.adm.elements.JumpPosition
:members:

.. autoclass:: ear.fileio.adm.elements.ObjectDivergence
:members:

.. autoclass:: ear.fileio.adm.elements.ObjectPosition
:members:

.. autoclass:: ear.fileio.adm.elements.ObjectPolarPosition
:members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.ObjectCartesianPosition
:members:
:show-inheritance:

DirectSpeakers audioBlockFormat
'''''''''''''''''''''''''''''''

.. autoclass:: ear.fileio.adm.elements.AudioBlockFormatDirectSpeakers
:members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.BoundCoordinate
:members:

.. autoclass:: ear.fileio.adm.elements.DirectSpeakerPosition
:members:

.. autoclass:: ear.fileio.adm.elements.DirectSpeakerPolarPosition
:members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.DirectSpeakerCartesianPosition
:members:
:show-inheritance:

HOA AudioBlockFormat
''''''''''''''''''''

.. autoclass:: ear.fileio.adm.elements.AudioBlockFormatHoa
:members:
:show-inheritance:

Matrix AudioBlockFormat
'''''''''''''''''''''''

.. autoclass:: ear.fileio.adm.elements.AudioBlockFormatMatrix
:members:
:show-inheritance:

.. autoclass:: ear.fileio.adm.elements.MatrixCoefficient
:members:
Loading