{"action":"opened","issue":{"url":"https://api.github.com/repos/xiph/opus/issues/95","repository_url":"https://api.github.com/repos/xiph/opus","labels_url":"https://api.github.com/repos/xiph/opus/issues/95/labels{/name}","comments_url":"https://api.github.com/repos/xiph/opus/issues/95/comments","events_url":"https://api.github.com/repos/xiph/opus/issues/95/events","html_url":"https://github.com/xiph/opus/issues/95","id":355552653,"node_id":"MDU6SXNzdWUzNTU1NTI2NTM=","number":95,"title":"Quality issue with 'synthesized' (encoded) Ambisonic sound fields ","user":{"login":"mgorzel","id":26985965,"node_id":"MDQ6VXNlcjI2OTg1OTY1","avatar_url":"https://avatars0.githubusercontent.com/u/26985965?v=4","gravatar_id":"","url":"https://api.github.com/users/mgorzel","html_url":"https://github.com/mgorzel","followers_url":"https://api.github.com/users/mgorzel/followers","following_url":"https://api.github.com/users/mgorzel/following{/other_user}","gists_url":"https://api.github.com/users/mgorzel/gists{/gist_id}","starred_url":"https://api.github.com/users/mgorzel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mgorzel/subscriptions","organizations_url":"https://api.github.com/users/mgorzel/orgs","repos_url":"https://api.github.com/users/mgorzel/repos","events_url":"https://api.github.com/users/mgorzel/events{/privacy}","received_events_url":"https://api.github.com/users/mgorzel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-08-30T11:57:54Z","updated_at":"2018-08-30T11:57:54Z","closed_at":null,"author_association":"NONE","body":"Currently, for Ambisonics (channel mapping family 2) [opus multistream encoder](https://github.com/xiph/opus/blob/master/src/opus_multistream_encoder.c#L736) allocates more bits to the omnidirectional sound field component (channel 1) as compared to directional channels.\r\n\r\nThis optimization works well with captured (more 'diffuse') sound fields. However, it leads to strong quality artifacts when a sound field is synthesized (e.g. manually encoded from mono audio(s)), especially when the sound source is panned left/right. This is well illustrated by the attached 'noise_opus_256kbps_stereo.wav' example from [sound_examples.zip](https://github.com/xiph/opus/files/2336026/sound_examples.zip) where a single broadband sound source is panned from left to right (rendered from Ambisonics to stereo using M-S matrixing).\r\n\r\nTo mitigate this problem, since omni- and directional channels may end up having a highly correlated content, equal bit allocation should work better (please compare with the 'noise_opus_eq_256kbps_stereo.wav' example in [sound_examples.zip](https://github.com/xiph/opus/files/2336026/sound_examples.zip)).\r\n\r\nAlso, equal bit allocation seems to work well with a variety of audio content I've tested (recorded and synthesized). In the attached folder you can also find an example of an Ambisonic recording for comparison (recorded using Eigenmike - [source](https://mhacoustics.com/sites/default/files/solo_guitar.wav)).\r\n"}}
{"actor":{"display_login":"mgorzel"}}