107

€¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Embed Size (px)

Citation preview

Page 1: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�� �������� ��������� �� �� �����

������� ���� � �� �������

������ �� ������ ������� ���� ����

��������� ��� ����

Page 2: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��������

� ����������� ���� �������� ���� �� � � � � � � � � � � � � � � � � � � � � � � � � � ����� ����� ������ �� �� �� �� � � � � � � � � � � � � � � � � � � � � � � ��

����� �� �� �� �������� � � � � � � � � � � � � � � � � � � � � � ������� �� �� �� ��� ����� � � � � � � � � � � � � � � � � � � � � � ��

��� ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

� � � ���� �� ��� � ��� ����� � � !��"���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

����� !# !��"��� � � � � � � � � � � � � � � � � � � � � � � � � � ������� ��! !��"��� � � � � � � � � � � � � � � � � � � � � � � � � � ��

��� $�%��������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����� &����� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �'

����� �(������ #� � #����������� � � � � � � � � � � � � � � � � � �'��' �� )�� *� � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

��'�� � � �� )�� � � � � � � � � � � � � � � � � � � � � � � � � ����'�� ������ � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����'�� +������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � ����'�' ���� ������ � � � � � � � � � � � � � � � � � � � � � � � � � ��

��, ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �-

� �� ���� � �� � ���� � ������ ����� ���������� �� .��� � � � � � � � � � � � � � � � � � � � � � � � � � �/

����� .���� 01 ��� $������ � � � � � � � � � � � � � � � � � � � � ������� &�(�� 01 ��� $������ � � � � � � � � � � � � � � � � � � � � ������� ���� �11������� � � � � � � � � � � � � � � � � � � � � � � � ������' &�(��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � '/

��� ��1���������� !���� � � � � � � � � � � � � � � � � � � � � � � � � '������ +���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � '������ 2��������� #��������� � � � � � � � � � � � � � � � � � � '������ ������ 2��� � � � � � � � � � � � � � � � � � � � � � � � � � '-����' �������� �� �������� ���� � � � � � � � � � � � � � � � � � ,/����, 3�� $���� �����"�� .������� 43$�.5 � � � � � � � � � ,������ +�������� ���� ���� 4+��5 �� ��11�� � � � � � � � � ,,����� ��������� ���� ��(������ 4���5 � � � � � � � � � � � � � � ,������ ��1�� &�(�� 3�� ��� � � � � � � � � � � � � � � � � � � � � ,-����- ���� �����1������ � � � � � � � � � � � � � � � � � � � � � � ,-�����/ $����6������� � � � � � � � � � � � � � � � � � � � � � � � � � ��

Page 3: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������ �11��7������� �" ����8 ���� �� �%�� � � � � � � � � � � � �'��� �����1����9������� "�������� � � � � � � � � � � � � � � � � � � � �,

����� .�� ��� ���9������� � � � � � � � � � � � � � � � � � � � � � �,����� &�(�� ��������� � � � � � � � � � � � � � � � � � � � � � � � �,����� *������� $������ � � � � � � � � � � � � � � � � � � � � � � �,����' �� �� ����� � � � � � � � � � � � � � � � � � � � � � � � � � �,

��' �!� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �,��'�� ������ &��:����� � � � � � � � � � � � � � � � � � � � � � � �,��'�� �1���;������� � � � � � � � � � � � � � � � � � � � � � � � � � ��

��, ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

� � �� � �������� �� ���� � ������ �'�� .�7� 1���� �� .������ 1���� �������� � � � � � � � � � � � � � � ��

'���� .���� 01 ��� #��1������ � � � � � � � � � � � � � � � � � �-'�� ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

� � ! ���� � ������ "#,�� � �1������ �" � � �� � � � � � � � � � � � � � � � � � � � � � � � � � �-

,���� #� � #��1���� !��<��� � � � � � � � � � � � � � � � � � � � �-,���� *����� !��6��� � � � � � � � � � � � � � � � � � � � � � � �-,���� )��11��� � � � � � � � � � � � � � � � � � � � � � � � � � � � �/,���' �9� $������� � � � � � � � � � � � � � � � � � � � � � � � � � ��,���, #��: �1�� � � � � � � � � � � � � � � � � � � � � � � � � � � ��,���� +�6������ � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��,���� *����� +��:� � � � � � � � � � � � � � � � � � � � � � � � � ��,���� �� �� ��(������� � � � � � � � � � � � � � � � � � � � � � � � ��

,�� #� � !��;��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �',���� !��;��� !������ � � � � � � � � � � � � � � � � � � � � � � �',���� !��;��� $����� � � � � � � � � � � � � � � � � � � � � � � � �,

,�� ��! �1����=������ � � � � � � � � � � � � � � � � � � � � � � � � � � �-,���� �1����=��� � � #� � � � � � � � � � � � � � � � � � � � � � � -�

,�' �� �� ��1�� �� ���1�� � � � � � � � � � � � � � � � � � � � � � � � -�,�'�� ������� �1 *�&�! � � � � � � � � � � � � � � � � � � � � � � -�,�'�� ������� �1 � � �*� #������� � � � � � � � � � � � � � � � -�,�'�� #��6����� *�&�! �� �*� � � � � � � � � � � � � � � � � -�

,�, ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � -�

$ �� �� �� ���� �� � ! #���� �7������� ����;������ � � � � � � � � � � � � � � � � � � � � � � � � -'��� �������� ����;������ � � � � � � � � � � � � � � � � � � � � � � � � � -'��� ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � -,

" �������� #"��� �����1���� ���������� � � � � � � � � � � � � � � � � � � � � � � � � -���� ������ � ��1����������� � � � � � � � � � � � � � � � � � � � � � -���� �������� ����;������ � � � � � � � � � � � � � � � � � � � � � � � � � -�

� %�������� ������ .��� �� ����1���� � � � � � � � � � � � � � � � � � � � � � � � � � �//

Page 4: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� ����� � ���� � ������ !��&� �� ������ � � .���� ��11�� ��1���������� � � � � � � � � � � � � � � � � � �/'

' (����& ����� ��

Page 5: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

���� �� �����

��� � �� ;���� ��������� ���� �" � � 1 ����� ��� 8 ���� ���8 3$�.8+��8 ��������92��� �� $�>������8 �� ������ � �� �� �� �71���?����� � � ��� �� 3$�. ������� � � �(��� �" ���� 1�������������������92��� ����� � ������ ��� �� ����� � � +�� �� ��� �������� ������ �(���� �� � � $�>������� ��� ��� �� ���� � ����?��������� �"8 "�� ��������8 � ����� � � � � � � � � � � � � � � � � � � �-

��� ���@�7������ � � ;���� � ��� � � >�� �" ���@�7������ � ������ ������� 6� � � "���� �1 ��� ��� ��� 6� � � ���� �" � �6��:�� � � ���� �" � � 6��:� ��� � � &�(�� 01 ��� $������ ����� � 1��� �" ���@�7����� � �� ���� �7����� "�� ����� ���?6�(���� � 1�������� �" ������� 1��������� �� � � &�(�� 01 ��� 1��� �"���@�7����� �1�� � �� �� �"��� � � .���� 01 ��� $�������� �7����� � � � ���1�� � �� ���� ��� �" ���@�7����� ��� ��� �� 6� �������� � ���� � �9� ��������� �� � �� ������ �� ����� �� ��1�;�� �� � �1��:��� � � � � � � � � � � � � � � � � ��

��� .���� 01 ��� !��������� � � ;����� ��������� �� � ��������71�������� � ������ �1������ ����� �� �� �� � ������� ���?<������ ��� � �(����� ���6�� �" ��� �� � � .���� 01 ����������� � � ;���� �� � � �"� ��1������� �� A��;����A ���6�� �"��� ��� �� � � .���� 01 ��� �������� � � ;���� �� � � �� ���1������� � � ���� ���<������8 ����� ��� ��� � .���� 01 ������ � � ;���� �� � � ��� � ���� ��� "��� .���� 01 ����� � ����� "��%���� � � .���� 01 ��� $������ �� �7����� 8 � � ����1������ � � ���1�� �� 6�� � � � � � � � � � � � � � � � � � � � � � � ��

��� � � ;���� � ��� � � >�� �" .���� 01 ��� $������� �"��� �1? ����� � � �������8 � � .���� 01 ��� ������� ������ �1 ������������ �� 6�� ���� �� 1����� ����8 �" ���������� � � � � � � � �'

��' � � ;���� � ��� � � >�� �" � � ������ 01 ��� !���� ���� ������� �� ���� �� � � ���� ��� �� �6�� �� ��� ������ �"� � ������� �� � � ������ �� ������� � �� � � ������ ���� ��� � ������� ������� �" � ������ �� ������8 2���8 +��8 ��� �� 3$?.���� ����� ��� ������� �� ����� �� � � B�7� ���������� �,

'

Page 6: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��, �� ������ �������� �" � � 6�(�� �1 ��� �������� � � ��������� ��� � �� � ��� ��� 6� � ���6�� �" ���� ������� 1�� ��������1�� �� ����� � � ����� �� 6� 1������� �� ��� ����� � �;��� �� 1��"���� �� ��� �� "�� ��� ������8 � ��� � � ����� ������ ���� ��11�� �� ��� �� 6��� �11�� 8 � ����"��� ���� � ����� �(�� 6������ ��� � �� �"� � ���� �� � � 3$�.�� 6� �11�� �� 6�� � �����8 � � ����� �� � �� 6� ��7� ��� � � ��� ������ "��� � �������� � � �� �� 1��������� �"� � ����� �� 6� ;��� �11���� ��11�� �� � ����"��� �� ��7 � ������� "��� � �������8 �� �� �11� �����6�������� � � � � � � � ��

��� � �� ;���� ��������� � � �7������� �" � � "����? �� 6�(�� �1? ��� ��������� ����� ���� �� �1 ��� �� �� � ����8 � 6�(�� �1? ��� �� �7����� � � � "���� �1 ��� ��� ��� ��� �� 6� �7����� ����� �1 ��� ��� � � �1 ��� "��%����� �" � � "���� �1 ��� ����� ��� � � �!� �� � � �������=����� 1 ���� � � � � � � � � � � � � � ��

��� *��� "������� >��� � � ���� "�������� ������ >�� �� ;��� �������� �� �������=� ������ ��� ��� � 8 � �� �� �7����� � � �������� ����� �� � ����"��� �� ���� �1� � � � � � � � � � � � � � � � � ��

��� ���� )�� >��� ) �� �������=��� � � ��� 8 ������ ��� ���?����� �� � � ��� �� ��� 6� �������=� � � � � � � � � � � � � � � �-

��- ����� ��������� ������� ��� ��� ���� ��� 6������ �������������6��=�� � ���%�� ��������� �� � � ���� ��� � ������8 �� �7?��1� ���������8 � ����� � � � ��� �(����� 1���� �" � ���������8��� ��1����� 6� � ��� ���� � � � � � � � � � � � � � � � � � � � '�

���/ � ��� ��� � ��� ��<�� 6��:� �� � �� ;����C &�(�� 01 ���8 ������&�(�� 01 ��� �� $����6�������� &�(�� 01 ��� �� � � ���� >���� ��� 6�� ������ &�(�� 01 ��� �� $����6�������� ������&�(�� 01 ��� ���� �� � ���������� � �� �� �;�� � � ���1���" � ������ ���� ���8 ��11��8 2��� �� 3$�.� ���1�� "��� �������� ��� �� �;� 6� ��11�� �� 2��� �� � �� ��������� ���� � ��1����� �����6������� ��1�� � ����� �"��� �11���� � �$����6�������8 � �������? �� �����6������� � ����� ��� ��7� ����� �� ���� ��� � ������ � � � � � � � � � � � � � � � � � � � � � ''

���� � ����� ����� �" � � ������ ��� ����������� �� � � 1����� ��� ���� 1����6� �� ��� � � ����� � ��� �" � � 1������� 1�������� � ����� ��� �� 1���� �� � � ��� ������ �" � �1���;� 1�������� � � � � � ',

���� �������� �� �=���� ������ � � �������� ���� ����� � ���������"�������� �6��� � � ������� 1������� �" � ���� ������� � �������� �71�������� � � ���� ������ "��� �6���8 �� "���� ��6��� ��� � � �=���� ���� ����� � ������� ��"�������� �6���� � ���=���� 1������� �" � ���� ������� � � ������� �71��������� � ���� ������ �� ��� �������� �" � � ���=���� 1��� ���� ��/ ������ ����� ��� � � ����� ��1������� � ������� �������� ��� ���� ������ 4� � ����5� � � � � � � � � � � � � � � � � � � � � � � '�

���� ����������� ��� �������� � �� ;���� ��������� ��� ������� 4�����5�� ��� ������� 4�����5� � � ;��� ������ �� 6� �� � � �������1�� ����� ���� ��� � ���� � � �������� ���:� � � �� �� ���� ������ �� �� � � �������� �"�8 1�� ����� ���� ��� � ���� � � ��?������ �"� ���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � '�

,

Page 7: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

���' ��� �������=��� �������� � � ����� 1�� ��� �" ��� ������� 1��? ���� � � �� ������ � �� �� 1��1�� ����� �� � � ;��� ��� ���?����� � �� �� ����=� �� ������ � � ������� ��� ��������� �� ����������� � � ;���� �� � � �"� ��������� � � � ��� 1����������������� �18 �"� �� "����� � � ;���� �� � � �� � � ��� ������������ �� � � ;���� �� � � ��� � � ��� � ���������� � � � '�

���, !��<������ �" �������� � � ;���� � ��� � � �(����� 1��<��������" � � �������� � ��� 1��<������� "��������� � � ���������� ��?��������� � � ����� �������� �� �=���� ��� ������� 6�"������ ��� � ���� �������� ��� � � ������� �� �������� 1������ 1��<������� �� ��� �� �� ���� 6�� �� �� �" � ������� ���:���8 � � ���� �� ������� ����� � � ������������� "������� ����� '�

���� ������ ����� � � ������ ���� �" � �� ������ �� ��� �� / ��', ������� � �� ������ 1�� ���� ���� -/ ������ �� � � "���� ��������� +�������� ����� � � �� ����� �� ��� ��� ���� ������"��� � �� ������� � � � � � � � � � � � � � � � � � � � � � � � � � � � '-

���� �11���� 3$�. .�$ ;���� .����� � ��� �� � � ;��� �� �11�� �� �� � � ���1�� "��� ��� ��� �� ��� � � � � � � � � � � � � � ,�

���� � �� ;���� ��������� ��� :�� �" �����1������ ��� �� � �� � ������� �?1���� �����1������8 &� '?1���� �����1������� � � � � � � � � � ,'

���- � � ��������� �" � � �������4V ′L5 �� � ������4V ′

S5 ��� 1��<���� �� VL �� VS �� � � ���� 1��� �� � � ������� ������� ������� ,,

���/ ��11�� �� ��� �(���� 4��7���� ���� ��������58 ��� ��?6� ��' � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ,�

���� ��� ��������� ������ � �� �� ��� �� ���∆ ��� �(���� 6� ������� �������� �" � ������� ) �� � ������ ����� "��� �1���� ��� � �� "���� �" � ������� ����� � ��� �" � � �� ��8 � � ����� �������� �� � � ������1�� ��� ���∆ "�� � �� �� � �� 6�1�������� ) �� � ������ ����� "��� ��� �" � � �� �� ����� � �1���� �� "���� �� 6� �� �" � � ������� � � ��� �� ������� �� � � ������1�� ��� ���∆ �� 6� ��������� � � � � � � � � � � � � � ,�

���� ���� "�������� � � ���� ��� "�� �����1� �� ���������8 ������� �" �" � � ���� ��� � �� 6� ����� � � � ���?����� ����� ��� � � 1��� �" � � ���� � �� �� 6� ��� �� � ���� ��6� ���������1� 6� 2Lm 8 � �� ����� � �� 2Lm 8 2Lm+18 2Lm+18 ���8������1�� � �� �8 �8 �8 ���8 ������ � � � � � � � � � � � � � � � � � �/

���� $����6������� 6�(�� ������ ��� ���� � � �����6������� �� �7�?���� 8 �� ��� �� 1����6� �" � � ��1�� ��� �� 6� 1������� �� ��� � ��� �� �� ��������� � �� � � ������ �" ��� 1������� �� 6� ����� �� ������ � � �� ���1�� 6��: �" ���� Lo� �� � ����� � ��� �� ��� ����� ��� �� 1�� ��� �� ���1�� 6��:8 ���1���� 6� ���� ���� � � ������ �" ��� ��� � �� �����6�� � � ��

���' $����6������� ����� ��������� �� ���1��������� �� 6� �6��� 1��"��� � ��� ����� ���1�������� � � ����1������� �"..� ����� �� 1��"���� �� ��� ���1�8 � � ;��� ���1 �� 6� ��� �� ;� � �� ����� � �� �� 6���8 � � ����� ���1 �� 1��"���� � ����� ����1������� �� � ��� �"��� ���1������ � � ������ ��

Page 8: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

'�� 3$�. ����� �� ���6���� � �� ;���� ��������� � � �(������6������ ������� �� >������ 1���� ����� ����� �� � � 3$�. ���6����� � � ��7���� ����� �� ��� � �� 1.4 · 10−4 4/�/�D58� �� �� ����1��6�� � � � � � � � � � � � � � � � � � � � � � � � � � �-

'�� 3$�. ;��� ������ � � ��1 ;���� � ��� � � ;��� ���� �" �����;��� 6��: �� ����� "���� �1 ��� �� � � ����� � � ���� ;������ � � �(������ �" � � ������� �� >������ 1���� ����� �" � �������� 3$�. ;��� 6��:� � � ��7���� ����� �� ��� � ��4 · 10−4� ��� ��� ������ ��� �� � ��� �6�� � � � � � � � � � � ��

'�� ��� ������ � � ��1 ;���� ��������� � ������ �������� ����� �������� �� �� ��� ���<������ �� �� � � ���� ��� �� � � ����;���� � ��� � � �(������ 6������ � � ������� ������� �� >������ 1���� ����� �" � � ���� � � ��7���� ����� �� /�/��/� � ��

'�' 2��� ������ � � ���� ���� ������� � � ������� �� ������ 1���?���� �" � ������ ������� �� � � �������� �� � �� 1�������� ���� � ������� �� ������ ����� � ������� �� �� ��� ���<������� � � ��7?���� �(������ 6������ � � ������� �� >������ 1���� ������� ����� �� ��� � �� �D 4���� ;����5� � �� ��� ���� ����8 6���� �� ����1��6� ����� �� ����� � �� �� �6<��� ��� ���� ��,�������9"��� �� ���� � �� �� �� �� ��� ���� �6��� ��� �������( ��� ������� 1�������� � � � � � � � � � � � � � � � � � � � � � � � � ��

'�, �������� ������� � ;���� '�,� � ��� � ������ ������ �� � ������<������ ,/ ������ �� ��� � �� ,// ������ �� �� � � � �;���� '�,& ��������� � � �(������8 �� ������8 6������ � � ;7� 1���� �� >������ 1���� ������� 1�������� �� � ����� �� �� ��"����� � � ��7���� ����� �� /��� ������ �� ��, ������8 ���� �� � D� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �'

'�� ��11�� �������� ������ � � ;���� '��� � ��� � ������ �������� � ��� ���<������ ,/ ������ �� ��� � �� ,// ������ �� �� � �� � ;���� '��& ��������� � � �(������8 �� ������8 6������ � �;7� 1���� �� >������ 1���� ��11�� ������� 1�������� �� ������ �� �� �� "����� ����� � � ��11�� ������� ������������� ����� � ������ �� � � ������� ����������8 � � ����� �"?"������ 6������ � � ;7� 1���� �� >������ 1���� ���������� �������� �� � �� �" � � ������� ���������� 4.����� '�,5� � � ��7?���� ����� �� � � ��11�� ������� ���������� �� /��� ������ ��'// ������8 ��� � �� � D� � � � � � � � � � � � � � � � � � � � � � � �,

'�� ��(������ 6������ ������� �� ��11�� �������� � � �(������6������ ������� �� ��11�� ������� �� � ��� �� ;���� '����� � ����� �����8 ��������� � � >������ 1���� ��������� �� � � ��11��� ����� ��������� � � ;7� 1���� ����������� .��?��� '��& � ��� � � �(������ 6������ � � ;7� 1���� �� >������1���� ���������� � ��� �� ;���� '���� � � ��7���� ����� �"distance−dopplerdistance �� /�/' ������ �� /�� ������8 �6��� �/D� �� ������=� � � ��7���� ����� �� ;���� '��&8 � � ���������" ������� �� ��11�� ������� ���� 6� �������� � � � � � � � � ��

'�� +�� ������ � �� ;���� ���1���� � � >������ 1���� �� ;7� 1���� +�� ������ � � ��7���� �(������ �� �- ��6���1��8�6��� /�', ���1��8 � �� � � +�� ���� �� ?���/� � � � � � � � � ��

Page 9: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

,�� � � ������ �" ����� ������� 6� � � �� �� �� ������ �"������ "���� ��� ��� 1����� ������ �� �� �1����=������� � � � � � ��

,�� � � ������ �" ����� ������� 6� � � �1����=� �� �� �� ��?���� �"��� ��� "���� ��� ��� 1����� ������� � � � � � � � � � � � ��

,�� � � ������ �" ����� ������� 6� � � �1����=� �� �� �� ��?���� �"��� ��� "���� ��� ��� 1����� �������� � � � � � � � � � � � ��

,�' � � ������ �" ����� ������� 6� � � �1����=� �� �� �� ��?���� �"��� �, "����� ��� ��� 1����� �������� � � � � � � � � � � � ��

,�, � � ������ �" ����� ������� 6� � � �1����=� �� �� �� ��?���� �"��� �, "����� �� ������� � � .���� 01 ��� ������� ������ ��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ��

,�� � � ������ �" ����� ������� 6� � � �1����=� �����6���������� "�� � "����� �� ��� Nd = 6� � � � � � � � � � � � � � � � � � �-

,�� � � ������ �" ����� ������� 6� � � �1����=� �����6���������� "�� �/ "����� �� ��� Nd = 6� � � � � � � � � � � � � � � � � � -/

,�� � � ������ �" ����� ������� 6� � � �1����=� �����6���������� "�� �/ "����� �� ��� Nd = 3� � � � � � � � � � � � � � � � � � -/

��� � � ;����� � �� � � �"� � ���� ���1�� ������ 4����58 � � ;����������� �� � � ��! �� � � �� �� �� � � !# 1��"���� � � �(������ 6������ � � ������ �� ����� =���8 � ��� �� ;���� ���68� �� � � ������ ��� � ������� � � � � � � � � � � � � � � � � � � � � -,

��� � � ;����� � �� � � ��� � � ���� ���1�� ������4����58 � � ;����������� �� � � ��! �� � � �� �� �� � � !# 1��"���� � � �(������ 6������ � � ������ �� ����� =���8 � ��� �� ;���� ���68� �� � � ������ ��� � ������� � � � � � � � � � � � � � � � � � � � � -�

Page 10: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

���� �� �����

��� $���� �� � ��?��� � � � ��6� � ��� � � ��7���� ��=� � ���� ��� ��� ����� ��9�� 6�� ;7� ?1���� �����6�� �� � ����� ���������� �" ����� ���1 �� � � ��?��� ������1�� � �� ���8 � ���7���� ��� ��=� ��� 6� '�� ����� ������ ����� � ��?6��;7� ?1���� �����6�� � � � � � � � � � � � � � � � � � � � � � � � � � �,

��� E?"����� ��������� � � ��6� � ��� � � �������� �" � � E?"������ � � ;��� ��� � ��� � � ����� >������?1���� ������8� � ��������� ���� � �� �(����� ���������� �" � � E?"������ � � ��

��� ����>�� 1��6�� ����� � � E?"����� ��� �� 6�� �������� ���������� �� ��� ��� E?"����� � ���� 6� ��:��� �� � � ������� 1����" � ������ ���8 �� ��:��� � � ���� ���6�� �" 6��� ��� � ����1������ � � ������� 1��� �" � �� >������?1���� ����� � � � � � � � ��

��� B�������� �� ���6��� � � � � � � � � � � � � � � � � � � � � � � � �/��� ������? �� ������ ����? ������� � � ��6� � ��� �� � ����?

�� ����� 4�"� �����5 �� ������ ���� ����� 4��� � �����5 �����: �:�� )�� � ��� ��� �" �����8 � � ������� ��� 1�������� � ���� ������ "��� � �� ���� ������ �� ���:��8 �� � � ����"��� � � ������F� "���� ������ �� � � ������� ���������� � � ��?���� ������ ���� ����� 6� ���������� ��� � ��7���� ���� �"��/ ������� � � ������ ���� ����� ���� ����� 6� ���������86�� ��� ��� ��� �� ���� =���� � � � � � � � � � � � � � � � � � � ,/

��� ��������? �� ������� ����? ������� � � ��6� � ��� �� � ��?����� ������4�"� �����5 �� ������� ���� ������4��� � �����5��� ��: �:�� �� � �� 1�������� �� �� �� �����8 � � ��1��� ��" � ���� ���� ������ ��������� �"��� , ������� ) �� � � ��?����� 6������ � � ������� �� � ���� ������ �� �// ������8 � ���1��� � �" � ���� ���� ������ "��� � �� ������ ��� 6���� �9' �" ��� ������� ����� �" � � �������?������ ������� ��������� �� �%�� �� �// ������8 � � ���� ����� �" � �� ���� ������ �� ��� ���� � � �������� � � � � � � � � � � � � � � � � � ,�

��' *�7���� 1����6� � ���� �� +�� �� ��� ��� ����� �� �1�� �" ���� �� ��� �� ����� � �/�� 6�(�� 4'�/ ���1�� ���5� ��6�� �� & ������1�� � �� � �� & �� ;���� ���/� � � ����� LTD∆�� ITD∆ � ��� �� ��6� � �� & �� � � ���6�� �" ���1�� � ������ 6� �������� �� �� �� �� 1��"��� �������� 6������ 1����P1 �� P2 "�� ��6� � �� ���1������� P3 �� P4 "�� ��6� &� � � � � ,�

-

Page 11: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��, ��� ���������� �� � � �(���� �� ITD∆� ) �� ���1����� � ���� ��� �� � � ��� ���8 � � �(���� �� ���∆0 �� ���∆1 ��6� �(����� �1�� ��� �� � � ����� �" � � ��� ��� �� � � ������� � � ���� �" ��� � ��� �� � �� �� � �" � � �� � � �������� ����� � ���������� �� 6� ����� CG �� ���1�;������ ��6� ����� G� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ,�

��� *�7���� ���1 1�� 6�(�� �1 ��� �� ���� ��� �� � � ���� �" �1�� �" ���� �� � � �����1� "������� � � ���� ���1 ��=� ��� �� ���6�(�� �1 ��� �� ����� � � � ��6� � ��� � � ���� �1�� ��� ��� � ��=� �" � � ��� 6�(�� ��� � � � � � � � � � � � � � � � � � � � � ,-

��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �/,

�/

Page 12: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������

� �� � ���� �� ��6����� �� 1����� "�;���� �" � � ��%��������� "�� � � ������" *����� �" ������� �� � � ��� ���� 0��������� �" ������: 4��058 +���6�8������:� ��� ��� ��� ��� ���� $���� � ���H� 4�/��-'�5 �� &<I�� J� ���?��� 4�/��-��5� � ���� ��1������� �� !��"����� J�� *� ���8 ��1������� �" ��?"�������� �� *�� ������� *� ����8 ��0 �� ������ 3��� 2����"����8�������� *�6�� !��"����8 +�� 8 ��� ��� !��<��� ���: ��� ��� �� ��������*�6�� !��"����8 +�� 8 ��� �� 6������ *��� �� ����6�� �//�� � � � ������ ����� �� � � ����� �" ����� 1���������8 ������ � �����9��1����������8��6� � ������� �� ;7� 1���� ���� ����� ��"����� 1�����������

$���� � ���H� &<I�� J� �������/��-'� �/��-��

�������� *�6�� !��"���� +�� �/� ��1���6�� �//�

��

Page 13: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��������������

)� ��� �:� �� � ��: ������ 3��� 2����"���� "�� �� ������������� �� ��11��� � ���� ��� � � 1��<��� �� "�� 6���� � ��� "���� 8 �� !��"����� J��*� ��� "�� ��:��� 1��� �� � �� � ���� �� ������ �� ������6� "�� 6��:� )���� ��� �:� �� � ��: � 1��1� �� �������� *�6�� !��"��� "�� � ��� 1������������� �� ������ ��

��

Page 14: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��������

)�� � � ����� �" �� �� ��8 �� �� 1����6� �� �� ���� � ��� ��������� ���� ���� �� ��� ��� � �� �� �11���� ������� ��� �� �� ������ �1���� �� ��� �� �� �� �� 6������� � ���� �� �� � � !# ������ ��� 8 �� �� ��� �6������ ��6�� ������� � �� � ���� �� �������� � � ����1���� �" � ;7� 1�������� ����� �� �� �� ������� � � �� �� �� ������ �� �1����=� "�� � ��7������������� �*���/K#,,�/?��/ ��! �� � !��?�*�!,-�/ � �1��� 6��� � � ���1���������� �� � ��! 1��"��� ��� ����� ��������� �� � ���1 ����� � � ���1���������� �" �� �� �� �� ��6�� ������� � � ��%���� �(���� �" � � ���� �� ��� ���� ��� �����������8 �������8 ��11�� �� �����6�������� .��� ��8� � ��! ���� 6� �6� �� ��� � � �� �� �� ��� ���� ��� ��� 1����� ��������� � �(���� ����� ���

�� ���� � � ���1�������� ���1�7��� ��%���������8 � � �� �� �� ������������ ������ �� �1����=� �� ��� �L������ �� � ;7� 1���� ��� ���������*��� �" � � �� �� �� ��� ���� ��� ����1� �� � � !# 1��"���8 �� � ���� �;� 8 1��;� �� �1����=� �� ��� �� � � ��! 1��"���� � � �������� �"� � ;7� 1���� �� �� �� ��� ���� �� �� ��1������ 1��� �" � �� � ����� .�� � �������� � >������ 1���� ��1���������� �" � � ;7� 1���� �� �� �� ��� ������� ����1� �� 1���� 6� ��������8 �� ���1��� � � �������� 6������ 6�� ��������� � � �������� �� �� �� ������ ��� ���������� �� � � !��?�*�!6��� ����� ��� 6���?�� �� �� �� ��� � � ���������� �" � �� � ���� ��� 6��� �� �� � 1��;���8 �� �������� � � ���1�������� ���1�7��� �" � � �� �� ��������8 �� *���68 �� ����"� � � �������� �" � � ;7� 1���� �� �� �� �������

��

Page 15: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��������

�) � �������� B������ ���� �� "�� ��"�������� ��������

�!� �11������� !���������� �����"����

%!* #����� !��������� 0����

�(� ������ *����� �������

� ! ������ ����� !���������

++$ .��� .������ �����"����

,�+ 3�� $���� .�����

,�$+ 3�� $���� �����"�� .��������

�++$ ������� .��� .������ �����"����

�$� ��������� ���� ��(�������

-$� +�������� ���� �����

(�' ! *���� ���� &�(��� ����� !����

$� ��7�� ������������

(��� *��� #���� !�� ����� �

Lb B��6�� �" ���1�� �� 6� �������� "��� � ������

Lf $����6������� .���� +����

Lh 3$. +����

Li ��1�� +����

Lm ���� +����

Lo ���1�� +����

LSDV +���������������11��K�����M

Nb B��6�� �" 6�(��� 1�� "����

Nc B��6�� �" � �����

Nd B��6�� �" �����6������� ��� �� ��

�'

Page 16: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Nf B��6�� �" �;�� �����6������� ;����

Ps Source→Next→Position

Pl Listener→Next→Position

Vs Source→Next→V elocity

Vl Listener→Next→V elocity

Sr ���1� ����

Tf .���� !����

Vso �1�� �" ����

�,

Page 17: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������� �

������������

� �� ������ � ���� �� ������� 6��� �� �� 1��<��� � �� "��� ��������� � �1��<���8 �� ������ � �� �� �� �����������8 ���� �� ��1����� �� �� �� �?����� �� �� ;7� ?1���� "�� � ������ ����� !�������� 4��!5� � 1���� �" � ���� �� ����������� � �� 6� 1������N �������� �" ���� 8 �������8 �����6���?���� �� ��11��� .��� �� � ���1� �11������� !���������� �����"��� 4�!�5� � 6� ������ �� ���1�"� �������� �" �����

� � ��� �" � � 1��<��� �� �� ������ �� �(������ "�������� �� �� �� ����?�������8 6��� �� � ��7�� ����������� 4��5 !��?�*�! ��! 1��"���� � ���1���������� �� ��������� ���������� 6�� *��� #���� !�� ����� 4*�1�5����� �� ������ ������

��� �������� ���� ��

• .������?1���� �� � ��� ��%�� ��� �� ��1������ ������� �� ����� ���?6��� ��� ����� ���6���8 � � ���6�� �� ����� ��� �� �� 1�������� ��1����6�8 � �� ��� 6���� �6� �� �� � ���� ���6���� � �� �� �� � ����������� 6� � � ��� "���������

• .�7� ?1���� �� � ��� ��%�� ��� �� ��1������ ������� �� ����� ���6������ <��� ��������� *��� 1��"���� ��� 6��� �� ������� ����������8 ��� � � ��� �" ;7� ?1���� �� �� 1����6� �� �11� � ��� ���������� �� ����������� � �� �� ��� �� �����1�� � 6� :��1��� ����: �" � � �����1�����

• +����� �����1������ �� ��� �� ��� �� �11��7������� �" � ����� ) �� � ������ 1���� �� � � ���1 1���� �� :����8 �� �� 1����6� �� �11��7����� ����� �� 6������ 6� :������ �� "�� "��� � � ����� 1���� ���1������� � ����1 1���� � � ���� ���

• ���1� ���� �� � � "��%����� �" � �� � � ���1�� ���� ����� � �

• .��� .������ �����"��� 4..�5 � ��� ��%�� ��� �� �����"��� ����� "���� � ���� ����� �� � � "��%����� ������

• .������� �� � ��� ��%�� ��� �� ����1���� ���1���

��

Page 18: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

• �� �� �� �� � � ����� 1����1���� �" ������� 4 ��������� �� ������� 5���� �

��� ����� ������ �� �� �� ��

�� ���1 ��� �� ��1���� ����� ���� � "�� ����� �� �� � � ��1� ����1�����" �� ����� � � ����� �� ���1 ��� �� ����� ��� ����1� �� ���1 ��� ����� �������� �� �71�������� � � "���� �� �� ���1 ��� �� ��� ������� 6���"���� 6� � � ����1���� �" � � ��7� ���������� �� �� �71�������� .�� ��������� � � 1�����1� "�� �� ?; ���� ���� ��� ������ ���� 8 � �� ��� "���� 6� � ��� ��%�� ��� ������� ���� � ������� ���� ����� � � 1����6���� ��86� � � ��� �" ;�� �1��:��� 4��� ������ �1��:��8 ��� "���� �1��:��� �� ��� �����1��:���58 ��:� � � ���� �11��� "��� �(����� ��������� �� � � ����� � �� ��� ��� ���� � ��� �� �� �� �71�������8 ����� � �" � �� �� ����� ��� �� � � ���=���� 1���� � ������� �������������� ��� ��� ���� � � � ������� 1���8� � ������ ���� ;� � &� �7������� �(����� ��1���� �" ���� 1 �����8 ���� � �� �1� �" � � ���� �� � � �� �� �� �� �(���� � � ��� �� 1������� ���� 8������� ��� ��� ����1��� ���� �� ���� �������� �� ���� �� ��� � ����� �� ��� ��� ��� ������ �� 1 ���� �� 1���� � �� �������� ������ ���� ;� "�� � � ��������

� � ��� ��%�� �� ��� ������� �� � � �1��:�� �� �� � � ��1��� �" ������������� �����"������ �" � � ��� � �� � � �"� � ���� ���� 6� ��� ��� 4����� ��:5��� �� �� �� ���� 6������� � ��� ���� �� �� !# ������� B���� ���� �������� �� �� �� �� ������ � ���� ������ �71�������� �� �� �� �� ��� �������� �� ��� �������������� ������ �K� 1����� �(�� �� �� �� �� � ���1����� ����6� ����� ,�� �� �� �� ��1� �" ������� ���� � � � �K� �� ���� ���� ���� �� �� ������ � ������ ����� �" � � ��� � ��6� ����� ,�� ������ � ����� ����� �� ��� ��6� 3�� 1 ��� O�M�

����� �� ���� �� ����

�� �� �� ��� � � 1������ ���� ����� 1���� �� � �� ��� A ��1��� A �� � � ���� ������� �� ���� � � ��1������� �� �" � � ���� � ���� ������ "��� � ��������������� � ���� ������ "��� � 1������� �� � � �"� �" � ������� �� ������ � ���� ����� �� ;��� ���� � � �"� ��� �� � � ��� � �� ����� � � ��� � ���8������� � ��� �" � � ��� � ��� ����� ���1��� �� � � �"� ��� ������ � � ��� ���� ����� �� ��� 6� ��������� �� �� � � � � ����� �" � � �� � � ��� ���8�" ������8 �� �� "������ � �� �(��� � � ���� ����� ��� �� ��������� �������������� � � ����������� �� � � 1���� 4� � �7����� ���5� � � � �1� �" � � 1������������� ��� � � ���� ����8 ����"������ ���� "��%������� �� ������������� ��� �1�� ��� �� � � �������� �" ������ �" � � ���� ����� 3���� ��������:�� ��� �" � � "������ ���� ���8 ��1��� � �(������ �� ���� ��"���������� �������� � � ������� �" � � ���� � � ��� �� ������� ��� ����� ����=���������� �� �� �� ������ ���:� 6� ��1�� ����� � � ���� ����=����� ���� ��� � ���� �" � � �������� &� ����������� �� ����"������ "��%�������8 ������������8 �� ��������� �� �� �(���� ��� �� �����6�������8� � ���� �������� "��� �� 1������� � � ������ �� ������������ 3������8 �� ��� �� ���� �� �91����� ��� � �" �(����� � �1�� �� ��=��� � �� ����� � �� "�� �� �1������ 1��"�������N ����� �� ��� �� ��� ��� �� ��� ��� �" ������ ����=�����

��

Page 19: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

����� ����� �� ��� ��� �� ����� �� ����� ���� � ��� ��� ��� ����8 ����=���� ���� ����� �� �� 1��1� ���� ��� �� ��� � � �� �� �� �71��������

�.�.�.� ������� ������ �� ��� ���

3����� �7����� � �� �" ��"�������� �6��� � � ������� ��� ����������� ������ ��� ������� � �� ����������� ��� 6� �� �� ���� �� �������� ������������� �� � � ����������� �� � �� � ��������� �" � � ��������� ������������� �� ����� �� � � ��� ��� � � � ��� ��� ��� 6� 6��:�� ��� ���� � ������� ���1������C ���� �������8 �������� ����������� �� ��������

• ���� ������C � �� �� �� �6<��� �� � � ��� � �� 1�� ���� ���� ������

• �������� �����������C ���� � � ���� �� 6��� ������ 8 �� ��� ����� �(����� 1�� � � ���� �� ����������� �� � � ������� �� � � ���� ���6� �� �;� �� � � ���� � � ���� ��� 6� �� �;� � ���� C �6���1����41����� �� ����58 �����6�������8 ��"������� �� �����������

• � � �������C � �� �� �� �6<��� � �� �������� ���� � � � ������� ������������ ���� �� �����1��� � � ���� ����� � �� ������ �� ��� ���� �� ���7����� ��"�������� �6��� � � ���� ������� �� � � ������������

����� �� ���� ���� ���

� ��� ��� �(����� ��� ������� �� �(���� ��� �� �������� �� �� ��8 6��� � ���� � � ��� �� ��1����� � � �� �� �� ������ � �� � �� � ���� ��� �����6� �

�.�.�.� , �� � ��� � $����� � +������ /,�$+0

�� 6� �6� �� ��1�� ��� � �� �����������8 3�� $���� �����"�� .�������43$�.5 ��� 6� ��� � � � 3$�.� ��� ��� �� ���� ��1������� �" � �� � ���� �� �������� "��� � ������� ���=���� �� ������� ����� &� 1����� � ���� ������ �� � �1���;� 1����8 �� � �1���;� ������� 4���� � �����58 � � 3$�. ;������ ��� 6� ������ 6� "�� � 1����� ��������� � � ���� �� �;������ �� �������� � � ��� � ���� �� 6�� �"� �� ��� � ���� � �� ���� �� ��� ��� �� 6� � ���� �" � ���� ���� 1����� �� 6� � � ��� �" � ���� �� �� �� � � ������ 1��"���� 6� 1����� � � ���� �6<��� �� ������ ��� �����1 ���� �� � � ������ 1����� � ����� �" �1��:��� �� "���� �" � � ���� �6<���� � �� � ���� ��1��� "��� ��� �" � � �1��:��� �� � � ����� �� "�� ��� ���� � � ����� �������� � � ����"��� � � ����� �� ���� ��� ���1 �� � � 1������ �� ��1���� ���� � ��������� �� 6��� ������� O'M�

�.�.�.� ��� ������ $� �1 � �� /�$�0

) �� � ���� ������ �� ��� 1��� ������ �� "���� �" � �������8 � � ���� ���� �� ���� ��� �" � � ���� ������ � �� � � �� ��� .�� ��������8 � �� ������ �� � �� � ���� ������ �� 1��� �� � � �"� �" � �������8 � � ���� �� ;��������� �� � � �������� �"� ���8 6���� ��� �� ���� �� � � ��� � ���� 4$�"�� ��;���� ��� "�� �� ����������5� � �� ��� �� ��� 6� � � 6���� �� �����1��� � �� �� � �" � � �� � � ���� ������ �� ����� �� ��� �� �������� � � ������� �������� �" ���� O�M� ) �� ��������� � � 3$�.�8 � � ������������ �� ���� �� � ��� 6������ � � ����8 � �� ��� �� ��1����� "��� � � 3$�. ;��� ���

��

Page 20: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Dist

ance

from

sour

ce =

> di

stanc

e gai

n

Tim

e dist

ance

to so

urce

=>

LTD

Time difference

between ears => ITD

Angle listener to source

=> HRTF and angular gain

Reflections => Reverberation

.����� ���C � �� ;���� ��������� ���� �" � � 1 ����� ��� 8 ���� ���8 3$�.8+��8 ��������92��� �� $�>������8 �� ������ � �� �� �� �71�������� � � ����� 3$�. ������� � � �(��� �" ���� 1����������� ��������92��� ����� � ��������� �� ����� � � +�� �� ��� �� ������ ������ �(���� �� � � $�>������� ������ �� ���� � ������������� �"8 "�� ��������8 � �����

�-

Page 21: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�� ����� �� � � ��������� ���� ��(������ 4���5 ���8 � � ��� ��� �������� �" �" � � ������ �" 3$�. ���=���� ;�����

�.�.�.� -�������� $� � ��� /-$�0

� 1����� ��:��� �� � ����� �� � � �������8 �� ��� �� ������ 6�"��� � � ���� �" � �� �� ��� 6� ��� � � 1 ������� �:� � �� ������ ����� � � �1�� �" ���� �� ��� ���� � �� � � �1�� �" �� �� � � ���� ��1�� "��� � � ���� �������� ���� �� ���� �� � � ������� �� ����� +�������� ���� ���� 4+��5� ����� � � �1�� �" ���� �� �11��7������ �'/ �9�8 ���� � ���� �������� '//������ ���� �� ������ �� � � ������� ���� ����� � �"��� � � �����������

�.�.�.� -���� ��

� � 1�����1� ��� "�� ������� �� � � �� ����4����5 �" � � ���� � � ������ ������ �� �� � �� �� �� ����� �� � � �������� .��%������� ��� ��� 6� 1�������� ����� �6���6� 6� ���4 �1�� ��� �� ��� ���58 ��� �� 6� �� �� �6<��������� �� ��1������ ��� "�� ������� �� � � ������� �� ���� �" �����6������� 4���$����6������� �� ������� ������,5�

� � ���� ������� ���� ����� � � ������� �� �� ��1������ "��� �� ��8 ������ ���� ������ �� � � �1���� �� ��� ��� ���� ����� �� � 1�������� ���������� �� �11� �(����� ����� � � ���� �1�� ��� �� � � ����� � �� �� ��� ��� �� ����� � � ������ ���� �� �;�� � � �� ���� �" � ������ �1�� ��� ��� �� ��������� �� �� ���� �� 1�� ��� ���� "���8 �� � � ������ �" �����11�� �� � �� ���������

�.�.�.� � � �& �����

) �� � ���� ������ 1�� ���� � ���� 8 � ���� ���� �71�� � "��� � � ���������� ��� ��� �� �� �� �6<����� � � ���� ���� �� ��>���� �� �6���6� 6���� �� �� �� �6<����� $����6������� �� � � 1��� �" � � ���� ���� � �� ����>���� "��� �6<���� �� � � ����������� �� �������� �� � � ����� 1�� ���� ����� ��1�� ��� �� � � �������� �� � ����8 �(����� �������� �6���6� �"?"����� ������ �" ���� ������ �� "��%�������8 ���� � � ������ �" ���� ��>������� �� 6� ���� �� ��� �7�������� �������� � �� � ���� ���� �� � ����� 1�� �� � �������8 � � ������� �� ;��� ��� � � ����� ���� "���� 6� �� �� ��>������� "��� � � ������� ��� ������������ � �� ����� � �� � �������� 1�������� � � ���� ���� ������ "��� ������� ��������� �� �� �(��?��� 1����� �� ����� $����6������� �� �� ��1������ �������� 1 �������� ����� ������� ���"� ��"�������� �6��� � � ��=� �� ������� �" � � ������� ��� �������?����� ��� �� ���� ����� ��� ���� ������ ��1� �" �����6�������8 �1�� ����� � � �������� �� ��������� $����6������� �� ��� ��1������ "�� ����6�� ��� ������� ����� ) �� � � ������� 6������ � � ���� ������ �� � � ������� ���������� 8 � � ������ �" ����� ���� ��������� � � ������� ��� �71�������� �� � � ���� ������ ����� �� ���� � � 6��:����� ��6���� ������ 6� � ��?>���� ���� ������ � � ����� 6������ �����9�����6����� ���� � ��� 6� ��� �� � ������� ��� ����� � � ������� ��� �71������� ��� �����6����� ���� � ��6���� ���� �� �����6����� ���� � �� 6���� �������

�/

Page 22: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�.�.�. ����� � ����� 1 ��

� � ��11�� �(��� �� � � 1��� ?� �"���� �(��� � �� ������ � �� � ��� �� � ������������� 6������ � � ���� ������ �� � � �������� ) �� �� �6<��� �� �11���� ?��� � � �������8 � � 1��� �� �� �� � �� � � 1��� �" � � ������� �6<���� � �������� �����8 �� � � ���� �� ��:�� � � �6<��� �� ���� ��� ����"���8 � � �6<��� �� ���� ����� �� � � �������� � �� � � ������ �������� �� � ����� � �������� �������8 � �� � � �6<��� �� ������ ���� "��� � � �������8 � � 1��� �� ���� � �� � � ������� 1��� 8 6������ � � ������ �������� � ��� ����� � �������� ��� �7��1� "��� � � ��� �"� ��� 6� � �� ��� ��� ���� ��� ����� � � �� ���: �� �� ��6����� ��� ��� ������ ��8 1����� 6�� � ������� ��� �� ��� � ���� � ���� �" 1��� �� � � ���� ������ "��� � � ������

��� �������

� ��� ��� �(����� ��� ������� �� �(���� ��� �� �������� �� �� ��� � ��� �1��� �����6� � ������ �������� �" � � ��� � � ��� �� ��1����� ���� �� �� � �� � ����� �������� :���� �� � �� �1� � � ��� �� �� �� ������ ���� �� � ���� �� ��� ����� ��� �

��

Page 23: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������� �

����������� ��� �����

� �� � ���� �������� �" � ;7� 1���� ��1���������� �" � �� �� �� ������� � � ����� �" � � ������ ����������� �� � #,,7 ��!8 ������� �� ��/ *3=� � � ����1���� 1 ���8 ������ � � �������� �" � ���:��� �� �� �� ������ ��� ��������6�������� � �� 1 ��� ��� ����1� �� � � !# 1��"���� � ��� >������1���� ������� �" � � ;7� 1���� �� �� �� ������ ��� �� � �� 1���� 6� � ���1������� �" � �� � ����� � �� ��� >������ 1���� �� � ��� ��1������ �������� �� 1����6� �� � � ;7� 1���� ������� �� ��� ��� �� ����"� � � ���������" � � ;7� 1���� �� �� �� �������

�� � � ��! 1��"���8 � � ���:��� �� �� �� ������ ��� �� �;� �� ����� 6�� 1��"����� � � ����� 1��"��� �� � ��� 6� �1����=� �� � � ��!�� ���8 6� �6���� �� ���1��� �� � � >������ 1���� �� � �� � � !#� � ����� ��������� �� ����"� � � �������� �" � � �� �� �� ������ �"��� �1����=������� �;�������� � � �����6������� 6��: ��� ����1� ������ �� � � ��! 1��?"���8 �� �� � � ���1�������� ���1�7��� �" �����6� ..� "��������� � ���"�������� ���� ����1� "�� �6������ 1��1���� �� ��� ��� �1����=� "�� � �!# 1��"���� � � ..� "�������� ��� ��11� �� �����6� "�������� �� � � ��!1��"��� ��:��� �� 1����6� �� ��� � � �� �� �� ������ ��� �����6������� �����?����� �� ��� � � �� �� �� ������ �� ���?����8 ���� �� ���1� "��� � ���! 6��� F� ��� �� <��:8 1������� 6� � � ��! �� ���� ��� � ���� � � ������ <��:�

��� ��� ��������

� � 1��"���� ��� �� � �� � ���� ��� ��� ��� ��� 6��� !#� �� ��� !��?�*�! 6��� � � � ����1���� ������ �� � � !#� �� �� ��� A��;����A ��?������� 4���1��� �� � ��!5 �� �� � � ��: �" � ��! 4� � ��! ��� ��������6� ���� � � "���� ���� 5� �� ��� ��� � � �� � � ;7� 1���� �� �� �������� � �� 6� ���1��� �� � � !# 1��"��� �� � �� �� �;� �� �1��?��=� �� ;� �� � � ��! 1��"���� 3������8 �� �� � � ���1�7��� �" � � ��� ..� "��������8 � � �����6������� 6��: ��� ����1� ����� 6�� 1��"�����#���� 1��"��� �� � ��� ��%���� 8 ����� � ����;������� �" � � �� �� �� ���������� �� � ���1����� � � ;7� 1���� �� >������ 1���� �������� �" � � �� � ��� � !#� ������� ,�� �����6�� ���� �" � � ������ ���������� 8 � �� ��:��� ������?1��"��� 4!# �� ��!5 ������� �" � � �� �� �� �������

��

Page 24: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

����� �� ����� �

� � )�� ��� 6��� !#� ��� ��� ���� !������ ��� �,/ *3= ��� �,� *& $�*8�� ��� ���� !������ �K ��' 23= ��� �,� *& $�*� � � �� �� �� ������ ���������� ��1������ �� � � � !# 1��"��� ����� *������"�F� K���� ��� �� ��� � ��������� �1�������8 ��! �1�������� �1����=� �� ��� �� � ��!8 ��� ��11� �� ������� "�������� �� � � !# 1��"���� � ��� "�������� ��� ��� �� � � !#1��"���8 ����� � ���� ������ �" #!0 ������ �� 6� �6� �� ����������� ��� � � ���� ��� �� � � !#8 �� �1��?������ �� �� ����� �6���� ��� 1����� ����� ��� O�M�

����� ��� ����� �

� � ��! ��� �� � �� � ���� �� � ��7�� ����������� �*���/K#,,�/?��/ ���?���� �� ��/*3= ��� �� ����1���� 4�1 �� ��/ ����� ����1�?����������1�� ����� 4**�#�55� �� �� � �,� &���� 1������9��������� ��$�*4����������� $�*5 �� � �' &���� ��$�* 4��� ������ $�*5 "�� ����: �� ��1 ���������� � � 1������9��������� ������ �� ������� �� 1������ ��?���������� �� ���������� � � ����:8 ������ ����: �� ��1 ��� ;��� ���� � ��' &���� ������� � � ��! ���� �� � !��?�*�! 6��� � � �� 6��� �� �1��?������ �" ��7�� ����������� �*�!,-�/ � �1���� � � !��?�*�! 6��� ���������� � �*���/#,,7 ��! ���� ��� � �� �� ���� �$*-�,� � � �������� �� �����"��� ���� � ��7�� ����������� �+#��/����#8 �' 6���8 -�:3= �������� �� �� ��� #� �� ��1�� �� �������6� � ���� � �����1 ��� ������ <��:8 �� ���� ��1�� ������ <��: O�M� � � #� �� �� �������6� ��� ��� �" � � *���� ����&�(��� ����� !��� 4*�&�!58 1����6������ �7���� �� 6� �6� �� ��� � �� � ���� � � *�&�! 6�(�� �� 6�� �� �� 1����6� �� ��� �������1�� � �� � � 6�(���� ;� 8 6�� �� �� ��� 1����6� �� ��� ������ *����� ������ 4�*�5 �� �����"�� ��� "��� � � *�&�! �� � � ������8 �� �"��� � ���6�� �" ���1��� �����"������ �� �������1� "��� � � �*� ���������

� � ����1��� ��� �� � � ��! 1��"��� �� #� � #��1���� ��� �� ����#� � ���1���� ��� ��8 ���� �� � � !# �� ������������ ��� � � !��?�*�!6��� � #� � ���1���� ��� ��� ��� �� ���������� �� �8 ���� �� ��� ������ �� ����������� ��� �� �7����� 6��� �� �������� � � �7������� �" �1������ ����� � � !#F� #!0� ������ � �� � ����8 ��� ��� !��?�*�! 6��� ��� �����6� �� � � !������ �K ���1���� ��� ��� �� ��� #� � #��1���� ��� ���� ������� � � !��?�*�! 6��� �

��� ������������

� �� ������ � ���� 1��<��� �� ����1 � �� �� �� ��� ���� �����6� "�� � ������ �7������� ����������� �" � � ��! 1��"���� � � �� �� �� ��� �������� ���� � � � "������ "�����������C

• 3�� $���� �����"�� .�������43$�.5 ;�������

• �������� �(����

• ��11�� �(����

• $����6������� �(����

��

Page 25: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� ���1� �!� � �� 6� ��1������ �� ������ � � �� �� �� ��� ����8 �����1�"� ����1��� �" �������������� .��� ������8 � � ��1���������� ������� "��� � � "������ ��� �����C

• *��� 6� ������� �� �������� B������ ���� �� "�� ��"�������� �������4�B��5 # O�M �� "�������� 1������ �� � � ��! 1��"����

• *��� ��11��� �� 9�� %����� 4����9��� ���1�7���5�

• *��� 6� 1������� ����� ��� ;7� 1���� ���� �������

• #��1�������� ���1�7��� ���� 6� :�1� �� � �� ����

• � � �� �� �� ������8 ��� ��� 1����� �������8 ���� ��� �� ���?���� ��� � ������ ������������

��� �����

.�� � � ��� ��� �����������8 ���� 6���� ��� ��%��� ��� � ���� ��� � � � ������� �����6� �� � � "������ ��6 ���������

����� �������� ��� ���� �����

�L����� �� � �� ��� ����� ���� �� ��:�� �� �L����� ������� �� � !# ��� 6����� ���L����� ��8 "�� ��������8 �� ��6� � ������� ��(����� �1����=������1�� ���� �(����� ������ �� �(����� �������� �� �L����� �� � ��� ����� ����� �� ��1���� ��� �� ������ �" ��� � ������8 �� ���� ����:�8 ���� �� �����7����� �����8 ������� ���� �� ����� �� � �1���;� �� ��8 ��� 6� ����� �� ��� �(����� ������ �� �� ���1���� ��� ��%��� �� ������ ����������� ����:� � � �� � ���� �L�����8 ��� ���� ����� �� � � ���1�������� ���1�7����" � � �� �� #���� ����� � �� ��� 6� ���� �L��� ��� ��� ��� ����� �� ����� ��� �� ������� � � ���1�������� ���1�7��� � �� ����� 1��"���� � ����: >������?1���� �� ���� ��11���8 �� �� ��1����� � � ������ ������� �����;7� ?1���� �1���������

�.�.�.� +2 �3���� 4� ������ ��� !��&� ��

� ��� �� � 6�� �(������ 6������ � � ��� � �" ;7� ? �� >������?1����� .������?1���� �1�������� 1���� � ����1��� ��� ����� ��������8 6�� �� � �� 1����C���1�������� ���1�7���� ������� ��� >������?1���� �� ���� ��11���8 "���7��1� � !#8 ��� �"��� �1����=� �� ��� ������� � ��� �1�������� �� "����� ;7� ?1���� �1��������� �� � � �� �� �� 8 ��������� >������?1���� �1���?����� �� ������� ��� ��� � �� :�� �" �� ���� ��11���8 ��� 6� ���� ��������� �71������� �� � ��� :�� � �" �������8 ����1��� ��� � ���� �� ��� ���;7� ?1���� �1�������� �� ������ � ���� �L����� 1������� � �� �11���� ��������� ���6� ��� ���1�������� 1����8 6�� �� ����� ����1��� � ������ ��� �� �����9���������8 �������� �� ����>��9�� ��>�� 1��6����

�'

Page 26: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C $���� �� � ��?��� � � � ��6� � ��� � � ��7���� ��=� � � ��� ��� ��� ����� ��9�� 6�� ;7� ?1���� �����6�� �� � ����� ���������� �" ��������1 �� � � ��?��� ������1�� � �� ���8 � � ��7���� ��� ��=� ��� 6�'�� ����� ������ ����� � ��?6�� ;7� ?1���� �����6������������ ����� ��� �� ���� �

���� ������ ������

����� ��� �� ���� �

���� ������ ������

� ����� �, ,�� ' �-' -�� �-�� ��������� � ,,� '�- '-� ��-� ���������� �,, '� -'- ���� �������� �, ' �-' -��

�.�.�.�.� ����&� � ���� ��� � ������� � � ���6�� �" 6��� 46��? �1� 5 �" � ;7� ?1���� �����6� ��������� � � ��7���� ���� �� ��� �6������ � ���� 6��� � �����6� ��� � � ������� ���� �� ��� ������ ��� �" � � ���������� 1��6��� ��� ;7� ?1���� �����6�� �� � � ����� ������ � ��?6�� ����?��� �� � ����� �" ?�� ��� �� P�� ��� ���� �, ,�� ���1�� �" ����� ���1 ����������� ����� �� � � ��� ��� 8 � � ����� ��� 6� �, ,�� ������� � � �������� 1�� �1� 6� ����� 8 6�� � � ��������� ��� 6� ������� ��6� ��� � ���� � �����9��������� �" � ��?��� � �� ��� 6� �� ���� 6� ����� �(����� 6��? �1� � �� ;7� ?1���� �����6��� ��(����� ������� ��� �1����=� "�� �(�����6��? �1� �� 0����8 �1�������� �� � ��?6�� �����6� ���� � ���� ���1���?����� ���1�7��� � �� � ��?6�� �����6�� � ����1�� ��� � �� ����=� � � �� ��� ����� � � �� :�� �" 6��? �1� �� ��� � �� �����"� �����9��������� �� ���1�������� ���1�7��� ���� ��

�.�.�.�.� �������� ���� �� ��������� �� � �� ;7� ?1���� �����6�� ������ ����� ������� ����� ���� �8 �8 �� .�7� ?1���� �����6�� ������ ����� >������?1���� ����� ��� �� /�,8 ���8 �� ���,�8 � �� ��� ��� � �� ������ ������������ ��� �� �" ������ ������ ���� ����� � �� 1��6��� � � ��� � ��� � ���� ?��� � �� ����� �� � � AE?"�����A� � � E?"����� ��:�� �� 1����6� �� ��1������ �%�����=� >������?1���� ���� ��� � ;7� ?1���� ����� � � ���������� "�� � ��"����� �� � � ���6� AEA "���� 6� � � ���6�� �" 6��� ��� "�� ������� � � ����� ����� � � 6��� �" � ;7� ?1���� �����6� ���� 6� ��L����� �� �����6�6�� ������ �� ������� 1��� �" � � >������?1���� ����� � ��?6�� ����� ����?��� ��� ������� ��� � E�,?"������ �� ��1������ � � ���� /��, �� E�,?"��������1� ����1�C /��,·215 G �' ,�,� � � ���� ���� ��1������� �� E�/?"����������C /��,·210 G ���� 0���� � �� �� E?���6�� ����� � 6����� ��������� �� ��������� � E?"����� ��� B?6��� �;��� � ��������� ������1�� ��� �� 2−N �!���� ��"�� �� ��6� ��� "�� � ���1������ 6������ �(����� E?"�������

B��� � �� ����>��9�� ��>�� 1��6��� ��� ��������� 6� � ������ �� ��?������� E?"����� ���������� �������� �� ���� ��1������8 � � ���� ������������������ ���8 � � �� �� %����� �" � � ���1���

�.�.�.�.� 4� �5�67��� �5�6 *��� ����1��� ��� "������ ��� � � ���������>��9�� ��>��� ����>�� ������ �� � ����� �" �� �1������� � �� 1�� ���� �������� � ����� � �� � � ����� ������ 0� ��>�� ������ �� � ����� �" �� �1��?����� � �� 1�� ���� � ������� � ����� � �� � � ����� ������ *��� ������� ���� �� � ����>���9�� ��>�� �����������8 6�� ���� ������� 1������ ����?

�,

Page 27: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C E?"����� ��������� � � ��6� � ��� � � �������� �" � � E?"������� � ;��� ��� � ��� � � ����� >������?1���� ������8 � � ��������� ���� � �� �(����� ���������� �" � � E?"���������������� ������������ ������������ ������������

0.75 · 35 0.123456 · 50 0.123456789 · 50��� ����, ������ '�/�'/�'/�� �� ����, ������ '�/�'/�'/�� �� ����, �����' '�/�������� � ����, ,��,-' ��������,//

>��9�� ��>�� "��� ��������� 6� ���������� � �� ��� � � A)��1?����� A ��� ���� ��� � �� �� ���������� ������� �� � �����6� >�1� "��� ��F� ��7�?��� ���� �� ��F� ������� ���� 4�� � � �� �� ��� ����� 5 ���� �" � � ������ /// �� ����� �� � ����� ��?6�� �������8 � � �������� ���� ��� 6�����C4��///?�����5P4?�����5G ?�� ,�,8 ����� � � ��7���� ���� �� �� ��� �� � �������� ���� �� ?�� ���� �� ������� ���1?����� 1��6���8 ����1��� ��������=� � ��� �� � :��1��� �� ��� � � ���6�� �" 6��� ��� �� � � ��7�������6�� �" 6��� ���� � � ���1� �7��1� �" � � ���1 ����� 1��6�� ��� 6�����1���� ��� ��?6�� �����6�� �� ������ � � ����� �� � �� 6�� �����6�� � ������1������� ������� � ���1 ����� ����� ����1���� ��� ��?6�� �����6�� ������� ����� ����� � �� ��?6��� ���� 24 ·213 G 217� � ��� �� � � �1���� �" � ������� �� �� 6��? �1� 8 6�� ����� � ��?6�� ������� �� ��� ���1�7 � �� �����8 "����������8 � ��?6�� �������� � ���� � �� � �� :�� �" 1��6�� �� � ��� � ��� &����� .������ 1����� � ���� �� ��1������� 6� s ·M · 2E 8 � ��� � �� � ���� 6��"�� � � ��������8 * �� � ��� � �� �� �71������ � �� ��� � ���� � ��?6���������8 ��� � � �1 �" � �� �1� �������8 �� ��1������ ����� � �� ��������� ��� 6� ����� ����� �� �� 6��? �1� �� � � �71�����8 �8 �� � 6����� ��������� ���� �������8 ��1���� ��� � 6���� � � �������� �� � ���6�� �� � � �������O�9�8 �M� 3������8 � � ���� �9� ������ 6� ��1������� ����� ������� �����6���� ��� ����� � �� 1��6�� �� �� ��� � E?"����� �� ��1������ � � ������� O�9�8�M� 0���� � � E?�, "����� � � ������� ��� ������ 6� O�����8 �����M� � � E?"����� �� � ���� �1�� ��� �� � � 6��? �1� �" � � �������� ���� ����� � ����� � �� ��� E?"����� � �� � � �������� ��� ������� ��� �� ��%���� � � 6������������� 0���� � � 6����� >������ 1���� ��� � 8 � � ���� �� /// ��� 6���1������� ��C �� ,//·21� ����>�� ��� ��� ����� � �� ������� � � ����������� �� �� � � E?"������ &� ����� �� ��������8 "���� 6��� ��� �����6��� ������� � � ������� ����� � � ������� ��1����������� �" � ���� ����� � �E?"����� �1�� � ��� �� �� � � ���6�� �" 6��� ��� ������� �� � � ��������� ����� 1����� � ����� ������ �" �����?6��� ��������� � � �������� �"� � ��1������� ����� �� � � �� �� �� 8 �" � � 6��� ������� �� ��1������ � �������� 1��� ��� ��� ����� 8 � ���1?����� �� ����� �������� �� � ���1��������� ����� ��6� ��� � ��� � �� �11��� � �� � ������ �� �������� � ���� ��� �� � .��� �(����� ����� ��� ����� �� 6� ��1������� ����� �(�����E?"������ � � ������� 1��� �" � � ;��� ���� � /'����8��� � �� ���� ��?6��� ��6� ��1������� 4"���� 6��� ����� ����>��58 � � ������� 1��� �" ������ ��� � �?6����� � � ������� 1��� �" ���� ��� � �?6���

#��������� ����>��9�� ��>�� 1��6��� ���� ���1�������� 1����� &� 1��?;��� � � �� �8 ���� ������� � � 1������ �� ��� ����� ���������� �6��� "��������

��

Page 28: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C ����>�� 1��6�� ����� � � E?"����� ��� �� 6�� �������� ���������� �� ��� ��� E?"����� � ���� 6� ��:��� �� � � ������� 1��� �" � ������ ���8 �� ��:��� � � ���� ���6�� �" 6��� ��� � �� ��1������ � � ������� 1��� �"� �� >������?1���� �����

�������

����� ����

�������� ������

������� ������

�������� ������

������ ������

�������� ������

������ ������

� ������ ����>�� ����>�� �� �,������� ����>�� �� ,'� �� ,������ �� �,/ ��� ��

�� ���� �� � � �� �8 ����1��� ��� � � ���1�������� ���1�7��� �" ������ ��?��� �� � � �� �� � �� ����� ����1��� � 6����� ���� �" � � �� � �� �1� � ������� � � �� �� �� 6����� �� ������� ����>��9�� ��>�� 1��6��� �� � � ����6��? �1� �� � �� �� �� 6����� �� ���1� �������� � � 6��? �1� �" �����6���

�.�.�.� +2 � ���� 4���8�����

� � ������ ��1���������� �" �� �� �� �� �� �� ��6� � ������8 � ��!�*���/#,,7� � �� ��1� �" ��! ��� ��� ��� �� ���� ��11��� "�� >������1���� �1��������� � � �� � �� ��������� �� ��� �������� �� "�; � � ���� �� � �" � �� ���1�������� ���1�7���� � � �*���/#,,7 ��� �� � � ������ ��=� �" ��?6��8 6�� ��� � ���������� �� � '/?6�� �+0� � �� ������ �� ������� 1��"������� �� 6� �� ���� 6� :��1��� �����6�� �� ��?6�� ������ �� ��������8 �� �� ���� ��� ���������8 �� �� 6� ���� � �" 1����6� �� ����� ���1�7���� � �"���� ��� 6� ��� ������ �" �������9����1������� �" � ���������� �� � 1���� �" ���� � � �*���/#,,7 ��� �� � � �"�� ��������������� �� �� �� �� ���� ������ �� ��� ���� � �� ��:�� � �"���� "�� ���� �(������� �� �������9����1��������

� ��� ��� �� �� "�������� ���� ���� ���1�7 � �� � ������� "�� ������������� �������8 �%���� ����8 1����8 ���� � ��� "�������� ��� ��� �� � � ���?������ ����������� �11��7������� � ��� :�� � �" "�������� ������ �� ��L������������� �� �� ��� ���1�������� ���1�7���� .�� ���� ��"�������� �6���� � �11��7����� "�������� ��"�� �� ������� �������

��! �� "�� #� �

� � �� )�� �� � ��� ���������� �� ;� �� ;7� 1���� ��1��������������� ����� � � ���������� �" ��?6�� �� ��?6�� ������ � � �� ��� �� ��������� �" ��� �������8 ������ ���� �������8 ������ �1���;� ������������4������5 �� � � �� 1���������� �1��� 4� � �� ��� 5�

����� ��� �� ��

��� �" � � ��<�� ������ ��� � � �1��� �" � � �� ��� � � � ���� �� ���������" � � ��?��� ���� 6� ��� � 6�"��� ���������� ��� � � �� �� �� �������.��� � � �������� 1����8 � � ������ �" � � �� �1���8 � � ��� ��� 6� P9?*�Q@�B��2�$@K�+0� "�� � �7��� ����� � � ��� �� 6�� �1�� ��������8

��

Page 29: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�� "�������� ��� �����6�� ����� ���1 �� � � ������� ������� ���� ������1�� ��� ������� ���� ��� ����� 1�������� �� �����"� � � ���������� �" �� �� ��� .����������8 �� �6<��� �� � � 7?�7�� �" � � ��� �� ���� ��� ���1 "��� � � ��������,� �� �,�� �" � � ���� �" � � ��� ���� �� ������8 � � �6<��� ��� ��� ���� � ������ �" � � ���� �" � � ��� �� � ���� �� �9�' �����8 � � �6<��� ��� ������� �6��� �8� ��� *��� ���������� �� � � �� �� �� ������ ��� 6��� �� � �1������� ������� �" �(����� �6<����� � �� ����� � �� � � ������ ���1 �� � ��� ��� ���� ��� ����� 1�������� �� ���� ��� ��������� ������ �� � � �����" � � ����������� � ���1 �� � � �� �� �� ��� ��� �;�� �� �9�/�' �����8�6��� � ��� � � ��7���� ����� ��� 6� � �� �� ����� �7�� �������� �� � � �������C

√0.0012 + 0.0012 + 0.0012 ≈ 0.002 �����8 �6��� � ��� � �� �����

�� ����1��6�8 ����� � � 3$�. �� ��� ����� ��� ������� � ����� ����� �� 1������ �� 8 � ������� �� ����� �71������� � � ���� ����� � �� � �����8��:��� � � ��7���� ����� �6��� 2 · 10−3� � � ����� �" � � ��� ����� ��?6�������6�� ��� � �� :�� �" ��������� ��� 6� 216/1024 = 64 ������8 � �� ��6� "�� ��� ����� � 0���� ��?6�� �����6�� ����� � ����� �" 231/1024 = 2097152������ �6��� ��// :��������8 �� �/,/ :� �� ����� �������� "��� � � �������

����� ������

� � �� ��� ��� 6� ��� � ���� �����8 ��� ������� � ��� ����� ��� ��� �(����� � �������������8 �:� �(����� ������� �" �����6������� �� �(����������� �" ������� ����� ) �� � ��� ����� �� ��� 8 � � ������� �71��������� �� � �� ������ � ��� ����8 �� �� � � ������ �(����� � �������������� � ��� ���� ��� ��� ��1����� ����� ����� ���8 �� ��� � � ����� "������������� 1������� � � ����� ��1���������� ���� �� ������� ������� � �� �����6� �� � � ��1��� � �" � ���� �� ����� 6� �������� � � ��1���������� �"�����6������� �� ��� ��� �� � ����� 6�� �� � � ������ �� ��� �

����� !������

� � +������� �� �� �6<��� � �� ��� �� :��1 ����: �" ��� ������������ �" � ��������� �1�� � ���8 � � ��� �� �71������� �(������ � �� �" � ���� ���� ��������� � �1� � � ������� ��� ��� ��� �� �� 8 ������ � � �� ��� ���������� �� ����� � � ��� ���������� �" � � ������� ��� ��� ������ � � ���� �"1�������8 6�� � ����� � � 1����1���� �" � � �� ��� � �� �� � � ��� :�� � �"���������8 � �� ������ ��� ���������� � � � �1 ������ �� �� ���������� �:������� �" � � �� �� � �� � � ������� �� �1�� � ���� � � ������� �� ��� � ��6���� �� "��� � ������ �� �� ���� ���� "��� � � ������� �� �� � � �� ��1���" ���������� � ���� ������ �� ��%���� � � � "���� �����6�� � � �������� � �������� �� ��:��� ���

����� ���� �� ��

� ���� ������ �� � � �1���� �� �1��� � ��� ���� ���� ��������� �� ����?������ ���� ��������� ���� �� ������ 6�8 "�� ��������8 � ��� ���� �� � � "������� � ���� ����� �1��� �� � ���������� � ��������� ���� ��� 6� �?����6� �� � 1����� A!A ���� ��� ��� �� 6��: �� "���� �" � � ��: �������� ��8��:���� � 1����� �� � � ���� �� � �" � � �� �� A!A8 ���� � �� A!A �� �������� � �� 1����� �� ������� 6� �� � � ��� 3� ������ ��� � �� A!A �� �������

��

Page 30: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�" A!AF� 6��: �� �� ���� �� � � �� �� 1����6�8 � ��� 1�� ��� ���� �� � ������ 0 �� ±90 ������� �" A!A � �� 1��:� �1 � 1�1� �� ������ ��:��� � ���� ��8 � ��� 1�� ��� ���� �� � ���� ����� ������ �� 6� �6� �� ��� �� � ��8� � ���� ������ �� �� ������ ������ �� � ���� ������� � � "���� ��������� � � ������ "��� � ������� �� ���� ���� "��� ��� � � ������ ������ ���� � ������ �� � �� �����8 ���� "��� � � ������F� "���� ������8 �� ��� 1�� ������� "��� �� � �� ������ ���� �� � �� ��� �� � � 1�������� ���������� �� ���6�� � ������ �� �1��� ���� ���� ��������� 4/ �� ��/ ������58 �� ��1���;� �������� 4angle1 �� angle25 �� �� � �1���;� �������� ����� �(���������� �1�� ��� �� � � �������� 4angle1 �� angle2 ��� gain1N angle3 �� angle4

��� gain2N���5� B��� � �� � � ���� ������� ������ ������ �������� ����� �� � ������ 0 ≤ X ≤ 1808 ����� � � ���� ������ �� ����������� � �� ����� � �� �"� ���� ���� � � ���� �������� �" � � ������ "��� �/ �� �/ ������8 � � ���� ������ �� ��� 1�� ��� ���� � "��� �,/ �� �'/ �������

��$ �������

� �� � �1��� ����� ��� � � �(����� 1��"���� ��� 6� � �� � ����� � � ��?%��������� �" � �� � ���� �� � � >�� ��� �� ����1 �� �� �� ���� �����6� ����� �� �� ������ ;7� 1���� 1��6��� �� ;7� 1���� �1����=������ ����1������� � .��� ������8 � � ����� �" � � �� �� �� ��� �� � � �(������������ �� � � ��� �:� ������8 ������� �� ������� ���� ��� �����6� �

�-

Page 31: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������

�� ����� ������

��������������

� �� � �1��� �� �����6� � � ��� �� 1���� ��� �" � � �� �� �� ������� ���������� �" � � ��������� �� >�� �" � � 1������ �� ;��� 6� �����6� 8 "�?��� 6� � � �(����� 6��:� �" �� �� ���� � ��� �� ������� �� � � ���� �" � � �� �� �� ������8 ������� � �� � ���?�� ���6� ������ �" ���� ��� �1��� �� �6���� �� �L����� �11���� � ��� �" � ���%��������� ��� �� ��:� � � ��� ���� >�7�6�8 �� � � ����� � �� � � ��� ������� 6� ��� �� ��� �� �� �� %����� �� ���� %�����8 ������� � � ���1�����������1�7����

��� ���������� �� %���

� � �� �� �� ��� ���� �� � ������� ��� ���@�7�����8 � �� �� �8 �� �;���� ������� � ��� �" ���1�� �� ������ � � �� �� �� �71�������� �� �� ���� � ���1�������� ���1�7���8 � �" ���@�7����� ��� ��� ��� �� 6� �7����� ����� �1 ���� � � 1��� � �� ��� � �� 6� �7����� ����� �1 ���8 ���� ��� ���� �� ���?6�(�� �� 1�� ��� 8 �� ��� � �� ������ �� ����� � � &�(��01 ��� ������� �11��7������ �� �11��� ����� �� ;���� �� �� �� �� �� �"�

��6� ���C B�������� �� ���6���� ���� !��� ������

Li ������ � � ��1�� ���� �Lo ������ � � ���1�� ���� �Lm ������ � � ���� ���� �Lh ������ � � 3$. ;��� ���� �Lf ������ � � �����6������� ;��� ���� �Lb ������ � � ���6�� �" ���1�� �� 6� �������� "��� � �������Nd ������ � � ���6�� �" ��� �� ���Nf ������ � � ���6�� �" �;�� �����6������� ;�����Nc ������ � � ���6�� �" � ������Sr ������ � � ���1� �����

�/

Page 32: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� � �������� ���1��8 ��� ������� ����� "�� ���� ������ � � ����� ��� 6�� � &�(�� 01 ��� ������� ��� ����� � �� ��� ������� 6� � � �� �� 1��� �"���@�7�����8 ��� ���� ������ �� ����� � � .���� 01 ��� ������� ������ ��� �� 6� �7����� ����� ���� ���@�7����� ���� �� �� ���� � � ����������1�7��� �" ���@�7������ ����� � � .���� 01 ��� ������� �1 ���� �������� �� 1�������� �� �����8 � � %����� �" � � ���1�� �1�� � �� �� �"���� � .���� 01 ��� ������� �� �7����� � *��� �� � � .���� 01 ��� ������� ��������� ������

� � "��%����� �" � � &�(�� 01 ���F� �7������� �1�� � �� � � ��������6�(�� ��=�8 ���� � � ���6�� �" ���1�� ��� ��� 6� � � �� �� �� ������� �" � ��������� 6�(�� ��=� �� ��� �� '�/// ���1��8 �������� � �� � � ���1� ���� �� ����� '� :3=8 � � &�(�� 01 ��� ������� �� �7����� �/ ����� 1�� ����� � 0���� ����� �������� 6�(�� ��=�8 � ? �/ ��8 ��� ��� �7������� "��%������� �" ,// ��,/ ����� 1�� ����� �

� � ��1���������� �1�� ���� ��� ���� 1���� �(��� ��� 6�� � ��������) �� ����� � � �� �� �� ������ ����� �� ��� 8 "�� ��������8 � �� ���1 ���������8 � � .���� 01 ��� ��� 6� ��� �� � � ���� "��%����� �" �7������� �� � ��� ���1 ��� "���� ��� �� �������� �" � � �� ���1 ��� ������ ��������� �/ "�����1�� ����� 8 � � .���� 01 ��� ������� �� ��� 6� �7����� �/ ����� 1�� ����� 8�6��� ����� �� ��� �������� � �� � � &�(�� 01 ��� ������� �� ��� �� �7���������� � ��8 � � .���� 01 ��� ��� ��� ���� ����� ��� � &�(�� 01 ����8 � ���� ����� � � ���1�7��� ��� ��� ���1�������� � � %������ � 6��: ������ �"���@�7����� �� �����6� �� ;���� ����

����� " ��� #$���� %�����

� � .���� 01 ��� ������� �������� �� ������ ����� "�� 6�� ������� �� �� �� �������� ����� ������ �� ������� �� � � �� �� �� ��� �� � ��� �(����� ����������C ����� � ��� �� ����� � � ��� ���������� ��� � � :��"������ � � � � .���� 01 ��� ������� ��� 6� �7����� ��� ��� "��%����� � ��� � &�(�� 01 ��� �������� � � B�7�?8 #������? �� !������� ���������� ������ �(����� ������ � ������� ����� �� � � .���� 01 ��� ������� ��� ����� �� � � B�7� ���������� � � B�7� ��������� �;��� � � 1���� � ��� � �������� ������� ��� ������ ����� �8 ���� � ����� ����� �� � � B�7� ��������� ���"����� ������ &�"��� � � .���� �1 ��� ������ ��������� � � B�7�?�����8 � �B�7�? �� !������� ���������� ��� >�11� 8 ���� B�7� 6������ !������� �� !������� 6������ B�7�� &� ���� ��8 � � ����� �" � � 1������� .���� 01 ������ ����� ����� �� � � !������� ���������8 �� � � ���� ������� ����� �"� � �7������� .���� 01 ��� ��� ����� �� � � B�7� ���������� � �� �11���� �1��� �� �11�������� "�� � � &�(�� 01 ��� ������� �� ����� �����1���� � �B�7�? �� !������� 1��������� ������ � � .���� 01 ��� �� ��� ��� "��%������" ��� � � � � ��� "��%���� � � .���� 01 ��� ������� �� �7����� 8 � � � �� ���� � !������� ������ � �� ������ �� ��� �������� � �� �����1������ 6������1������� �� ��7� ������ ��� ;���� ��� "�� �� ���������� �� �� � � %����� �"� � ���1�� ��� 6� �(���� 6� � � ���6�� �" ��� �� � � .���� 01 ��� ��������

�.�.�.� +��� *���� ����� +��6

�� �������� �" � � .���� 01 ��� $������ �� �������� �� ;���� ���� � � .����01 ��� ������� ������ 6� �1 ����� � � ������� ��������� �" � � �11������� ��

��

Page 33: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Get Buffer

Reverbaccumulate

HRTF

Apply ReverbCalculate Current

Params

Apply Gain

while sources inplaying list

Yes

No

Resample

Frame Update

Out bufferAccumulate

If time forframe update

No

Yes

Calculates Currentparameters of GAIN, ITD,

LTD, HR-Filter and numberof samples needed.

returns a buffer with thenumber of samples needed.

Resamples the bufferreturned by the previous

block into the outputbuffersize.

Applies the calculatedcurrent parameter of GAIN

Accumulates Reverb

Applies the calculatedcurrent parameter of the

HR-Filter

Accumulates/Mixes asource's out buffer into a

global buffer.

Applies the reverberation.

Calls upon the frame updateprocedure.

.����� ���C ���@�7������ � � ;���� � ��� � � >�� �" ���@�7������ � � ������������ 6� � � "���� �1 ��� ��� ��� 6� � � ���� �" � � 6��:�� � � ���� �"� � 6��:� ��� � � &�(�� 01 ��� $������ ���� � � 1��� �" ���@�7����� � ������ �7����� "�� ����� ���?6�(��� � � 1�������� �" ������� 1��������� �� � �&�(�� 01 ��� 1��� �" ���@�7����� �1�� � �� �� �"��� � � .���� 01 ���$������ �� �7����� � � � ���1�� � �� ���� ��� �" ���@�7����� ��� ��� ��6� �������� � ���� � �9� ��������� �� � �� ������ �� ����� �� ��1�;���� � �1��:���

��

Page 34: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

.����� ���C .���� 01 ��� !��������� � � ;����� ��������� �� � ��������71�������� � ������ �1������ ����� �� �� �� � ������� ���<������ ��� � �(����� ���6�� �" ��� �� � � .���� 01 ��� �������� � � ;���� �� � � �"���1������� �� A��;����A ���6�� �" ��� ��� �� � � .���� 01 ��� �������� � �;���� �� � � �� � ��1������� � � ���� ���<������8 ����� ��� ��� � .����01 ���� �� � � ;���� �� � � ��� � ���� ��� "��� .���� 01 ����� � � ����"��%���� � � .���� 01 ��� $������ �� �7����� 8 � � ���� 1������ � � ���1���� 6��

� ���� ��� ���� ������1�� ��� �� � � �������� �" �� �1 ��� �� ��� � 8 � �1����������8 "����8 �1 �� ������� ������� ��� �1 ��� �� ������� 1��<��������� � � ��?��� ��� ������� � �" �� � ����� ��� 6��� �� � �� � �������"��� � � 1������� "���� �1 ���8 � � !������� ����� ��� ��1�� ���� � � B�7����������8 �� � �� � � &�(�� 01 ��� ������� �����1���� � �� �� � � ������� ���6���� �� ������� ���� � � ������� �� �������"�� �1 ��� 8 � � .���� 01 ���������� ������ �1 ����� � � ������� �� 6�� 1����� �� ���� ���� �" � ��� ����� ��� 6��� ����� ��� � � �!�� �����8 �" �� � ����� ��� 6��� �� � �� � ����������� � � 1������� "���� �1 ���8 � � !������� ����� ��� ��1�� ���� � � B�7����������8 �� � �� � � &�(�� 01 ��� ������� �����1���� � �� �� � � ������ �� ����������

� ������� �� 6�� 1����� �� ���� ���� ��� �1 ��� ����� � � �������1 ��� 1���� ���� �� �������� �" � � �1 ��� ������ 1���� ��� �� �������� ��;���� ��'� � � ������ �1 ��� 1���� ��� ������ 6� �1 ����� � � 1����������8 "������ ������� ������� �" � ������ �� ��������� � � ������� �� � � �������� �"� � ������� �� � � ������� �� 6����� � �� � � ������ ���� �� � � ������� ������8� � ������ �� ���� �� � � ���� ���� � � ������� ������8 �� � ������ ��� ���� � �!�8 ��� �� ������� � � ���� �" � ������� � �� ������ �� � ��� �" ��������1���� ��� ������ � � ������ ���� �" � � ������� ������ �� � � ������ �������� �� �� � ���� ����� � �� ��� �" � � ������� "��� � ������ �� ������� � �� � ������� ���� �" � � ������� ������8 �� �� ���� �� � � ���� ��� �� ����� �� ��� ������ �� ���� 1��"�������� �" � ������ �� ������8 � � 2���8 +��8 ����� 3$?.���� ����� ��� ������� �� ����� �� � � B�7� ���������� � ��� ����" ������ ���� ���� ������� ����� �� � � �1 ��� ������ 1���� ��� �������86�� � � �������� ����� ��� � � ���� ��� 6� � � &�(�� 01 ��� ��������

����� &��� #$���� %�����

� � &�(�� 01 ��� ������� 1�������� � 1����� ������� �� �� �;�� � �� ���������8 ���8 3$?.���� �� �� ���� ����� ��11�� �� �����6�������� � ��� �"���1�� ��� �� � "��� � ������ �� �� �;� ����� �11��7�������� �" ������������ �� � � .���� 01 ��� �������� � � �11��7������� ��� � ���� ���� � &�(�� 01 ��� �������8 �� � ��� 1���� �����1������ �" � � ����� 6������� � B�7� �� !������� ����������� � � ������� �11��7�������� ��� ���� ����

��

Page 35: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

whilesources inplaying list

Yes

Update Listener

Update Source

Get next Source

source ischanged

Yes

No

Shift frameparameters

Copy frameparameters

Updates the listenersposition and frame

parameters, if necessary.

Get next source from thepriority list.

Shifts values of Next- andPrevious-structures.

Updates the current source.Makes both frame

parameters identical, sincesource has not been

changed.

Return ToA3D_Execute

Move all sourcesfrom muted to

playing list.

Moves all sources in themuted list into the playing

list.

.����� ���C � � ;���� � ��� � � >�� �" .���� 01 ��� $������� �"��� �1 ������ � �������8 � � .���� 01 ��� ������� ������ �1 ����� ������� �� 6�� ���� �� 1����� ����8 �" ����������

�'

Page 36: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Range Detectiondecides if source

is "active"

Is active?

CalculateDistance

Yes

No

HRTF Preparation

Calculate distance tolistener.

If calculated distance issmaller than maximum

distance in distance vector,the source is active.

Calculatenecessary angles

Calculate gain

Move to "muted"list if necessary

Update positionparameters

Calculates Azimuth,elevation and angle betweenlistener and current source.

Calculates distance andangular gain.

Calculates LTD, ITD andHRTF-index.

Copies current positionparameters into Next-frame

structure.

Return To FrameUpdate

.����� ��'C � � ;���� � ��� � � >�� �" � � ������ 01 ��� !���� ���� � �������� ���� �� � � ���� ��� �� �6�� �� ��� ������ �" � � ������� �� � � �������� ������� � �� � � ������ ���� �� � � ������� ������� �" � ������ �� ������82���8 +��8 ��� �� 3$?.���� ����� ��� ������� �� ����� �� � � B�7�����������

�,

Page 37: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� � #������ ��������� �� ���� 6���C

DivisionGain =32767

max@steps

Current = ((current@step · Next) +((max@steps − current@step) · Previous))·DivisionGain

B��� � �� ��������2��� �� ��� ���1��� ���� �� � � �������=����� 1���� ����" � � �� �� �� ������� � ��� ��� ��� ��� ���1� �� � � 6�(�� �1 ��� ��������� ��� ��� �� �� ���� ���1� ��� 6��� �7����� �� "���

� � ���� ���: �" � � &�(�� 01 ��� ������� �� �� �� �"� � � �������� ���?1�� �" � 1����� ������� ����� � � 1��������� �� � ��� ���1������ #������ �����?����� � � &�(�� 01 ��� ������� ��� ���������� � ���1�� ���1�� ���� ��������� ������ 6�(��8 ��7��� � 1����� ��������

�.�.�.� '�1 � *���� ����� +��6

� �� ������ �������� �� � ��� �� ;���� ��,� � ��� �" ���1�� 4�� ����5 ���;��� �� �;� 6� � � �11��7����� ����� ��1�� ��� �� � � ������� ��������� � � ������� �� � � ���� "��� � � ������ �� � � �������8 � � ���1�� ����� � �� �� �� %������� � � 6��: �" ��11�� �� ���8 ��?���1�� � � ���1���� �"���� � � 1��� �1�� ��� �" � � ������ �� ������ ����� � �� ���� "���� � ������� �� ������� � � ��������� ���� ���� 4���5� �� � �� ����� � ������� ���� � ���� �� 6��� ��1����� ���� � ��� � �����8 ��� � �����4�"��� ��� �5 ��� 6��� ������ �� �6���� � � ��� �(��� �� ��� ���� � ������ ������ "�� � � �����6�������� � � ��7� 1��������� ���1 �� �� �11� � � 3$?.���� ����� �� � � �"� �� $�� � � �����8 ������� � � ���1�� �� � �� � ����1�� �� �71������� �� �7����� � � �������F� �� � !���� ���� � �� � � � �� � ���� �� ��� 6��� ����� 6� � � ��11�� �(���8 �� ��� ��� ������� ����� �;������� ��� 6� ����8 ��� �� � � 3$?.����� � �� 1���� ��� �� �� �"�� ����� ������8 ����������� � � �� �;� �"� �� ��� � � ����� ���� � ���� ���� ��7� 6�(�� �� � � � �� � ���� ���� � �����6������� 6�(��� �"���� ������� ��� 6��� 1������� 8 � � �����6������� �� ��7� ���� �"� �� ��� �6�(���� 0���� � �9�8 � ������ ����� �� ������ � �� ��� 6� 1��� ����� ����1�;�� �� ������ �1��:����

��

Page 38: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

+ +

+Reverb

++

gain

Doppler ITD

HRTFsrc n

src 2

src 1

Doppler

HRTF

HRTF

Doppler ITD

Doppler ITD

gain

gain

.����� ��,C �� ������ �������� �" � � 6�(�� �1 ��� �������� � � ��������� ��� � �� � ��� ��� 6� � ���6�� �" ���� ������� 1�� ����� ���1�� �� ������ � ����� �� 6� 1������� �� ��� ����� � � ;��� �� 1��"���� �� ��� �� "����� ������8 � ��� � � ����� �� ���� ���� ��11�� �� ��� �� 6��� �11�� 8� ����"��� ��� � � ����� �(�� 6������ ��� � �� �"� � ���� �� � � 3$�. ��6� �11�� �� 6�� � �����8 � � ����� �� � �� 6� ��7� ��� � � ��� ������"��� � �������� � � �� �� 1��������� �" � � ����� �� 6� ;��� �11���� ��11���� � ����"��� �� ��7 � � ������ "��� � �������8 �� �� �11� �����6��������

frame update

buffer update

update calls

.����� ���C � �� ;���� ��������� � � �7������� �" � � "����? �� 6�(�� �1 ������������ ����� ���� �� �1 ��� �� �� � ����8 � 6�(�� �1 ��� �� �7����� �� � "���� �1 ��� ��� ��� ��� �� 6� �7����� ����� �1 ��� ��� � � �1 ���"��%����� �" � � "���� �1 ��� �� ��� ��� � � �!� �� � � �������=����� 1 ����

��

Page 39: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Set clock speed

create in and outbuffers

create and initialize world

create, initialize sourcesand introduce sources to

world

whilecontinueto render

call Buffer Update

destroy all sources

destroy in and out buffers

destroy world

create and initializelistener

.����� ���C *��� "������� >��� � � ���� "�������� ������ >�� �� ;��� �������� �� �������=� ������ ��� ��� � 8 � �� �� �7����� � � ����� ��� ������� � ����"��� �� ���� �1�

����� ���� �$$�������

� � ���� "������� �� �� ��� �� ������ �� ������ ��� 8 ������� �� ���������� ��� �� �� �7������� ��18 ��� ;���� ���� � ���6�� �" �������=����� "���?����� �� �� ��������� �� ������� �" �����6�� �� ����� �� ����� �7��������� � �������=����� �" )�� ��� ���� �" � ��8 ��� ;���� ����

�� 6� �6� �� ��� � ��� 1������ >��8 �� �� ��1������ �� ��� ��� �������������� *��� �" � � ��� ���������� �1�� � �� ��� �� ��8 ���� � ��������� ��� �7��� ��� ��� � ��� 8 ��� ��� � �������� � � ���������� "�� +�������8������8 ����� ��� 6��� ������ �� ��� � ��� � �� � �� ��>��� � � 1 ������������ �� "�� �� ��� � � +��� ���������� �� :��1 ����: �" ������� ��� 6��������� �� ��:� �� �� ���� �� "��� �� 1����6� �� 1���� �� �� ������=� � ������� �" � ��:��� ��� � � $����6������� ���������� ��� ������� �� ��� ���� �� � ��� ��� � 6� ���� ������ ������ � �� �� ��� "�� � � ������ ;� 8� ��� ������=� � � ������ �" ��1���� ��� � � ��� ;���� ��-�

�.�.�.� ���9:����

���@)�� �� � � ����� ��������� ���������� ������ ��� ����� �� �������8������������ �� ��������� � �� ��������� �� 6������ � � ��� � ��� � �� �������� � �� 6� ��� �" � � ��������� �� � ��� ����� "��������� �� �� 1����6� ��� 8 � ���� �� ������ �������8 ������� �� ����������� �� � � ��� �

• $����6������� �� � � ��������� ���������� ������ ��� ����� �� �����6���?����� �� �������� � ���1� 6�(�� "�� � � �����1 �� ���� ;������ � ��

��

Page 40: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Init HRTF

Init listener

Init source structures

Load HRTF

Load ITD

.����� ���C ���� )�� >��� ) �� �������=��� � � ��� 8 ������ ��� �������� �� � � ��� �� ��� 6� �������=� �

����� �� ��� ��� � �� �� 1����6��

; $����6����&�(�� �� � � ��������� ���������� ��� ��������� �� ���?��� � � �����6������� ��� �(���� � � $����6����&�(�� �� �1������ �� � � ������ �6<��� �� � � ������� ���+��� � �� ���������" �� �� �" ��1� $����6����B� ��

; $����6����&�(�� �� � � ��������� ���������� � � ..� ����� �" � ���1�� ���� �� :��1� :���� �� �6��� � � ����� �" � � ..� ������� � � ������ �" ��� ����� �

; $����6&�(�� �� � � ��������� ���������� ��? �� ���? ��� 6�(�������� �� � ;��� �� � ��� 1������8 �� � � ���� ���1� ��:� ���8 �� ��� � � � � ���6�� �" ���1�� ������ �

; $����6&�(��B� � �� � � ��������� ���������� � � ����� ���1�� "����? �� ���? ��� 6�(������ �� �������� � ����� �(��� �� � �� �� ��1����6� �� <��� �������� � � ��: �" � � ����

; .����3 �� � � ��������� ���������� � � ..� ����� �" � � ;���� �� � ��� ������ � �� �� ��� � �� �11���� � � �����6��������

• 3$�. �� � � ��������� ���������� � � �1���;� �� � 3$.�8 1������� ���1���;� �������� ��� �� � � ;���� �� � � ;��� �� ���

• .�������� �� � � ��������� ���������� ����������� �" � � ��� �

• ������� �� � � ��������� ���������� ���6�� �" ������� ����� ���� �� � ���� �� � � ��������

; ������+��� �������� � � !�������� � �� �� � ��:� ��� ��� 1�����?����8 � � *��� 9!���� 9�����6� ��� � �� ��� ���1� ��:� �����

• +������� �� � � ��������� ���������� � ��"�������� �6��� � � �������8 ����1�������8 � �� 3$. �� ���8 �� ���������

• ����� �� � � ��������� ���������� ����������� �1���;� ��"���������

• ���������� �� � � ��������� ���������� � ��"�������� �6��� � ������8 ����1�������8 �����8 ��1� �" ������ �� � ��� �� ��� ��� "����

�-

Page 41: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

• ������&�(�� �� � � ��������� ���������� ��� ��� �� ��� ����� ���� "���� �������

• ������$�� ��!���� �� � � ��������� ���������� 1��������� ��� �� ���? ����� ���� "��� � �������

• #��������������� �� � � ��������� ���������� ���: 6�(��� ��� "�� ��� 1����� ������ �� &�(�� 01 ����

• ��������������� �� � � ��������� ���������� ��1 ��"�������� "�� � �1�?��;� ������ ��� �� ����� 1����8 ���1 1���� �� ���6�� �" ����� �� ��1�

����� &��� �

� ���6�� �" ���1� 6�(��� ��� ��� �� � � 1������8 � ��� ��� 6�� 6�(��� � ����� ���1����� �� 6�(��� � �� ��� 1���������� &�(��� ��� ��� �� 6� �6� �� <����������� � ��� � ��: �" � ���� 6��:8 �� 6� �6� �� �������� � ���� � ��: "������ 6��:�8 �� �������� ��� �� �� 1������ �� �� �� ����� ��� ���� 6������&�(�� 01 �����

�.�.�.� '�1 � *����

*��� �" � � 6�(�� 1��������� ��:�� 1��� �� � � &�(�� 01 ��� "�������� ������ � 6����� �������� �" � � ��� >��8 � � &�(�� 01 ��� �� 6� ���1�;� 8�� � �� +�� 4��11��58 ���8 3$�. �� ���� 6��:� ��� ������� ���� � ������&�(�� 01 ���� � � ��� >�� 6������ 6�(��� �� � ��� �� ;���� ���/ �� � � �7������� >�� �� � ��� �� ;���� ��,� � � ������ &�(�� 01 ��� �����6��� ��� � � 6�(��� �" � ������ ��� �� �;� � � � ������ &�(�� 01 ��� ������ 6����������� Li ���1�� ���� �� ��1�� ������ 6�(��� � � ���6�� �" ���1��8 Li8 �1�� � �� � � ��� �� +�� ������

� � ��1�� ������ 6�(�� �� �� �;� 6� ������� �� ������ ���� �� ������ � ��?���1� "������� 4+��9��11�� 6��:5� B����� � �� � �� 6��: �� ���?����� �����8 �� � � ��11�� 6��: 6�"��� $����6������� �� �� $����1� �� � ���11�� 4+�� �� ���5 6��:8 �� ;���� ���/� � � ��1�� 6�(�� �� �����1� "��� � 6�(�� ���� � �� � ����� ����� ������ &�(�� 01 ���8 ���� � ;7 6�(������ � � � ��1�� 6�(�� �� ��� �1�� ���� � ��� � ����� 4� ��� 6�(���5� � ���� �� ��� �11�� �� � � ;��� ��� � �����8 �� ������ � � ��� 6������ �"��� ��� � ���� � � ���1�� �� � ��� ��� � ����� ��� �����"���� 6� � � 3$�.;��� �� ����� �� � � ���1�� 6�(�� �" � � �������

� � � �� � ���� � �� �� ������ 6� � � �����1� "������� �� ��� 6� � �$����6������� ��������� 6��:� � � $����6������� ��������� 6��: ������?���� � � � �� � ���� �" � 1����� ������� ���� � ��� 6�(��� � � ��������� 6�(�� �� ���� �� � � $����6������� 6��:� �� � � $����6������� 6��: � � ��?������� 6�(�� �� 6� ����� �� � � $����6������� ��?6�(��8 "��� � ��� �� ��1����6� �� �������� ����� 6��:� �" ���� �� ��� �� � � �����6������� ��?6�(���������� ���� � �� �� �%�� �� Li ���1��8 Li ���1�� �� 6� �������� 8 =���1� � �� "��%����� �����"���� ��� ..�� � � ����� �" � � ..� �� ���� ��� � ��� 6�(��8 � ��� Nd ��� 6��:� �� ����� 8 � ��� 6��:� ��� ;���� 8 ���?����=� �� � �� ���� �����"���� ��� ������� .��� .������ �����"��� 4�..�5�� � ����� �" � � �..� �� � �� ����� �� � � �����6������� ���?6�(��8 "��� � ����� �� 1����6� �� �������� 6��:� �" ����� ���� �

'/

Page 42: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

SourceBuffer

LastSamplesCh1

EndSubSample

WeightStep

ResampleOffset

LastSamplesCh2

BeginSubSample

WeightMax

AzimuthWeightMax

StartSampleEndSampleSampleSkip

MaxEndSampleIndexRoundErrorNumberOfSamples

ResampleBufferRoundErrorLength

Gamma

WeightStart

EleveationWeightMax

NormLTD

SourceRenderParam

MutedIsToTheRight

PositionFrontGain

DistanceGainAngularGain

LTD

ITD

HRTF

Scene

DistanceMeterVector

DistanceVectorLengthDistanceGainVector

ListenerPrevious

NextCurrent

FrontUp

NormOfPositionChanged

Position

ProjectionLeftSQRTProjectionUpSQRT

FrameData

UpOrtogonal

ProjectionFrontSQRTLeftOrtogonal

SourcesSourceList

MaxSourcesAllowedNumberPlayingSources

ReverberationReverbDelayBuffer

ReverbOutBufferReverbInBuffer

FilterHLastSamples

ReverbSamples

MaxNodesReverbAccumulateLength

HRTF

HRFLeft

OrderHRFRight

Constants

SamplingRate

DivisionGainBuffersperFrame

ListnerRenderParam

Position

UpFront

UpOrtogonalLeftOrtogonal

SourceTimeEvent

StartSamplePoint

StartLoopPointEndSamplePoint

EndLoopPointNrOfLoops

CommonSourceData

OutBufferSamples

OutLength

SamplesCh1SamplesCh2SamplesCh3

SampleLength

SoundData

RandomAccessAllowedLoopAllowed

ChacheCodedDataAllowedMaxBlockSizeSamplingRate

SoundType

Data

Pitch

SourceFlags

ActivePaused

MutedLoop

DopplerContinous

ReverbBufferNodeNext

StartOffsetSamples

Length

ListNodeNext

NumberSource

TotalNumber

ReverbBufferFirst

NumberOfCollectedSamples

Last

ReverbDelayBufferNewest

MaxNumberOfNodesNumberOfNodes

GetBuffer

SamplesStart

SamplesLength

SamplesStop

PriorityLinkdedListTails

NumberFirst

TotalNumber

ListListHeadListTailCurrent

SourceListPlaying

PausedMuted

Dissabled

ReverbDelayNodeNext

NormFFTValues

Length

SourceData

SoundData

Flags

AngularDegreeVector

Previous

NextCurrent

Changed

FrontPosition

AngularGainVector

AngularGainVectorLength

PriorityIdentityVolume

SourceTypeRenderMode

SamplingRateTimeScalingFactor

PitchShiftFactor

HRTFCh1HRTFCh2

OldBufferTimeEvent

CommonData

World

Constants

ListenerScenes

SourcesFrameData

HRTF

MixedSamples

ReverberationITD

Example structurePointer to structure instancePointer to structure instance

ArrayInteger variable

Array

Integer variable

FilterH

NormLeftNormRightFFTRightFFTLeft

.����� ��-C ����� ��������� ������� ��� ��� ���� ��� 6������ �������������6��=�� � ���%�� ��������� �� � � ���� ��� � ������8 �� �7��1� ���������8� ����� � � � ��� �(����� 1���� �" � ���������8 ��� ��1����� 6� � ��� ����

'�

Page 43: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

.���� � � ���1�� 6�(��� "��� � ������� �� � � ���?6�(�� "��� � � $�?���6������� 6��: ��� ��7� ���� ��� � ����� 4�"� �� ��� � � ����5�

�.�.�.� '�1 �� � �< '�1 � *����

�� 1������ ��1�� ���1�� "��� �������8 � � 6�(�� �1 ��� "������� ��� � ������� ���1�� "��� � ������8 �� 1��"��� �����1�8 3�� $���� .���� 43$.58�����6������� �� �� ��7 � � ���1��� � �� ����� � �� � � 6�(�� �1 ��� ��� �;�� ���1����� 6�(���� ��� �" � ��� 6�(��� ��� ������ "�� � �������C

• ��7� ���1�� �" ���� 2 · Lo �� ����� ��7� ���1���

• ��1��� �" ���� 2 · Lo �� ����� �����6��������

�� � � �� �� � ��� ��� ��� ������C

• ���1�� �" ���� Lb + Lm + 1 �� ����� ��? ��� "��� ���&�(���

• ���1��?� �8�8� ��� �" ���� Lo �� �� � ����� "��� �����1��

• ���6�(�� �" ���� 2 · Lo �� �� � ����� "��� 3$. �����"����

�.�.�.� ,�$+

�� 6� �6� �� 1��"��� 3$. � � ��� Lh − 1 ���1�� ��� ���� �� ���� 8 �� ��� ��7� ���� �

�.�.�.� � �����

����� � � ��� ������ � ���1� �(��� 6������ � � � �����8 ��� ���� �" ���?1�� ���� 6� ���� 8 �� �� �� �� �� 1��"��� ���� �����1������8 � ��� �� ��� ���� �� "��� �� ���� Lm + 1 ���1���

�.�.�.� � � �& �����

�� �� �� �� ��� � � ������� ��1�� ���� 8 ��1�� ��� �� � � �����6������� ����������� "�� � ������� �� � � 6��: �� 6�(��� � �� �� �� �� ��� � � ����������1�� ���� 8 ���? ��� 6��:� ��� 6�(��� �� ����� �� ����� � ��:� ���6� ��� � ��� ..� �����"�������� �" � � ��: �" ��1�� 6��: ����� 2 · Lf + 2..� ���1��� �� �..� �����"��������� �" � � 2 · Lf + 2 �� ����� �� Lf

���1�� ���1��� ��� �� � �� Lf �� ��� �� ���8 Nd ���1�� � ��:� "��� ..������"��������� ��� ���� 8 �� �� �� �� ��� � � �����6������� ��� �(���8 ������� � ��� ����

Lf ·Nd

Sr����� ��

'�

Page 44: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��� ��&���������� �����

� �� ������� �����6�� �� � � �(����� 1���� �" � � �� �� �� ������ ��� ��?1������ � � 1��� �" � � ��� �7����� ������� �� �71���� 8 "���� 6� ���1���������� �����1���� �� 6�� .���� 01 ��� �� &�(�� 01 ��� ���������&�"��� ��� ��� � �� �������8 ��� ��� ��� �������� � �� ��� �� �� ������ � � ������ >�� �" ��� �7����� ���� �� ��� ������� ����

����� !����

�� �� �� �� �� � �(����� ���� ������ ������ ��� ��� �7������� ��� �" >����� � ��:��� �" >���� � � ���� ������� �� 6� ������� ���� �(����� ����8 �1�� ��� �� � ��� ������8 ��� ;���� ����� ) �� � ���� ������ �� 6��������� �� �� ����� ��� �� � � ��� �� �� ������� ���� � � ���6� ����������� � ���� �������� �" � � ���� ��1� �" �� ��8 � �� ����� � �� �� �� � ��1 ������ � ������ "��� ��� ��� �� ���� ���

�.�.�.� !����� ���� � -��

� ���� ������ 1��� ��� �� � � 1����� ������� ���� �� 6� �1 ��� 6� � ���� ���� �� � � ���1�� "��� � � ������ �� 6� ������ 8 1���� �� ���?1���� � �" � ���� ������ � �� �1 ��� �� "��� �� 6� ��� �" �����8 � � �������� 6� ���� �� � � ���� ������� ���� � � ��� �� ������=� 6� 1���������8� ��� ��� , �(����� ���� �" 1���������8 � �� ����� � �� � �� � � ��� �� 1���� 6� � � ��� ���� �� � � #!0 ���� �����6� �� ��8 � ��� �� � 1����6���� �� ���1�������� �� 1������ ���1�� �� � �1���;� 1�������8 � ��� � ������� �� ���6� �1 ��� �� � 1����� ������� ��� �� ������ �� � ���1� ��:� ���8 1��������� ��� �� ���� 6� ����� 1������� 1������� 1���� �� � � ��� ������ �" ��� 1�������� ) �� ������� �� ������� 8 �� �� 6� ������� ��� �� � � ������1�� ��� 1������� 1��� �"� � ���� ) �� � � ��� � � 6� 1���� 6� ���� � � ��� ��8 �� �� ��� �� � � ���������� �� � ����� ���1� ��:� ���8 � ��� � ��� ��� 1����6������ �� � ��: "��� � �� �" � �1���;� 1�������� �" �� ������ �" � �1���;� 1������� �7����8 � �1������� 1������ �� 6� B0++�

�.�.�.� (�� � ���� � -��

� ���� ������ 1��� ��� �� � � ���� ������� ���� �� 6� �1 ��� 6� � ���� ���� �� � � ���1�� "��� � � ������ �� 6� �:�11� � � � ������� ��� ��� � ���� ���8 �� 6� � ��:� "�� � ����� � �� � �� ���� � � ������ �� � �1����� ����

�.�.�.� !��� � ���� � -��

������� �� � � 1���� ��� �� ��� 6� �1 ��� 6� � � ��� ��8 �� ���� � � ������6��: �� � � 1����� ��� �� �!� �� ���� 6� �� �� � � ������� �� � � 1���� ��� �� ������ � � ��"�������� ��� ������� 6� � � ��� ���

'�

Page 45: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Buffer Update

Get activesources

Source BufferUpdate

Reverberation

Mix sources outdata and

reverberationout data

Out data

Reverberation

Get accumulatedreberb samples

Send to reverbin buffer

IFFT

FFT

Source Buffer UpdateRetrieve Li samples

Gain

Doppler

Get Lf samples &zero pad with Lf

samples

Send toreverb out

buffer

Donothing

Data flow

Control and data flowControl flow

Send toDelay Buffer

true

Delayflter 0

Delayflter n

Delayflter n -1

Out data

Delay filtering

Calculatesources params

HRTF filter

Lh - 1 oldsamples

Lo new samples

save the last Lh -1 samplesof the Lo new samples

Reverb Accumulate

srcxLo samples

accumulatedLo samples

accumulatedLo samples

false

If reverb buffercontains more

then Lfsamples

Reverb In Buffer

Lf

Lf

Lf

LfStart offset Lo newsamples

Lo newsamples

Lo newsamples

Start offset

Start offset

Delay Buffer

2Lf + 2 FFTvalues

Newest0

1

n

Oldest

2Lf + 2 FFTvalues

2Lf + 2 FFTvalues

Reverb Out Buffer

Lo

Start offset

Lf new samples

Start offset

Lf new samples

Start offset

Lf new samples

Start offset Lf new samples

Doppler (LTD) & ITD

save last ITD + Lm + 1 samplesfrom in data

Resamplelast ITD +

Lm + 1samples

In dataLi samples

Out data: Lo samples

.����� ���/C � ��� ��� � ��� ��<�� 6��:� �� � �� ;����C &�(�� 01 ���8 ������&�(�� 01 ��� �� $����6�������� &�(�� 01 ��� �� � � ���� >�� �� ���6�� ������ &�(�� 01 ��� �� $����6�������� ������ &�(�� 01 ��� ���� ��� ���������� � �� �� �;�� � � ���1�� �" � ������ ���� ���8 ��11��8 2����� 3$�.� ���1�� "��� � ������� ��� �� �;� 6� ��11�� �� 2��� �� � �� ��������� ���� � ��1����� �����6������� ��1�� � ����� �"��� �11����� � $����6�������8 � �������? �� �����6������� � ����� ��� ��7� ����� ������ ��� � ������

''

Page 46: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Changed on render level

playing

muted

����

���� ��������

�0

1

2

3

4

first

playing (not muted)

paused

���

dissabled sources

������

Changed on application level(i.e. game machine)

prioritypointers

.����� ����C � ����� ����� �" � � ������ ��� ����������� �� � � 1����� ��� �� ��1����6� �� ��� � � ����� � ��� �" � � 1������� 1�������� � �� ��� ��� �� 1������ � � ��� ������ �" � �1���;� 1��������

',

Page 47: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

.����� ����C �������� �� �=���� ������ � � �������� ���� ����� � ���������"�������� �6��� � � ������� 1������� �" � ���� ������� � � ������� �71���?����� � � ���� ������ "��� �6���8 �� "���� �� 6��� ��� � � �=���� ��������� � ������� ��"�������� �6��� � � ���=���� 1������� �" � ���� ������� � �������� �71�������� � � ���� ������ �� ��� �������� �" � � ���=���� 1������� ��/ ������ ����� ��� � � ����� ��1������� � ������� �������� �� � ���� ������ 4� � ����5�

�.�.�.� ���&� � ���� � -��

� ���� ������ 1��� �� � � ���6� ������� ��� �� 6� ����� ���6� 8 ������ �1 ���� �� � � ��� �� �� �(��� � � ������� *������ � �� � ������ ��� �� �������� ��� 6� 1��� �� � � ���� 1�������� �� ���� � � ������ ��� � ���� ��� �� �!� �� ���� 6� ���� � � ������� �� � � ���6� ��� �� ��� � ������� ������ �" ������ ������ 8 ���� ��� � � ���� �����;������"�������� �� 6� ����� �

����� '���� ���� �����������

� � �� �� �� ���������� ���������� ��� ������ �� � ��� �� ��?���1 ���8 �����6�� ���� �" ���������� ��:� 1��� �� � ��?��� � ������ �" ��� 1�����9������������ ���1 ��� �6<����8 �� �� �� �� ��� �� ����8 �������� "�� ���� �������� �� �� �� � ���� ����� ��� 1�� ��� 6� ���� �������� ��1�� ��� �� � �1�������� �" � � ���� ������� � ������� ��� �71������� ���� � ������ "��� �(����� ���������� � � ���� ���������� ����� �� ��� �����C ��������� ������� �!�� �� �����8 ��� ;���� ����� ) �� � � ������� �� ���� ��� ������ � �18� � �������� ���� ������ � ���� ������F� 1������� �� � � ������� 1��� �� � � �=���� ���� � � ���� ������F� 1������� �� � � ���=���� 1���� ����� ��8� ��� ��� ����� �1���;�� � � �������� �" ������ �" � � ���� ������

� ��� ��� ������ ���1�7 ���������� �� 6� �� � �� �� �� �� ������� �?������� �� �=���� ������ � ��� ���������� ���� � ��1���� �" ������ ���� ?������ �� ��� ��� �� � � .���� 01 ��� �������8 ���� �� ���� ������������� ��� � �� � � &�(�� 01 ���� ) �� � ���� ������ �� ������ ��� � � �!�8������ 1��������� ��� ���� ���� �" � � 1��������� ��� ��� �� ������ � � ���� ������� .�� ��������8 � "���� ������ �� ��� � ����� � ���� ������ ��� 1�� ������� �� ������ ���������� � � ������� �� � ���� ���1�7 ������� �1���"��� � "���� ������8 � ������� ���� ��� �� �1 ������ ���6��� � � ������� ����� ��� �� � �� �� �� ��� �8 � � "���� ������ �������� ��1������� � ��� � 1��?���F� ���� �� 1������� �� �� � � �1 ������ ��1������� � � �������� ��� "��� �1�����F� ������ !���� ��"�� �� ;���� ���� "�� �� �����������

'�

Page 48: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Front Vector Front Vector

Front VectorUp Vector

.����� ����C ����������� ��� �������� � �� ;���� ��������� ��� ������� 4�����5�� ��� ������� 4�����5� � � ;��� ������ �� 6� �� � � ������� 1�� ����� ���� ��� � ���� � � �������� ���:� � � �� �� ���� ������ �� �� � � �������� �"�81�� ����� ���� ��� � ���� � � �������� �"� ����

Up Front

Front

Left_orthonormal

Up

Front

Left_orthonormal

Up_orthonormal

.����� ���'C ��� �������=��� �������� � � ����� 1�� ��� �" ��� ������� 1��? ���� � � �� ������ � �� �� 1��1�� ����� �� � � ;��� ��� �������� � �� ������=� �� ������ � � ������� ��� ��������� �� � ���������� � � ;���� ��� � �"� ��������� � � � ��� 1���������� ������� �18 �"� �� "����� � � ;���� ��� � �� � � ��� ��� ��������� �� � � ;���� �� � � ��� � � ��� � ����������

0�"���������8 � ��� �� �� ��������� � �� � � �������F� �1 �� "���� ���������� 1��1�� ����� �� ��� �� ��� �" � � ������� ��� ��� ������8 ����� 6������� ������ �� � � ������� ��� 6� ������� 6� ����� ���1� ������������� � �"���� ������ "�������� �� � �������� 1����8 ����� �� �� ������� 6� � � �� �� �������� "��� ������ 1���������� ��1��� "��� � � �!�� � � ����� 1�� ��� � ����8 �;��� � ��� ������ ��� ��������� ��� ����� �� 6�� "���� �� �1 ���?����� � � ����� 1�� ��� �" ������� ��� �� ��� ���������8 ������ �� � � ������ � ��������� � �� �� ��� ����� �� 6�� "���� �� �"� ��� ����� �������� � ������ 1�� ��� ���������� ��� � ��� 6��� �� �������� �� ;���� ���'�

LeftOrtogonal = Listener→Up× Listener→Front

UpOrtogonal = Listener→Front × LeftOrtogonal

) �� � � ��� ������� ��� ��� �����8 1��<������� �" � � ������� ��� ��?����� �� ��%���� � � ������� 1����1���� �" � � �� �� ������ � �� �� �������������� � � ������� ��� 6� �1�� � ���8 �������� �� 1�� �1� ������ �� �� �

'�

Page 49: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Projection Front

Projection Left

Projection Up

Azimuth angle

Elevation angle

.����� ���,C !��<������ �" �������� � � ;���� � ��� � � �(����� 1��<��������" � � �������� � ��� 1��<������� "��������� � � ���������� ����������� � ������ �������� �� �=���� ��� ������� 6� "������ ��� � ���� ����������� � � ������� �� �������� 1���� �� 1��<������� �� ��� �� �� ���� 6�� �� ���" � ������� ��� :���8 � � ���� �� ������� ����� � � ������������� "������������

� � 1��<������ 1����� ��� ������� 6� ����� � � ����� 1�� ��� 6������ ���������� �� ������=��� � � ������� 1���� ��� ��� �" � � ��� �������� � ��������F� 1��<������� ��� � ��� 6��� �� �������� �� ;���� ���,�

ProjectionFront =DistanceToSource · Listener→Front

||DistanceToSource · Listener→Front||

ProjectionUp =DistanceToSource · UpOrtogonal

||DistanceToSource · UpOrtogonal||

ProjectionLeft =DistanceToSource · LeftOrtogonal

||DistanceToSource · LeftOrtogonal||���������������� �� � � ������� ������� "��� � � ������� �� � � ������ ����C

DistanceToSource = SoundSource→Position− Listener→Position

� � ������� 1��<������� ��� ��� �� ���1��� � � �=���� �� ������������� �� � ���� ������� B��� � �� � � 1��<������� "����8 �1 �� �"� ��� ���������� �� ��� �������� !��<������ �"� �� !��<������ "���� ��� ��� �� "��� ���� � ���� ������� 4��"�� �� ;���� ���,5 �� ��:�� �� 1����6� �� ������� � ��=���� ���� 6� ����� � � �������������� "������� ����� �������� +�:�����81��<������ �1 �� 1��<������ �"� ��� ��� ��� �� "��� � ��� � ���� �������� �� ����� � � �������� ����� � � �=���� �� �������� ����� ��� ���1��� ����� � � "������ �� �C

NormHorizontal =√

ProjectionFront2 + ProjectionLeft2

AzimuthAngle = arctan2(ProjectionLeft, ProjectionFront)ElevationAngle = arctan2(ProjectionUp, NormHorizontal)

'�

Page 50: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0

90

180

Source's Front Vector

.����� ����C ������ ����� � � ������ ���� �" � �� ������ �� ��� �� / �� ', ������� � �� ������ 1�� ���� ���� -/ ������ �� � � "���� ��������� +������������� � � �� ����� �� ��� ��� ���� ������ "��� � �� �������

B���3���=���� �� � � ������� "��� � � ������� �� � � !��<������+�"� 4��"���� ;���� ���,5�

� � �=���� ���� ��� ����� �� � �������� ���� ���� � ���� �" ?�/ ������ �"�'/ ������� �" � � �=���� ���� �� ��� � �� =���8 ��/ ������ ��� � � 8 ������ � �� �� �� ������ ��� �� �� 1������� �=���� ������ � � �������� ������� ���� "��� ?-/ �� -/ ������8 � ��� / ������ ����� � ��� �� �� ���������� � ��11���� ������ �" � � �=���� �� �������� ����� ��� �;�� 6� � �3$�.?;��� ���6����

����� ������ '���

������ ���� �� ��� �� ������ � � �1��� ��� �" � ������F� ���� ������ ��?1�������� � �� :�� �" ���� ���� � ���� ������ �� ��� ���� ����� "��������� ������ � � ������ ���� ���� �� �;������ �" � ������F� ���1�� ��� � ����� �" / �� ��/ ������8 ����������� ����� � � ������F� "���� ������8��� ;���� ����� 0��:� � � ������� � ������ ��� ��� ��� �� �1 ������ � �� ��:�� � � ������ ���� ����������� .�� ��������8 �" � ������ �� �� �;� ����� ���� ��� 6������ / �� �/ ������8 �� �� ��� 1�� ��� ���� "�����/ �� �,/ ������� � � ���������� ��� ��� � �� � � ��� �(����� �1 ������������� "���� �1 ��� �� 6�(�� �1 ���� �� �7��� ��������� �" � � ���������� �� ��� �� � � "���� �1 ���8 � �� � ����� �11��7������� �" � � B�7� �� !������� "���� �1 ��� ����� �� ��� �� � � 6�(�� �1 ����

�.�.�.� +��� *���� %����������

� � "���� �1 ��� ���������� ���� ��� ������� ��� ��� �� ��" �� ��� #�� ���� ��"� � ��� ������� �����6� � � �1��� ��� � ������������� �" � ���������6� ��� ��������� �� � ��� ������� ��� ��: �:��

� � "���� �1 ��� ���������� �������� �� ���1����� � � ���� 6������ � �������� �� � ���� ������ ��� � � ����� �� � � ������ ������� .�� ��������8�" � � �������?������ ���� �� -/ ������ ���� "��� � � ������F� "���� ������8����� � � ������� � ��� �� ��6� ��� ��� ���� � � ������� ���� �" /�,� �� ��� � ������� ���� ����������8 � � ������ ������� �1���"� ��� ������� ������� ����� �����1������ �� ��� �� ���� � � � 1��6��� .�� �7��1�8 �" � �

'-

Page 51: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C ������? �� ������ ����? ������� � � ��6� � ��� �� � ����������� 4�"� �����5 �� ������ ���� ����� 4��� � �����5 ��� ��: �:�� )�� � ��� ��� �" �����8 � � ������� ��� 1������� � � ���� ������ "��� � �� ���� ������ �� ���:��8 �� � � ���� "��� � � ������F� "���� ������ �� � � ����������������� � � ������ ������ ���� ����� 6� ���������� ��� � ��7���� �����" ��/ ������� � � ������ ���� ����� ���� ����� 6� ���������8 6�� ��� ��� ��� �� ���� =�������� ���������

2���

', ��/-/ /�,��, /��,��/ /�/

�������?������ ���� �� �� ������8 ����� ��6� ���8 � � ��� ������ ����� ��� 6� ', ������ ��� � ���� �" ��/ �� -/ ������ ��� � ���� �" /�,� � ����������1������ �" � ��� ����� ��� ���� � ���� �" �6��� /��,� � � ������������ "�� �����1������ ��C

AngularGain =(AngleToListener − angle1) · gain2 + (angle2− AngleToListener) · gain1

angle2 − angle1

�����$�%� ���� �� � � ����8 �� ������8 6������ � � ������� �� � ������������� �� �����& ��� � � ������ ����� �� � � ���� ������ �� � ��Cangle1 < AngleToListener <= angle28 � ��� ����� �� �� ���� �� 1����6� �� ����� �� �� ��� �� 1����6���" � � ������ ���� ������ ��� ��� ���� =���8 � � ��� �;�� ���� �� ��� �1�� ��/ �������

�.�.�.� '�1 � *���� %����������

�� �� � � ������� ���� ����������8 � � ��� ������ ���� ��������� �� � �6�(�� �1 ��� �� � ����� �����1������ 6������ � � 1������� ������ ���� �� � ���7� ������ ����� ����� � ��� ��� � :���� ���6�� �" ���1� 6������ !��������� B�7� ��� ����������8 �� �� ���� ���1� �� ������� � � �11��7����� ������� ������ ����� � � ����� �����1������ 6������ � � ������� B�7�?�� !�������? "����� �� �����6� �� ������� ������

����� �������� ��� �������� ����

�������� ���� �� � � ��������� �" � � ���� ����� �" � ������ �1�� ��� �� � � ������� 6������ � ������ �� � � �������� � � ������� ���� ��������� ��� �(����� ������������ �� �6���6 �(����� ������ �" ���� ������ �1�� ����� � � ������� 6������ � ���� ������ �� � �������� � ������� �71��������� ���� ���:�� � � "��� �� � � ���� �� "��� ��� � ���� ���� � �� ����?�� � ���� ��� ����� ������ �� ��� ������� ����8 ��������� � � ���� ����F���1��� �� ��1�� ��� ��8 "�� �������� ���� �� ��� ������ �� ������������

,/

Page 52: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� �������������8 � � ���� ���� �� � � ���� ������� ��� ���� �� �� �� ���:���� � � ���� ��������

� � ������� ���� ���������� ��� ��� � �� � � ��� �(����� �1 ������������� "���� �1 ��� �� 6�(�� �1 ���� �� �7��� ��������� �" � � ����������� �� ��� �� � � "���� �1 ���8 � �� � ����� �11��7������� �� ��� �� � �6�(�� �1 ����

�.�.�.� +��� ����� �����������

� � ������� ���� �� 6��� �� � � � � ������� 6������ � ������ �� � � ��������� � ������� 6������ � ������ �� � � ������� �� � 6�� 1��6������ �� ��������� � 6�� �1� �" � � 1������� ������� �" � �� �6<����8 �� ��?6��� �� �������� ������� �� �� �1��� 6������ ��� �6<���� � � "������ ���������� ��� 6���� C

distance = ||obj1 − obj2||

� 1������� ������� ��� ��?6��8 ���� (obj1− > x − obj2− > x)2 ��%����� ��?6���� ) �� � ����� ��� � � ����� ��8 �� 6�"��� �%���� ����8 � � �������" 6��� ��%���� ��� �'?6���� .����8 � � �%���� ���� "������� ������� � ��?6�� ����� � � 1��6�� ��� � �� ��������� �� � � ��7���� 6��� ��%���� C�'?6���� � � ��! 4#,,75 �� � '/?6��� ���������� �� ������ �� � �'6���� � � ����� ��� 6� ���������� �� '/ 6���� ����� � � ������ 1��"��� "��� �� � ���� �� � #,,78 � �� ��������� ��� ��� "����6�� � � ������� �� � ��1��6�� ��� �� :��1 ����� ���� (obj1− > x − obj2− > x)2 �� �/?6���� � ����� �����1�� � 6� ��� ��� � � ��������� ���� �(����� ���1�� .���� ���1��� �� ������� (obj1− > x − obj2− > x)8 (obj1− > y − obj2− > y) �� (obj1− > z − obj2− > z) �� ������� � � ���� �� � ��?6�� �������� �� �����8 ���� �� � � "��� mantissa · 2norm� � � �������� �� ���� ���� � ��?6�������� �� � � ������ ���� ��� ��� �� � ������� �� � � ������8 ������ � �6��� 1����6� �������� �� � � ��� ��������

���������� � ������ �� � ���� �� �� ��� ���������� ����� � �������� ���� � !�� ������ ����"

�������#�� �� �� $#�%�� �$���� �� �� ��� ��������#�� � ������� �����"

&���' � �" ' �� (" '��)

����� �#$��� #�� � ���� �� � �� ��� ���������� ����'� � �������� ���'� � !�� ������ ���'�"

��� ��� �� $#�%�� �$���� �� �� ��� ����&�#��������#�� * #���������� ����'������#�� � ������� ����'�"

+

����� $#�%�� �$���� %���� �� ��#$$�� �����,���-&!�� ������������� �� � ����.$������#��"

��� ��� �� �#� ���# �#$��� �� � # �/��� ��� ���&���' � " ' �� (" '��!�� ������������� ���'� � !.��$�������� ����'�0 ,���-&!�� ������������� �� � �/"

� � ��?6�� �������� ����� ��� ����� �� � � +�������������K����� �� � ����� �� ����� ���� B����"+�������������K������ � � ��7� ���1 �� �� �������

,�

Page 53: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C ��������? �� ������� ����? ������� � � ��6� � ��� �� � �������������4�"� �����5 �� ������� ���� ������4��� � �����5 ��� ��: �:�� ��� �� 1�������� �� �� �� �����8 � � ��1��� � �" � ���� ���� ������ ����������"��� , ������� ) �� � � ������� 6������ � � ������� �� � ���� ������ ���// ������8 � � ��1��� � �" � ���� ���� ������ "��� � �� ������ ��� 6���� �9' �" ��� ������� ����� �" � � �������?������ ������� �� ������� �� �%���� �// ������8 � � ���� ����� �" � �� ���� ������ �� ��� ���� � � ���������������� ��������

2���

, ��/,/ /�,�// /��,�// /���// /

(ListenerSourceV ector[0])2+(ListenerSourceV ector[1])2+(ListenerSourceV ector[2])2������ � � +�������������K����� �� ��?6��8 � � 6�� �1� �" � �� ��������� �� �'?6��� � � ������� �� � � 1��6�� �� 1������� 6���C

��1�����$# � �#$��� ��&��� �2�#�� ��� 0 '�����% �����#�� #� ���� �������#�� � �!�� ������������� ���(�3!�� ������������� ���(���"�����#�� 4� �!�� ������������� �����3!�� ������������� �������"�����#�� 4� �!�� ������������� ����3!�� ������������� ������"

&� � �"���� ��� � � 1�� ��� �" � � ������ 6� � ���1�8 � � ��� ���� �����"?����� 6���� ��� �������� �� � �/?6�� ���� �� �� ���� � � � �������� ���1?����� �����6� �� ������� � ��?6�� ���� �� � � �� �" � � �� �� � � +�����?��������K����� �������� �������� ����� ��� � � ���� ����� �� 1������� � �������� ���� �� � � ���1K���� �� � � �� �" � � �� �8 � ���� "�� ���1K�������� 6� ������ �� � ;�� ���1 ��� �� ������� � � �%���� ����� � � �%���� ���� "������� ���� ���?6�� ���� �� ������ � ��?6�� ����� � �� 1���� ��� ���������� � �� � � 6�� �1� ����� �7��� � ��?6����� 6� ������� � �� � � 1�������� ��� ��L�����8 � ���� ��� �� � ���1����� � � ������� �� � �� ��1���������� �� � >������ 1���� ������� �������� � � ������������ �� �� �6<��� ������ ���� �� ��� ���<������8 �/// ������ �� � �� �/������ �� ��� �� � � ������� ����� ���� ���� �� ;� �� 1���� �� *���6�� � ��7���� �(������ ��� /�� ������ �� � � ������� �" ,// �������

�������� ���� ���������� ���� ��� ������� ��� C ������� ������ �� ��?����� ���� ������� � ��� ������� �����6� � � ������������ � ������������� �� ���� 9���� �� ��� �������� �� � �1���;� �� �� �� ������ ) �� � � �� ��? �� ������ � ����� � �����8 ��� �������? �� ������� ����? ������� ��� �� � ���6� ��� ��������� �� � ��� ������� ��� ��: �:��

� � "���� �1 ��� ���������� ��� ������ �� � � ������ ���� ������������ � ������ ���� ���������� ��� �����6� �� ������� ������

,�

Page 54: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Lh - 1 old stored samples

last Lh - 1 of N samples

Lo new samples

1st span2nd span

3rd span

Lhth span

Lh + 2th spanLh + 1th span

Lh + 3th span4th span

.����� ����C �11���� 3$�. .�$ ;���� .����� � ��� �� � � ;��� �� �11�� �� �� � � ���1�� "��� ��� ��� �� ��� �

�.�.�.� '�1 � ����� �����������

� � ��� ������� ���� ��������� �� � � 6�(�� �1 ��� �� � ����� �����1������6������ � � 1������� ������� ���� �� � � ��7� ������� ����� ����� � ��� ��� �:���� ���6�� �" ���1� 6������ !������� �� B�7� ��� ����������8 �� �� ���1��� ������� � � �11��7����� ������� ������� ����� � � ����� �����1������6������ � � ������� B�7�? �� !�������? "����� �� �����6� �� ������� ������

����( )��� %������ � ����� "������ *)%�"+

3$�. � � ��� ��%�� ��� �� ��:� � � ���� �11��� �7������ � � ���� ��1������� �� 6� ;���� 6� � ;��� "�� �"� ��� �� � ;��� "�� ��� � ���8 ��������� ������ ���1��� � � ;��� ����� ��� 6��� ����� �� ��� � ��� � �� � ����������� � � �6����� ��� "�� ��� �" � � 3$�.?;����8 ���� � Lh ;��� ��1��������=� 8 � � ��� �� ����� 1����6� �� ����� ��� E��,� ����� � � 3$�.� ������� �� �����"�� "�������� � �� �� 6� ��1������ �� .�$ ;���� �" ���� Lh��� �� �� �� ;��� � ���1� Q8 Lh − 1 1������� ���1�� �" Q ���� �7���8 ��� ���� �� � � � ���� � ��� �� � ��� �� :��1 ����: �" Lh − 1 1������� ���1�� 1��� ���� 4�"� �� ��� �5 2 · (Lh − 1) ���1�� 1�� ������� ��� ;���� �����

�.�.�.� ,�$+ +�� � -���

� � ;��� �� 1��� ��� ����� �� � � X − (Lh − 1)C� ���1� �� ��� �� ��� � X C� ���1�� ��� ���1� 6������ � � X − (Lh − 1)C� ���1� �� X C� ���1� ��� ����1�� ��� � � ;��� ��1 ���� ������1�� ��� �� � � 1������� ��� � ;���� �� � ��� ����� ��� ��������� �� �� 6� � � ��� ���1� ����"�� X � ��� ;���� �����

Ch1@samplei =Lh∑

k=0

hrfilterLeft[i − k] · samplesch1[k]

Ch2@samplei =Lh∑

k=0

hrfilterRight[i − k] · samplesch2[k]

�.�.�.� +��� *���� %����������

� � ������� 3$�. ��� �� ��� �� ������� � ���� '?1���� �����1��������" � ���� �� ��� � "�� � 1����8 x8 �� � � ���� "�� � �� 1���� �� ��� �� � � ������� ���8 �� �� 1����6� �� ��� � ��� 1����� ������� ��� x �� �� �� �� ���

,�

Page 55: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

low left

high left

low right

high right

azimuth weight lowazimuth

weight high

elevation weight low

elevation weight high

low highweight low weight high

A.

B.

.����� ����C � �� ;���� ��������� ��� :�� �" �����1������ ��� �� � �� � ������� �?1���� �����1������8 &� '?1���� �����1�������

�� �11��7������� �" � � ����� � �� �� ��� �����1������8 ��� 6���� ��1�� �"�����1������ ��� ��� N �?1���� �����1������ 4� ��� � � ��:���� 1���� �� ��� � ���� ��� �� � � 1����� ������� ���5 �� '?1���� �����1������ 4� ��� � ���:���� 1���� �� �� � � ���� 1��� �� � � ������� ��� 1�����58 ��� ;���� ������ � "��� ������� ������� 1����� �" x ��� "��� 8 4�11�� �"�8 �11�� ��� �8 �����"�8 ���� ��� �5 �� ��� ���� �� ����� ��� � � ���� � ��� �� � � "�������1��� �" � � 1���� x� � � ���� "�� x �� ������� 6� �?1���� �����1������ ;����" � � ���=���� ����� 4���� �11�� �"� �� �11�� ��� � �� ���� �"� �� ������� �58 � �� ����� ��� ������� ����� � �� ��� ������� 6� �?1���� �����1������4���� � � �11�� ���� �� ���� �� ��� � � ���� ����5 ������ � � �����1���� �������� ���� � ��� "���� �1 ��� �� ���8 � � 1������� ���1 3$�. �� ��� �� � ������ 3$�.�

�.�.�.� '�1 � *���� %����������

� �� �� ��� 6� �?1���� �����1������8 6������ � � ����� 3$�. �� � � ���13$�.8 ���� �� �1�� ��� �� � � ���6�� �" 6�(��� 1������� ����� ��� "�����1 ���� � � ��� ������� ������� 1����� �" x ��� "��� 4���� �11�� �� ������ �"� �� ��� �58 � ��� ����� ��� ���� �� ����� �� ����� � � "������� 1����" � � x �� ���� � 4� � ���� � ��� ��� ��� 6� � ������� "��� � 1���� �� ��� ���1�����5� � � "������� 1��� �" x �� ����� f 8 ��� ������� 1������������ ��� xN p1 �� p28 � � ���� �" p �� ����� v(p)�

v(x) = v(p1) · f + v(p2) · (1 − f). 4���5

.�$ ;��� "��%����� ���1���� �� �������� 6� � ��� �" ���L������ 4;�����1�5� � � 1��1��� �" � � ���L������ �� �� ���� � � ����� ������� 6� ����� �"���1� ���� ������ �� �� �� ��8 � � 3�� $���� �����"�� .�������43$�.5

,'

Page 56: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

V'S

V'L

VL

VS

Listener

SourcePS - PL

.����� ���-C � � ��������� �" � � �������4V ′L5 �� � ������4V ′

S5 ��� 1��<���� �� VL �� VS �� � � ���� 1��� �� � � ������� ������� �������

���� � ��� �" ;��� ��1� �� �����"��� �������� ���1�� �� � �� � �� ��� �71���?���� �� ������ "��� � ������� ���� �� ���������

����, !������� ���� ����- *!��+ ��� �$$��

+�� �� ��� 6� � � �� �� �� ������ �� ������ ��11�� �(���� � � +�� �� ��������8 � �� �� � � 9��6������ �� �6���� ���� �� ����� ���1�� "��� � ���������� � � ��1�� 6�(��� ���1��� � � ���6�� �" ���1�� �6����� 8 � �����1���"������� �����1�� � � ��1�� 6�(�� ���� Lo ���1��� �" ���� � �� Lo ���1����� 1������ �� � � ��1�� 6�(��8 � �� ��� ���1� ��� �� Lo� � �� �� 6��71������� �� � �� �� 1��� � +�:�����8 � �� ��� � �� Lo ���1�� ��� 1�������� � � ��1�� 6�(��8 � �� ��� ���1� �1 �� Lo8 � �� ������ � � ��1��������" � ���� 1��� � � � +�� �� ������� ��� "���� �� �����1���� ��� 6�(��� � � ���������� ��� �� � �� ��1���������� ��� ������� ������� � ����� ��� 6� � ���� ��� � � �!�� � �� �11���� ���� ��� ���1�������� ���1�7���� ��8 "�� �������� ����� 1���������� ������� �� ������� ������� ������� � �� ������ �� ���1��� � � +�� ����� � � ��1���������� �����6� 6��� �� � ������ ��1���������� �" � � +�� ����������� ��� �� 1��6��� �����6� ��������� '���� � � ;��� ��1���������� �" � � +�� ���������� ��� ��1��� 6�� � ����� ���� � � ;��� ��1���������� �� �����6� �� ������� ���

�.�..� -$� �� +��� '���

� � +�� �� ������� �� ����� "����8 � � ���� �1�� � �� � � ������� ��� � ������ �� � � �1�� �" ���� �� � � �� ��� � �� � � ������ �� ���������� ����� ��� .�� ��� "���� � ��� ���� �� ������� �� � � � �� ����6������ � � 1������� ����8 ������ ��7�? �� 1������� +�� ������ � � +������������ �������� �" 1��<������ � � ������� �" � ������ �� � � ������� ���� � ������� 1���������� ������� � � ���������� ��� �����6� 6��� �� �������� �� ;���� ���-�

,,

Page 57: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

P1

P2

4m

3.4m

7.4m

A

P3

4m

3.4m7.4m

P4

B

.����� ���/C ��11�� �� ��� �(���� 4��7���� ���� ��������58 ��� ��?6� ��'

� � �������� ���������� �� ������� ����'8 ���1��� � � ������� ������ PS −PL8 � � ������� 6������ � ������ �� � � �������� � � ������� ������� ��� ���� � �!�8 V ′

L �� V ′S 8 ��� 1��<���� �� � � ������� ������� � � �������� �����

��������� ���C VL �� VS ���1�������� � � ��11�� "����� �� ������� 6� ��� ��� � � ���������� ����� 6� VL �� VS �� � � �1�� �" ���� 8 �8 �� � ���6���C

Doppler@Factor =c − VL

c + VS4���5

�� ��� � � ��11�� "����� �� � �� �� �� �� ��1����������8 �� ���� 6��������� ���� ���1��� &� ����1���� � � ��11�� "����� ��� � � ���6�� �"���1�� �� � � 6�(��8 ������ �� � � ���6�� �" ���1�� ��� � �� ������ � ���11�� �(����

�.�..� -$� �� '�1 � '���

.�� ��� 6�(�� � ������� ���� �� ������� 8 � � ��7� �� 1������� ����� ���"�� ��� 6�(�� ���� �� ����� �� � ���� �?1���� �����1������ � ��� �� ���?���� �������

����. /��� �� �� ���� ���� ���� */��+

� � ��� �� ��� �� "��� ��8 ���6��� ��� � � 3$�.8 �� ���� � � �71��������" ��������� ���� � � � ��� �� � � ���� �(������ 6������ ������ �� � � ������ � ��� �� ��1������ �� � ���1� ��� 6������ � � ��� � ����� �� ����

,�

Page 58: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ��'C *�7���� 1����6� � ���� �� +�� �� ��� ��� ����� �� �1�� �" ���� �� ��� �� ����� � �/�� 6�(�� 4'�/ ���1�� ���5� ��6� � �� &������1�� � �� � �� & �� ;���� ���/� � � ����� LTD∆ �� ITD∆ � ����� ��6� � �� & �� � � ���6�� �" ���1�� � �� ���� 6� �������� �� �� �� ��1��"��� �������� 6������ 1���� P1 �� P2 "�� ��6� � �� ���1������� P3 ��P4 "�� ��6� &�

�LTDp1 ,/- ITDp1 /LTDp2 -�� ITDp2 /LTD∆ ?'�- ITD∆ /LTD∆ P ITD∆ ?'�-

&LTDp3 ,/- ITDp3 ���,LTDp4 -�� ITDp4 ���,LTD∆ ?'�- ITD∆ ���,LTD∆ P ITD∆ ?'�/�,

�.�.".� �$� �� +��� '���

� � ��� ���� �� ������� ��� '?1���� �����1������8 �� �����6� �� ����,����� ���: � �� � � ��� �� �� � � �"� �� �" � ������� � � ��� ���� �� ����1�� 6� ?�8 � �� � � ���� �� �������� �� � � �"� �� �" � ������� �� 1������� ��� � ��� � �� � � � ��� ���� �� ����� �� E?�� �� �� �� �� ��� ��� ������������� ���� � ��� "���� �1 ��� �� ���8 � � 1������� ���1 ��� �� ��� �� � ������ ����

�.�.".� �$� �� '�1 � '���

� � ������� ��� �� ������� � ���� �?1���� �����1������8 6������ � � �������� �� � � ���1 ���8 ���� �� �1�� ��� �� � � ���6�� �" 6�(��� 1������� �

�.�.".� �$�∆

���∆ �� � � �(������ 6������ � � ��� �11�� ��� �� � � ��� ������� ���8 ���� ���∆ ��� �7���� �� ���������� �11�� "�� ��� 6�(��� � � ���� �"���∆ �� �(��� � � ���6�� �" ���1�� � �� ��� ��� � � ) �� � ���� ����������� ����� � 1���� �� � � �� ������ �� "���� �" � � �������8 � � ��� �� �������� � �� �� ����� � � ���∆ �� ��� ��������8 � �� ��:��� � � ��� 6�?����� �"� �� ��� � � ���� ������ 3���� "���� ���1�� � �� �� � � 1�������6�(�� ��� ��� � � � � �11�����8 � �� � ���� ������ ����� ���� "��� � 1������ � � �� ������ �� "���� �" � � �������8 � � ��� �� ��������� � �� �� ������ � ���∆ �� ��� 1�������8 � �� ��:��� � � ��� 6������ �"� �� ��� � � ���������� *��� ���1�� � �� �� � � 1������� 6�(�� ��� ��� � � �" � � ���� �������� 1��� �� � � �� ������ �� "���� �" � � �������8 � � ���1� ��� 6�������"� �� ��� � � ���� �� =���8 � �� 6�� ���∆� ��� =���� � � ���∆ 6� ������� �������� �� ;���� �����

��1�� ��� �� � � ���� �" ��� "�� � � ��� "���� 4ITD058 � � ���� �� ����� �� ��� �� ���∆0 �� ���∆1� � � ��� "�� � � ������� "���� �� ������� �� ��8 �1�� ��� �" � � ���� 4ITD158 ��� �� ��6������ �� � � �� ITD∆0 ���1��?����� ITD∆18 � ��� �� ��6� ��,�

,�

Page 59: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

ITD increase

ITDdecrease

deltaITD

0 negative

deltaITD1 positive

.����� ����C ��� ��������� ������ � �� �� ��� �� ���∆ ��� �(���� 6� ������� �������� �" � ������� ) �� � ������ ����� "��� � 1���� ��� ��� "���� �" � ������� ����� � ��� �" � � �� ��8 � � ��� �� �������� �� � �������1�� ��� ���∆ "�� � �� �� � �� 6� 1�������� ) �� � ������ ����� "������ �" � � �� �� ����� � � 1���� �� "���� �� 6� �� �" � � ������� � � ��� �� ������� �� � � ������1�� ��� ���∆ �� 6� ���������

��6� ��,C ��� ���������� �� � � �(���� �� ITD∆� ) �� ���1����� � ���� ��� �� � � ��� ���8 � � �(���� �� ���∆0 �� ���∆1 �� 6� �(����� �1�� ��� �� � � ����� �" � � ��� ��� �� � � ��� ���� � � ���� �" ��� � ����� � �� �� � �" � � �� � � ������ �� ����� � ���������� �� 6� ����� CG�� ���1�;������ �� 6� ����� G�

��� �ITD1 < 0 ITD1 > 0

!���

ITD0 < 0

ITD∆0 := 0

ITD∆1 := −ITD0

ITD∆0 :=

−ITD∆0 = 0

ITD∆1 :=

ITD1 − ITD∆1 =

ITD1 + ITD0

ITD∆0 :=

ITD1 − ITD∆0 = ITD1

ITD∆1 :=

−ITD∆1 = ITD0

ITD0 > 0

ITD∆0 := ITD0

ITD∆1 := 0

ITD∆0 :=

−ITD0

ITD∆1 :=

−ITD1 − ITD∆1 =

−ITD1 − 0 = −ITD1

ITD∆0 :=

ITD1 − ITD∆0 =

ITD1 − ITD0

ITD∆1 :=

−ITD∆1 = 0

,�

Page 60: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C *�7���� ���1 1�� 6�(�� �1 ��� �� ���� ��� �� � � ���� �" �1�� �"���� �� � � �����1� "������� � � ���� ���1 ��=� ��� �� ��� 6�(�� �1 ��� ������� � � � ��6� � ��� � � ���� �1�� ��� �� � � ��=� �" � � ��� 6�(�� ��� �� �� ���� � �� �!� '���� � ��� �� ( ��

, �� �'/ ���1�� ��� ��/ �� '�/ ���1�� ��' ��/ �� -�/ ���1�� ��� �,/ �� �'// ���1�� ���/ ��// �� '�// ���1�� �'�/ �

����0 /�$�� &��� )�������

��� �� +�� 4��11��5 � � ��7���� ���1 �� ��:� ��� �� � 6�(�� �1�� � �� � �6�(�� ��=� � ���� �� � � �� ��� 4� � �1�� �" ���� �� ��� �%�� �� �(������� ����5 � � ������� �� ���� ������ ��� ��� B����� � � �� ��� ��� �����8 ��7���� ���1 ��=� �� � ��� �� ��6� ����

�� � � 6�������� �" ��� 6�(�� �1 ��� � � ���� �� ������� �� � � �� ���1� 1������� �� �1 ��� "�� ��� � ����� #��������� �� ���6�� �" ��1�����1�� �� �� 1������� �� 1��"���� �� ��6���1�� �� �1�� � �� � � 6�(����=�8 � � ���∆ �� � � +��∆8 ���� � � ���6�� �" ���1�� ��� �(�� 6��������� � �� �"� � �����

���������� ���� ����� � ������ � �����������

���������������� ������������������ � �����������

�� � � �� �" ��� 6�(�� �1 ��� � � 6���� ���1� 1������� �� �1 ��� 8 � ���� 1��"���� 6� ��6�������� � � ���� �" � � ��� � ����� �� 1�������� "���6�� � ����� �� 1���������

������������������ ���������������� �

���������������������� ��������������� �!�

����1 ���� /��� $�����

����� � � ���1�� 6�(�� ��=�8 Lo8 �� �������� �� ��1�� ��� ��=�8 Li8 ��� ����� ��� �� � ��� �� ��:� � � Li ��=� ��1�� �" ��=� Lo8 � �� �� ��� 6� ���������1�������

&������ � � ��� ��%�� ������ � ��� �" ��=� Lo ��? ��� �� �11��� � ����� �1� ;��� �� � �� ���� � ��� ��� ��� ����� "�� �����1������N � � ��? ������� ��� 6� ����� � �� � � ���? ��� ���� �� � � ��? ��� ���� ��� 6������ � �� � � ���? ��� ���� � � � ;��� ���� �� ����� �1���1��� �� � ������ ���� ������1����

� �� ���� �����1������ �� ��� ��� � ���� ���� Lm 4���� Lm G �58 ���� "����� ���1� 1���� 2·Lm+1 ���1� ���������� �� 6� 1��"���� � � � γ �������6��=� � � ��9��� �������8 �� �� ��� �� �������� � �� �� �1���1��� ��� ������1��� � � 6� �11�� �

γ = Li/Lo. 4���5

,-

Page 61: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 700 8001

0.5

0

0.5

1

1.5

2

2.5

3

3.5x 10

4

-

-

Samples

000 64 128-128 256 320-320 -256 384-384 448-44-448-44-44-44

.����� ����C ���� "�������� � � ���� ��� "�� �����1� �� ���������8 ���� ��� �" �" � � ���� ��� � �� 6� ����� � � � ���?����� ���� � ��� � � 1��� �" � ����� � �� �� 6� ��� �� � ���� ��6� �� �������1� 6� 2Lm 8 � �� ����� � ��2Lm 8 2Lm+18 2Lm+18 ���8 ������1�� � �� �8 �8 �8 ���8 ������

�" γ �� ��� �� �%�� �� �8 �1���1��� �� 6� �11�� ��� ������1��� ��6� �11�� � ���� � �� � � �����1� "������� �� ��� � �� 1��� ;���8 �� �� ���� ���� �������� � � ���� ��6�� ��� �������� �� *���6 �� �����"���� ����;7� ?1���� ������ � � ���� �� ������ ��� 2Lm "������� ���1�� ����� � � ������ ��������� �� �� 1����6� �� <��� ����� � � ����� �" �" � � ���� �� �� �� ������ �1���8 ��� ;���� �����

�.�.#.� ��� 2 ��� +������

� � ��? ��� �� 6� 1���� ��� �� �� �7 � �� �� �1 ��� "�� ��� ���1�� ���1��� � �� �7 �� � ������� 1��� �� � "������� 1���� � � ������� 1��� �" � � �� �7�� � 1������ �� � ���1� �� � � ��1�� 6�(��� � � ���� ;��� �� 6� �11�� ��� �� ���1� �� � ����"��� �� Lm ? � 1������� ��? ��� ���1�� �� �� Lm ? �4"��� ������5 ��? ��� ���1��� � � ���� ;��� �� ������� 6� �� �7� ��� � �"������� 1���8 � � �� � ���1� �� 6� ����1�� ��� � � ������ ���� �����.�� ��� �" � � Lm ? � 1������� �� Lm ? � 4�����5 ��? ��� ���1��8 � � �� �7���� � � ���� ��6� �� 6� �������� �� ������� 6� γ−1 6�"��� �11�� �

� � ��? ��� ���1� ������ 6� �� �7 �� ���1� 6� ����1�� 6� � � �������� ������ 6� "�������� .�� � ��� 2 · (Lm − 1) ���1�� ������� ��� ���1��� �78 � � ����� �� 6� ����1�� 6� � � ������1�� ��� ���� �����8 ��� �%��?���� ��'� ����� <��� �" � � ���� �� ����� 8 � � "������� 1���� "�� � � 1����������1�� �� � � ����� ���1�� �� �(��� � �� ����� � �� �� �� ��������� �������"��� � � "������� �� �7 � �� � �� ��� 6��� ��� �� � � �������� �� � �"� � ���� �� � 1������� ����8 ���� � �� �����"�������� �� ���8 � � �������� "���?���� �� �7 ��� ��� 6� �������� "�� ��� ���1� � � "������� 1��� ��� �� �� �7� � 1������� �� � �" � � ���� �� ��� fractionu "�� fractionupper �� � � 1������ �� �� �7 � � �������� �� � �� ��� fractionl "�� fractionlower� �������fractionu = fraction �� fractionl = γ−1 − fraction�

�/

Page 62: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

samplesout[m] = samplesin[index] · sinc[fraction] +Lm∑

k=1

(samplesin[index − k] · sinc[fractionu + k · γ−1] +

samplesin[index + k] · sinc[fractionl + k · γ−1])4��'5

�.�.#.� -���

� ��� ��� 6�� �11�� �� ���� ���������� �" � � �����1� "�������� � ��11�� ���� �� ���� ����� � � ���1� ����8 ���� ���� ����� � � �1�� �" ���� �� �� ���������� ��� �� �� � � ������ � ��1������ 8 ����� � � ������ � ���� �����1���� �" � �� �� � � �� ���� � �� ����� �� ��� � �� �" �����1����� ���� � � �� � � �� �� ���� � � ����� ������ �" ���1�� �� � � ���������� 6� �������� �� � � ���� ����8 � � ��� �� ��1��� � � ���� ���1� ������ ���� �����8 ��� ����� � � %����� �� 6� ���� ���

�����2 %��� 3� ����

��1������ �� �� ��� ��� �����6������� �" ��1� "��%����� ����� ;����������� �����1 �� ����� � � �����6������� �� ��1������ �� 6� Nd ·Lf ���1����� 1�� � ���� ����

Nd · Lf

Srseconds 4��,5

� � �����6������� �� 1��"���� ��� ����1������� �" ���1�� �� ;��� �� � �"��%����� �����8 � � ����� �� � �� �������=� �� �"��� � ���1�� �� 1���� � � ����� �� �����"���� �� ���� �����8 ��� �����6������� �� ;���� ���/������ � � �����6������� ���:� ��� 2x ���� �� � � ��� �� ��� ���: ��� ���:�� �" ���� 8 � ��� �� � ��� �� 6�(�� ��1�� �� � � �����6������� "�������8�:����� � ��� �� � ��� �� 6�(�� ���1�� "��� � � �����6������� "�������8 ��� ��� �� ;���� �����

�.�.��.� '�1 ��

��� ������ �� ��� Lo ���1�� �� � � �����6������� ��������� "���������"��� � 1����� ������� �� 6��� 1���� 8 � � �����6������� �11� "������� ��6� ��� �

��1�� 6�(�� �� ������ �� � ���1� ��:� ���8 � ��� ��� �� � � � � ������(���8 ��� ;���� ����� �� � � 6�������� �" � � �����6������� �11� "�������8 � ���������� ���1�� �� 6� ���� �� � � ��1�� 6�(��� � � ���1�� �� 6������ �� � ��� �� �8 ��� ����� �(��� ��� �� =���� .�� ��� ���� �" ;������8Lf ���1�� �� 6� �������� "��� � � 6�(��� �" � �������� �� � ��� ���� ����1�� ��� �� � �� �� � � ����� �(��� �� 6� ��� �� � � ;��� ����� ���1������ � ���1�� �� � �� � �� 6��� �������� � � �� � �� ���� � ���1��6�(�� �� ������ �� � ���1� ��:� ���8 � ��� ��� �� � � � � ����� �(���8��� ;���� ����� �� � � �� �" �����6�11�8 Lf ��� ���1�� �� 6� ���� ��� �� 6�(��� �� � � �� �" � � 6�(�� �1 ��� "������� �� ��� 6� 1����6� ���������� Lo ���1�� �" Lo ≤ Lf �� � ��� ���� ����� ��� ���1�� "��� 1�������

��

Page 63: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

proccessn1 * Lf

samples

proccessn0 * Lf

samples

Output Buffernode

Lf samples

Input Buffer node 1Lo samples

startOffset

Input Buffer node 1Lo samples

startOffset

Input Buffer node 2Lo samples

startOffset

Input Buffer node 2Lo samples

startOffset

startOffset startOffset startOffset startOffset startOffset

After 2:nd reverberation run Lo output samples

1:st reverberation run 2:nd reverberation run

Output Buffernode

Lf samples

Output Buffernode

Lf samples

Output Buffernode

Lf samples

Output Buffernode

Lf samples

Total after 2:nd reverberation run (n0 + n1)Lf output samples

.����� ����C $����6������� 6�(�� ������ ��� ���� � � �����6������� �� �7�?���� 8 �� ��� �� 1����6� �" � � ��1�� ��� �� 6� 1������� � � ��� � ����� �� ��������� � �� � � ������ �" ��� 1������� �� 6� ����� �� ������ �� �� ���1�� 6��: �" ���� Lo� �� � � ���� � ��� �� ��� ����� ��� �� 1��? ��� �� ���1�� 6��:8 ���1�� �� 6� ���� ���� � � ������ �" ��� ��� � �� �����6��

�7�������� �" ��� � ���1�� �� � �� � �� ��� 8 � � ����� �(��� �� 6� � ���� �� � ��� 6�(�� �� ������ �� � ���1� ������� ��:� ���8 ��� 1������� ��� ��� �� ������ �� ��8 ��� ;���� ���/� ) �� ��������� � ��� ��� �" ..������8 �� � � ��� �� ��1��8 �� � � ���6�� �" �� �� �� ��� � �� � � ��7�������6�� �" �� ��8 � ��� �� �8 ���������� � � ..� ����� �� 6� ������ �� � � ������ 1������ �� 6� �1 ��� 8 �" � ��� ��� ��7���� ���6�� �" �� �� ��� � ���8 �� ������ �� ����� � � � ��� �� �F� ..� ����� �� 6� ���� �� � ���� ..� ����� �� 6� ����� �� � � � ��� �� �8 � � � ��� �� ������ 1��������� � ����"��� 6� �1 ��� � ������� �" �� �� �� � � ��� �� ��� ����� � ��� ������� ��� ���11� 1�� ����� ��� ���1���

�.�.��.� +�� ��

� � ;���� ��� �������� "��� � ��� ����� �� ��� �71�������� ���������8� ��� ��� Nf ;���� ����� 1�� � ����� � � ;���� ��� ���%�� "�� � � �"� �� ��� � ���� ) �� �������=��� � � ;���� � �� ��� =��� 1� � �� � ����"��� ..������"���� 8 � � ..� ����� �� � � ����� �� � �� ����� �

�.�.��.� ������� � � �& �����

) �� �11���� �����6�������8 � � ��������� ���1�� ��� ���� �� � � ��1��6�(��8 �� � ��� �� � "�� � ��� � � ���1�� �� ������ � � ����"��� �" 1����6�Lf ���1�� ��� �������� "��� � � ��1�� 6�(��8 � ��� ���1�� ��� � �� �������� =���?1� � ��� Lf ���1��� � � 2 · Lf ���1�� ������� �� 6� "��%����������"���� � ���� ..�8 � � ..� "������� �� ������ 4 ·Lf �����8 �" � �� 2 · Lf + 2 ��� � �� 6� ���� � � � �� �� �" �� ��� ��������� �� ���� ����� � ������ ��� ���1�7 ���<����� ������ ����� �" � � ���� �"� � ��� 2 · Lf + 2����� �� 6� ���� �� � � ��� 6�(���� �� �� �� � � ��� 6�(�� �� 6� ����1�� ��� � � ������1�� ��� ;���� � �;��� ����1������� �� ��� � ���� ��� 1����� ��� 1��� � �� �� ������� � �������=����� ����� 4 ��� ����� �����5 �" � � 1�� ���8 �� 6� �6� �� ��� �

��

Page 64: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

Delay Buffer Filters

Evaluate

FFT

CMULT_NORM

Filter (0..n)

norm (0..n)

Samples (0..n)

FFT

norm (0..n)

norm (0..n)

best norm

Apply

FFT

CMULT_CALC

Filter (0..n)

norm (0..n)

Samples (0..n)

FFT

norm (0..n)

norm (0..n)

Norm correction

Out dataaccumulation

.����� ���'C $����6������� ����� ��������� �� ���1��������� �� 6� �6��� 1��"��� � ��� ����� ���1�������� � � ����1������� �" ..� ����� ��1��"���� �� ��� ���1�8 � � ;��� ���1 �� 6� ��� �� ;� � �� ����� � ���� 6���8 � � ����� ���1 �� 1��"��� � � ����� ����1������� �� � ��� �"������1������ � � ������

������ ��� � � ���� ������ � ����"��� � � ����� ����1������� �� 1��"���� �� � � ������ ��� ����� ���1������ �� ��������� 8 ��� ;���� ���'�

� � ��������� ����� �� � ����"��� 6� �����"���� 6��: �� ���� ������ ���� �..�8 �������=� �� ���� �� � � ���1�� 6�(������ $����6�������1��� �" ;���� ���/�

�.�.��.� -&���� ��������

������ �6���� "�������� ��� �����6�� � ��� �" � ��� ���� ��� �� � � ��1�?��������� �" �����6�������N ..�8 �..� �� #*0+��

.��� .������ �����"��� 4..�5 �� ������� .��� .������ �����"��� 4�..�58��� �� �����"��� ���� ����� ���1�� ���� "��%����� ����� ���1�� �� "��%����� ����� ���1�� �� ���� ����� ���1��� &�� "�������� ��:�� ����������� � ������ �" ��1�� ���1�� �� � ������ �" ������ ���1��8 6�� "���?����� �� ������ � ������ #��1�7 ����1��� 4#*0+�58 �� ��� �� ����1����1�7 ���1� ������� �� ��������� � �� "������� ��:�� ��� ��1�� ������� �� � ������ ������8 �� �� ������ � ������ ����� � ���6�� �" 6��:� �" ..����1�� � � 6� ��������� 8 � ��� �� � ��� "�� � � ������ �" � ��� 6��:� ��6� � � ����� �� �� �� �� ����� � � 6��� ����� 4���� �� ���� �� ���� �������� ��1����6�58� � ����� ������� �" � � ���1�7 ����1������� ���� 6� ������� 8� � 6��� ����� ���� 6� � ���� �� � � 6��:� ��� ����� ��� �%�� �� � �6��� ����� ���� 6� � <���� � ) �� ��� ���� � � �� � "�� � � #*0+�8 �� ���"��� � �� � � #*0+� "������� ;��� ������� � � ����� ��� �� � 6��: �� � ��8 �"��� �������� � � 6��� ����� ������ 1��"���� � � ����1�������� � �#*0+� "������� ��� ����� 6� �1�� ���� ��� "��������� ��� "������� � ���������� � � ������8 �� ��� "������� � �� 1��"���� � � ����1�������� ��� �� ��� �� �� 1����6� �� ;��� "�� ��� 6��: ������� � � �����8 � �� "�� ��� 6��: 1��"��� � � ����1������� �� � <��� � � ����� �1�� ��� �� � � ��������� � � 1�������� ������� 6��� ������ �� � �� �� ��������� � � ������

�.�.��.�.� )����� ����������� ��� �" � � �6���� "�������� �� ������� �����8 6�� ��� � � � ������ ������� ��� 6� ��� ������ �� �������=�

��

Page 65: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� � ������ �� ��� "��� � �� 1��"������ ..� �" ��� ���1� �����8 ����1�� � ����� ��� #*0+� �� � �� 1��"��� �..�8 � �� � � ������ � "����� �?������=����� ��� ���������� �� 6� �6� �� ��� � 1������8 � ���6�� �" �(�������1�� ����� ��� ��� 8 �� ��� � �� "��� � �� �� �� �� �� ��� � ������� ����?���=����� � � ����� ������ "��� � � �..� ��� � �� 6� ���1������ ��� ?� 4���1�������� �1�� ��� �� � � ..� ���� � ����5 �� � � ����� ������"��� #*0+� ��� � �� 6� ���1������ ��� P�,�

�.�.��.� ������ ( ���� *���

� � ������ �" ������ ��� � "�� �����6������� �1�� � �� � � ���6�� �" ��� �� �� Nd8 � � ;��� ���� Lf 8 � � ���1�� ���� Lo �� � � ���6�� �"� ����� Nc� �� �� 1����6� �� ������� � � ������ �" ������ ��� � 4���� ���� � 6�(�� ������ �� ���� � 5�

• ��1�� &�(�� ? ��7���� ������ �" ������ �����C

Lo + Lo modLf 4���5

• ���1�� &�(�� ? ��7���� ������ �" ������ �����C

�(� (Lo/Lf )

�Lo/Lf�� · Lo)

Lf� · Lf 4���5

• ���� &�(�� ? ��7���� ������ �" ������ �����C

Nd · 2 · Lf 4���5

• .����� ..�� "�� � � ;���� ��� ����� ��������C

Nc · Nd · 2 · Lf 4��-5

• #��������� � � ������ �������� ��� �� � � �����6������� �11� "���?����

2 · 4 · Lf + 2 · Lf + 2 · Nd + (2 · Lf + 2) + 2 · (2 · Lf + 2) =

10 · Lf + 2 · Nd + 6 · Lf + 6 =

16 · Lf + 2 · Nd + 6 4���/5

• ���� ��7���� �������� ������ ������

Lo+Lo modLf +Lf ·(�(� (Lo/Lf )

�Lo/Lf�� · Lo)

Lf�·Lf +Nd ·2(1+Nc)+16)+2·Nd+6

4����5

������ �$$ 4������ � ���5 ���� ��� �6 �

�� :��1 ���1�7��� �� � �� ���8 � � "�������� ����8 ���� �� �%�� ��� ����������1���� � � ��� "�������� ��� ��� �� � � .����01 ��� 1���� ��� �� ��?����� �����8 1��<������� �� ��������� � � 6���� ������ � �� � � ���� �� �"��������� � � ����� "������� �� 1���� 8 �� "�� �������� *���68 �� � ����" ����� � �� ��� ����� �����1���� � � "������� ��� ���� �� � �������� ��6������ � � E�, "������ � � �������� ��6� ����� ��� ��� �� ����� �����1����� � "��������

�'

Page 66: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��� ��'��&����(������� ���������

���� "�������� �� �������� ��� �� � � ����1���� 1 ���8 ���� ������ ������ ������� "�������� �" � � �� �� �� ������8 �� �� 1�� ��� ���� ����� � �!#F� ���� ��� � � ��� "�������� ��� ��� ��� � �� ���� 6� �� �;� �� ;� ��� � ;�� ��1�����������

����� "��� ������7� �����

� � ���@;� 1��:��� �� � ��� �" "�������� �� ��� �� ����� ���1�� "���9��;��� � � ;�� ��1���������� �� ��� ��%���� ��� ;� ��� �� ����� ��������8����� �� �� �� 6� ���1� �� ���?���� "��� � ���?�� <��: �� � � ��! 1��"����� � ���1�� �� 6� ���� ��� � �9� ��������� �� �� 1 �����

����� &��� ���������

� � ���@���6�(�� �������8 ��%����� ���1�� "��� ;��� � � ���&�(�� "��������� 6� �� �;� �� ������ � � �������� ������ �" ���1�� "��� � � ���?�� <��:�� � � ��! 1��"����

����� 8������ %�����

� � ���@*������� "������� �� � ���� "������� � �� ����� � ������ �� � �1���;� ���<������ �1�� ��� �� ��?1���������� �� � � ;�� ��1����������8 � 1��������1 ���� ��� ��� ��� ��� � � �!��

����� ���� ������

�� ����������� ��� � � ���� ��� 8 �� �� �� ����� ��� 1����� �� ������ O�M� !��� �� �� �� �� �1��?������ �� �� �9� �6���� � �� ���:� �� �������1��"����� � �� ����� ��� ��� �� �� � � ����1��� 1 ��� �� � � !#� !����� �� ���� ������Q �� ����������� ��� � � !#F� ���� ��� �� ����� ���� �!��� �� �� ��� � ���� �� �� ���� ����� �� �� ��� ���1����� �� 6���� �1��������� �� � � ;�� ��1����������8 �� �� �� ����� �� ��� � ����� � � ��!�� ���1�� ���1�� ��� � �9� ��������� �� � ������ <��:� 3�� 1 ���� �� 6��������� �� � � ������ <��:8 1�� ����� � � �� �� �� �71��������

��! ���

� � �!� �� � ���� 6������ � � ��� ���� �� � � ���� �11�������� � � �!��������� �" � �������� �" ���� "��������8 ����� � �� 6� ��� �� � ���� ������8�������8 ����������� �� ��� ���� 1���������� *��� �!� "�������� �������� �"��� �� ���� ��� ���� "������� ���� � �� ����� � �� ������� ����� �� 6� ��� �� � � ���� �(������ �� ������� �������

����� ������ &��9� ���

� � ����� �" � � �!� "�� � � �� �� �� ������ ��� ���1��� 6� � � �!� "���?�������� �" J��� �� O�M� � � J��� �� 1��"��� �� �� �������� �� ����

�,

Page 67: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�" � � �!� ��� ���� "��� �����6�� � � ������Q �!� ��� ��� ����� ��� 6��J��� �� ��� "��� �� ��� ���� ���1�� ������ ����

����� �$���:������

� ��� �� � ��� "�� � ���6�� �" �(����� �!� "�������� �1�� ��� �� � ���6<��� � �� � � 6� �(���� � � ��� ��� "��� ����1� �" �!� "��������C ��� ����8�����������8 ������� �� �������

�.�.�.� ���� �!� +�������

�!� "������� ����� ��� ������ �������� �� 6� ������ � ������ �!� "��������� �� � � ;��� �������� ��:� � ������ � �������

• *���8 ��:�� �� �������� � ��� 1�������8 �� �� ��7� "���� �1 ���8 �1 ���� � ��7� 1������� �� � � ��� 1��������

• ���18 �� ��:� � � ������ ���1 ��� ��������8 ���� ���������� �� 1����� �� � � ���6� ����

• �����8 �� ���� � � ������ �� � � 1����� ���8 ����� � � ������ ���������� � � ���� �����������

• !����8 �� ���1 � � ������ ��������8 ���� ���������� �� 1��� �� ��� � 1���� ����

• K����8 ��:�� �� �������� � � ��� �����8 � � ����� �� 6� ���8 � �����" =��� �� ��:� � � ������ ���� �

• !�������8 ��:�� �� �������� � � ��� 1�������8 � � 1������� �� 6� � ���� �� �" ������ �� �� 1����� ��� ��������� �������� �� 6� ����

• ��11��8 ��:�� �� �������� � ��11�� "�����8 =��� �� ���6� ��11��8 ����� ��:� ��11�� ��������8 �� �� �� ���� ���� � �� ��� �� ��1 ���=��� ���1 ���=� � � ��11�� �(����

• ��1�8 ��:�� �� �������� � � ��1� 4���� ��������� �� ���������5

• +����������8 ��:�� ��� ������ �� ���������8 � � ������ ����� �� ��?���� ���� ������ � �� �� �� ���� � � ���� �������� ����� ��� �� � ��1���;� ������

• .�������8 ��:�� �� �������� �������� 4��� �11�� "�� ������� �" ����?����� ��1�58 �� �(��� �� � �� �������� ���� �� ��� �

�.�.�.� -�� � � �!� +�������

�!� "������� ����� ��� ������� �������� �� 6� ������

• *���8 ��:�� �� �������� � ��� 1�������8 �� �� ��7� "���� �1 ���8 �1 ���� � ��7� 1������� �� � � ��� 1��������

• .�������8 ��:�� �� �������� ��������8 �� �(��� �� � �� �������� � �������� �� "������

��

Page 68: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

• 01���8 ��:�� �� �������� ��������8 �� �(��� �� � �� ��� � � �������F� �� �� ���� �

• 3$.���8 ��:�� �� �������� � 3$. ��� � ����;������8 �� �� ��7� "�����1 ��� � ���� 3$. ;��� ��� ��� �

�.�.�.� =������ �� �!� +�������

�!� "������� ����� ��� ����������� 6� ������

• $����6�������8 ��:�� �� �������� ���� �" �����6������� ����� 8 � ���� �" =��� �� ���6� �����6��������

• ��������2���8 ��:�� �� �������� � ��� ������� ���� ������ �� ��� ����

�.�.�.� � �� � � �!� +�������

�!� "������� ����� ��� ��� ���� 6� ������

• K����8 ��:�� �� �������� � � ��� �����8 �� ��� � � ����� ������

• �������������8 ��:�� �� �������� � � ���6�� �" ������� ���� 8 �� ���� � ��7���� ���6�� �" ���� ��������

• #�����������8 ��:�� �� ��������� 1��������� ��� �� ����������� �������8��11��8 1�������8 K����8 ��� �� ������� � ������ � ����;�������

• �����������8 ��:�� �� �������� � ������ � ����;������8 �� ������ � ������� "��� ���� �� ���� � � �������

• .����!���� 8 ��:�� �� �������� � � ���6�� �" 6�(�� �1 ���� � �� � �� ����� 6�"��� �� "���� �1 ��� �� �7����� �

• #�����8 �� ������ � 6���� ��� �� ������������

• �������8 �� ���1 � ������� �� ���� �1 � �������8 ������� �� ����?��������

• !����8 �� 1���� � ��������

��$ �������

� � ������ �� �� �� ��1���������� ��� �����6� �� � �� � �1���� � � ;���������� �����6� � � >�� �" � � �� �� �� ��� ���� �� � � � � ������� ���������� � ����� � � ��1���������� 1����8 ���� � � ������ �� �" � � ������� 1���� �"� � �� �� �� ������8 ���� �����6� �� ������� ���� �� �� 1���� �" � � �� �� �������� � �� ���� �����6� �� � �� � �1��� ��� � � �!� �� ������� "���������

��

Page 69: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������

���� �� �������� ��

��������������

� �� � �1��� ���1���� � � �������� 6������ � � ;7� 1����? �� >������ 1������ �� �� ��1������������ &�� ������� �" �� �� �� ��� ��1������ ������ � ���� ���������8 "����������� �� >��� *���6 ��, ��� ��� �� ���1���� � :�� �����6�� �� � � ;7� 1���� �� >������ 1���� �������� �" � � �� ��K������ *���6 ����1�� ���� ������ �� �� �� �� ��:� � � ���1������ 6������� � ;7� 1���� �� >������ 1���� �������� �" � � �� � 1����6�� � � �������*���6 ����1�� ��� �����6� �� �11�� �7 &�

!�� %�)� &���� �� %������ &���� ��������

�� ������ � � �������� �" � � ;7� 1���� �� �8 *���6 ��� ��� �� ������ ����1���" ������ �������� �� 6�� � � ;7� 1���� �� � � >������ 1���� �� �� � �� ������ �� ���1��� :�� �����6�� ��� �� 6�� �������� �" � � �� �� � � ���� ���������� ������ � ���� ������ ����� � ������� �� � �1���;� ������������ ����� 6�� �������� ���� �� � �� 6� �� ������ �� 1����6�8 �����6�� �� ��� � � ��� 6����1��� �������� ����� � � �������� ���� ��� ��� � ���� "��� �(����� ���1�����1�8 ���� � *���6 ����1� � �� ������� � ;� ���������� �������=��� ���8 ����6��� ����� �����������8 ������ ��������8 ������� 1��������8 ���� �� ���1�8 � �;7� ? �� >������? 1���� �������� ��� ������ �� � � !#� &�� �������� ����� ��"�� � � ;� ������ 6� ���1� �� 6���� �������=������ � �� �� �� � �� � ��6�� �������� ��� �� � ������ ����� ������������ � � �11�������� ��������� ��� �7�������8 ������ ����� � ���� ������ �� ������� ������� 1������������� �� � ;�� ���1�8 �������� �" � ����� *���6 ����1� � �� �� � �� 1����� ���1���� � � 1�������� ����� "��� 6�� ��������� � � ��� ���18 ���1'8�� �� ����=� � � ��� ��� ��� 1���� 6� *���6 �� �� ������� 1��6��� �"���������� &�� "���� �1 ��� �� 6�(�� �1 ��� ���� ���1��� ����� � �� ������ �(����� ����1��� ������� � � "���� �1 ��� 6��: ��� ����� ;���8 ������ � 6�(�� �1 ��� 6��: ���� ����� � �� ��� ������� 6� � � "���� �1 ����

��

Page 70: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 1 2 3 4 5 6

x 104

0

0.2

0.4

0.6

0.8

1

1.2

1.4x 10

-4 Stored HRTF Error

Filter values

Diff

eren

ce in

am

plitu

de

.����� '��C 3$�. ����� �� ���6���� � �� ;���� ��������� � � �(������ 6�?����� ������� �� >������ 1���� ����� ����� �� � � 3$�. ���6����� � ���7���� ����� �� ��� � �� 1.4 · 10−4 4/�/�D58 � �� �� ����1��6��

����� " ��� #$���� ��$� ���

� � "���� �1 ��� 6��: �������� ����8 3$�.8 +�� �� ��� ������ � �������� ��� ��� �� 6���� "�� "��� �� ���������� �� � � 6�(�� �1 ��� 6��:� � ������ ��� ������� �� ;� �"��� ����� "���� �7������� �� 6�� �������� �" � ��� �� � � 6�(�� �1 ��� 6��: �� ������ �� � �� ����8 ����� � � ����� "��� � �"���� �1 ��� 6��: ��� ��� ������� �� ��� �� �;� �

�.�.�.� +�����

�� �71���� 8 ���� �" � � ����� ���� � ������ �� � � ;��� ���� � � �(��?����� ��� 6� �(����� ���� ��8 ����>��9�� ��>�� 1��6��� ��9�� �(�����"����������� 6������ � � �� ��� � � ���� �������6� 1��6�� ��� � � ���?1���� �(����� 3$�.?������ B� ����>�� ���� 1������ �� � � �������������� � ������� � � ��� �������6� �(������ ��� � � ����� �� � � ��������� >������ 1���� ���6����� � ��� ���6���� ��� ��"�������� � �� �� �� � �� ������� 3$�. �� ��� ������ � � ������� ���6���� ��� ����������� �"� � >������ 1���� ���6���� �� ����� �� � �%���� E?"������� � ���1���?��� �" ����� �� 6�� ���6���� ��� 1��"���� �� ���;��� � �� � � ������� ���6��� �������� ��������� ������ � ������� 3$�. ���6���� ���� ����? ����� ���������� ����� �� � �%���� E?"������ #��1����� � ������ �������3$�. ���6��� ��� � � ���1������ >������ 1���� ��� ���� �� ����1��6� ������" /�/�D� � � �(������ �� �������� �� � ��� �� ;���� '���

)�� � � ������� ��� �" 3$�. ����� �� � � ���6���8 � � ���� ��� ��� ������� � ����� ���� ���1��� ������ � � ��1 6������ � � ������� 3$�.?

�-

Page 71: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

;��� ����� �� 6�� �� �� 6����� ����� 6�� ��� �� ��� ��� ����1��6� 4������/D5� ������� 6��: ����������8 � 6�� ��� "��� � �� ��������� � � ���� ��"�� �=���� �� ��������� � � ���� ���� �� ��� ��� � �� �����1���� 3$�.?�� ��� ������

��������������� ������� ��� � �������������� � ������������������� !�"##$"%

�������������� �������������& � ���������������%

���'����������� ���'��� � ��� � �����'������ � ����������������(�� !�"##$"%

���'���������� ���'���������& � ���'�����������%

� � �=���� ���� �� ��� ����� � �� ���� "��� /�/ �� ��/� � � 6�� �� � � ����� � ����� ���� "��� �6��� /�� �� /�-� � � ����� "��� �� � �� ������������ �� ��������� ���� �" � � ��������� �=��@���� �@��7 �� ���@���� �@��7�� � 3$�. ;���� ��� ����� ��� �� ������� �" �, ������ ���� � � ;��� ��?��� ����� �� � � ���6��� ��1������ ����� �:� /8 �,8 �/8 ��� �� 6�� �=���� �� ��������� � � ��������� ���� �� �=��@���� �@��7 �� ���@���� �@��78������ � �� � � ������� �" � � 3$�. ;���� ��� �� ������ ������ �" �,� � �������� ����� "�� 6�� �=��@���� �@��7 �� ���@���� �@��7 �� �, ����� ��?��� � � E?� "����� ���� � � ���� -�/� &�� ��������� ��� �� 6� �� � �� � �E?� "����� ����� � � �=���� ? �� �������� ����� ��� �� � �� � � E?� "������

B�7� ���1 6�"��� ������� � � ���� ��� ���� ����8 ��� �� ����=� �� �� ��?�������� � �� ���� � � �=���� �� 9�� �������� ���� �� �� �� ���1������ "��� ��� ��� ����� �" ���������� � ��� ��� ���������� ���� "��� C ���8 3$�.+�"� �� $�� � � ���� �����������

5�6 7#$��$# ��� ��� �

� �����3$�8.$�& .� 3 #���.8��%� .$�8 4 ��3$�8.��%� .� 3 #���.8��%� .��%� �� / 3�$��.8��%� .$�8 4 �����3��%�.$�& .� 3 #���.8��%� .$�8 4 ��3��%�.��%� .� 3#���.8��%� .��%� �� / 3 �$��.8��%� .��%�

"

5�6 � ��� �� �/"

9:�; !�& 7�#���$ 7#$��$# ��� ��� �

� �����3$�8.$�& .� 3 #���.8��%� .$�8 4 ��3$�8.��%� .� 3 #���.8��%� .��%� �� < 3�$��.8��%� .$�8 4 �����3��%�.$�& .� 3 #���.8��%� .$�8 4 ��3��%�.��%� .� 3#���.8��%� .��%� �� < 3 �$��.8��%� .��%�

"

9:;�$ �����.$�'� � ��� �� �/"

9:�; :�%� 7�#���$ 7#$��$# ��� ��� �

� �����3$�8.$�& .� 3 #���.8��%� .$�8 4 ��3$�8.��%� .� 3 #���.8��%� .��%� �� < 3�$��.8��%� .$�8 4 �����3��%�.$�& .� 3 #���.8��%� .$�8 4 ��3��%�.��%� .� 3#���.8��%� .��%� �� < 3 �$��.8��%� .��%�

"

9:;�$ �����.��'� � ��� �� �/"

� � ��� ���������� ��� ������ �� ����1� � � ���� �� �� 8 6� ������ �"� �1��������8 ��� � 6� �/�' :��1��� �� ��� ��"�������� �� 1����6�� �����1������ "�� � � �� �;������� ��� 1�������� �� � � �=���� �� ��������

�/

Page 72: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 1 2 3 4 5 6 7

x 104

1

0.5

0

0.5

1

1.5Calculated Filter values

Filter taps

Cal

cula

ted

valu

e

0 1 2 3 4 5 6 7

x 104

0

1

2

3

4x 10

3 Calculated Filter values Error

Filter taps

Diff

eren

ce

A

B

.����� '��C 3$�. ;��� ������ � � ��1 ;���� � ��� � � ;��� ���� �" ����� ;���6��: �� ����� "���� �1 ��� �� � � ����� � � ���� ;���� �� � � �(������ �"� � ������� �� >������ 1���� ����� �" � � ������� 3$�. ;��� 6��:� � ���7���� ����� �� ��� � �� 4 · 10−4� ��� ��� ������ ��� �� � ��� �6��

���� ��8 � � ��� ���������� ���� 6� ����1�� 6� � "����� (1024/960) �� ��� ���� �� #������� � "������ ����� � ���� ��� ���� �� � � ��� ����������C(1024/960)2� .�� ���8 �� �� ��� ��� � �� ���� �� E?�, "����� ����1������ �� � � ��� ��� �" � � ��� ����������8 ����� � �� ����� "���� �� ���������� 1�������� �� ��� 1��"�������� �"��� �11���� � � � �����8 � � ���� ������ ������ � � ������� 3$�.?;��� ����� ���� ��� ��� �������� �� �� ��� � � ��� �����8 ��� ;����� '�� �� '���

� � ��7� ���18 ��� �� ����=� � � ���� ������ �" ���� 4 ������� �� ����������5� � � ���� ����� �(��� ���1���� �� � � �(����� �� ��� � ��������:� ��� "��� �� � � ����1� � �� �� � � � ������� ������ ��� � �� � � ������� ����� � �� "��� ��� �1 ��� �(����� ����� ������������ ��:��� ����1����6� �� ���� � � ������� ���� ������ �"��� ���������� � � �����8 6�� ������� �� >������ 1���� ���� ����� ���� ����� � ������� � � ���1������ �"� � ���� ������ �" ���� �� �������� �� ;���� '�'�

.����8 � � ������� +�� ����� �(��� �6��� �,D "��� � � >������ 1��������� B��� � �� �� � �� 1����8 � � � �� ��1���������� �" � � +�� ������������� �� ���� � � � �� ��11�� ���������� ��� 6��� �� � � ������� "��� ������� �� � � ������� �� � � ��������� 4��11�� �������5 �" � � ������ �� �������� � � ���������� �" � � ������� 6������ � ������ �� � � ������� 4���������� ����'5 �� � � ��11�� ������� 6������ � �� 4��� ������� ���58 ���� ��� ������� ) �� � ��� ���� �������� ��� ��� �� ������� � � �������� ����8 � � ����� 6������ 1��1�������� ����� .����� '�, � ��� � � �(������

��

Page 73: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 70030

20

10

0

10

20

30

40Next>ITD

Number of rendered frames

Filt

er v

alue

0 100 200 300 400 500 600 7000

0.005

0.01

0.015

0.02

0.025Next>ITD Error

Number of rendered frames

Diff

eren

ce

A

B

.����� '��C ��� ������ � � ��1 ;���� ��������� � ������ �������� ����� �������� �� �� ��� ���<������ �� �� � � ���� ��� �� � � ���� ;���� � ���� � �(������ 6������ � � ������� ������� �� >������ 1���� ����� �" � ����� � � ��7���� ����� �� /�/��/�

6������ � � >������ 1���� �� ;7� 1���� �������� �" � � ������� ������������ � ��7���� ����� � ��� �� � � ;���� �� �6��� /��8 '// ������ ���� ���� ���� �� /�� D� .����� '�� � ��� � � �(������ 6������ � � >������ 1���� �� ;7� 1���� �������� �" � � ��11�� ������� ����������� � � ��7���� �����"�� � � ;7� 1���� ��11�� ������� ���������� �� ��� ��� � �� /�� D�

&�� ������� �� ��11�� ������� ���� �� ��� ��L����� �������� � �����1��� �� � � >������ 1���� ������ 3������8 � � ��7� ��������� �� ����� ?������@�� ����� �� ��� ��� ��������8 �� � ��� �� ;���� '��� � � ��7��������� �� � �� ��������� �� �6��� �, D� � �� ����� �� � �� 1��<���� ���� � �������� +��8 �������� � ����������

&�� ������� �� ��11�� ������� ���������� ������ ���������� �����6��8�� � �� � � ��������� ��� ��� �7��� � � ��7���� 6�� �1� �" ��?6��� � ����������� �" ������� �� ��11�� ������� ��� � ��� �� ������� ����'� � �"������ �� � � ��� �� �7��1� �" �� ����� ��� 6� �������� �� �� �� ��1������� � 6�� �1� �" ��?6���

�����#�� � ���� ���/�� �(� 3 ��� ���/�� �(� �� "�����#�� 4� ���� ���/�� ��� 3 ��� ���/�� ��� �� "�����#�� 4� ���� ���/�� �� 3 ��� ���/�� �� �� "

&� � �"���� ��� � � 1�� ��� �" � � ������ 6� � 6���8 � � ��� ���� �����;����6��� ��� �������� �� � �/?6�� ���� �� �� ���� � � �� ���������� ��� 1�� ���� 1��6�� ����� �� �� ��� 6� 6�� ������� �� ��11�� ������� �����������.�� ��������8 �" � � ���� '�- �� �������� �� ' �� � � ������� ���������� �� � � ���� ,�� �� �������� �� , �� � � ��11�� ������� ���������� � � �����

��

Page 74: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 7000

0.2

0.4

0.6

0.8

1Total Gain

Number of rendered frames

Gai

n

0 100 200 300 400 500 600 7000

0.005

0.01

0.015

0.02

0.025

0.03Total Gain Error

Number of rendered frames

Diff

eren

ce

.����� '�'C 2��� ������ � � ���� ���� ������� � � ������� �� ������ 1��������" � ������ ������� �� � � �������� �� � �� 1�������� ���� � � ������ �� ����������� � ������� �� �� ��� ���<������� � � ��7���� �(������ 6������ � �������� �� >������ 1���� ������� ����� �� ��� � �� �D 4���� ;����5� � ����� ���� ����8 6�� �� �� ����1��6� ����� �� ����� � �� �� �6<��� ��� ���� ��,�� �����9"��� �� ���� � �� �� �� �� ��� ���� �6��� ��� ������ �( ���������� 1��������

��

Page 75: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 7000

100

200

300

400

500

600Distance in Meters

Number of rendered frames

Cal

cula

ted

valu

e

0 100 200 300 400 500 600 7000

0.05

0.1

0.15

0.2

0.25Distance

Number of rendered frames

Diff

eren

ce

A

B

.����� '�,C �������� ������� � ;���� '�,� � ��� � ������ ������ �� � ��� ���?<������ ,/ ������ �� ��� � �� ,// ������ �� �� � � � � ;���� '�,& ���������� � �(������8 �� ������8 6������ � � ;7� 1���� �� >������ 1���� �������1�������� �� � ����� �� �� �� "����� � � ��7���� ����� �� /��� ������ �� ��,������8 ��� � �� � D�

�'

Page 76: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 7000

100

200

300

400

500

600Doppler Distance

Number of rendered frames

Cal

cula

ted

valu

e

0 100 200 300 400 500 600 7000

0.05

0.1

0.15

0.2

0.25Doppler Distance

Number of rendered frames

Diff

eren

ce

B

A

.����� '��C ��11�� �������� ������ � � ;���� '��� � ��� � ������ ������ ��� ��� ���<������ ,/ ������ �� ��� � �� ,// ������ �� �� � � � � ;���� '��&��������� � � �(������8 �� ������8 6������ � � ;7� 1���� �� >������ 1������11�� ������� 1�������� �� � ����� �� �� �� "����� ����� � � ��11�� ��?����� ���������� ��� ����� � ������ �� � � ������� ����������8 � � ����� �"?"������ 6������ � � ;7� 1���� �� >������ 1���� ���������� �� ������ �� � ���" � � ������� ���������� 4.����� '�,5� � � ��7���� ����� �� � � ��11�� ������� ���������� �� /��� ������ �� '// ������8 ��� � �� � D�

�,

Page 77: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 7000.4

0.3

0.2

0.1

0

0.1

0.2

0.3Difference between distance and doppler distance

Number of rendered frames

Cal

cula

ted

valu

e

0 100 200 300 400 500 600 7000

0.01

0.02

0.03

0.04

0.05Maximum error in the calculation

Number of rendered frames

Diff

eren

ce

A

B

.����� '��C ��(������ 6������ ������� �� ��11�� �������� � � �(������6������ ������� �� ��11�� ������� �� � ��� �� ;���� '���� � � ����� �����8 ��������� � � >������ 1���� ��������� �� � � ��11��� ����� ���������� � ;7� 1���� ����������� .����� '��& � ��� � � �(������ 6������ � � ;7� 1���� �� >������ 1���� ���������� � ��� �� ;���� '���� � � ��7���� ������" distance−dopplerdistance �� /�/' ������ �� /�� ������8 �6��� �/ D� �� ���?���=� � � ��7���� ����� �� ;���� '��&8 � � �������� �" ������� �� ��11�� ������� ���� 6� �������� �

��

Page 78: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��� 6� ��/ ������ �" /��8 �� ����� �" /��� ��� �11���� �� ������ � �� 1��6���� �� ���� � � ����� ������ �" ���������� � ��� 0���� � � ���� �7��1� ������ � ����� ,�/ �� ,�/8 �� ����� �" /��� � � �� � 6��� ��1������ ���� ������ ��� ����� � � ����������� ���� "�������� &� � ��� �" � � ���� 6�"�������������8 �� �L����� ;7� 1���� ���� ��� �� �� ��

�����#�� ���!�� ����������6���$����� ���(� 3 !�� ����������6���$����� ���(�4�!�� ����������6���$����� ���(� �� �

�� "

�����#�� 4���!�� ����������6���$����� ����� 3 !�� ����������6���$����� �����4�!�� ����������6���$����� ����� �� �

�� "

�����#�� 4���!�� ����������6���$����� ���� 3 !�� ����������6���$����� ����4�!�� ����������6���$����� ���� �� �

�� "

� �� ��� ��1���������� � ��� �� ��� � � ��7���� ����� ����� ���6���� �����1���� ��� �� � � �� � � ��������� �" � � �� �� �� ��� ��� �������� � �� ����"� � �� � � 1�������� �" � ���1 �� � � �� ��� ��� ����� "�� � � ��11�� ����������8 � � ������ ��11�� ��������� 6��: ��� �������������� ��� >������ 1���� ����������� � � ������� ���������� ���� ����������� �� ����� >������ 1���� ����������8 ����� � � ��11�� ���������� ��%������ � ������� 6������ � � ������� �� � � ������� ����� � � ��11��9+�� �� ������� ���������� ���� ��� � ������ �� 6�� ;7� 1���� �� >������ 1������ ��8 � � �������� +�� ��� �(�� ��� �" � � ��������� �" � � ;7� 1������ ��� ��� ��� ����� � �� ���1���� 8 � � 1�������� �" �9�,� ������ 1�����1 �� � � ;7� 1���� ������� ��� ��� ��� ����� � � � ����� ��� �(��� �6��� �/ D� � � 1�������� �" � � �� ���1 ��� ����� �� �9����� � �� ������ �� � ������ ����� �� � � ������� +��� � ��?6�� �����6� ��� ��� � ���7���� ��=� �" ��� /�� ������8 �6��� ��/ :�8 ����� � ��������� �" �9����������� 1�� ���1� � ��6�� ��� ��� � ��� � �" ��/ :�8 �� � ��� �� ������ � � � ������ �� ��� ��� �� ����1��6� +�� ����� 4��� � �� � D5 ���' �-' �/' ������8 �6��� ' �// :�8 ����� � ���1 �" �9�/�'� ) �� � � ����� �������1��6� ����� � � >������ 1���� ����������8 ��������� �� � � ;7� 1�������������� ��� ������ �� �� ����� �" �6��� �,D� B�� � �� � � �� �� �����1 � ����� 1��������8 � � ����� ���� �� ��� �� � � ����������� � ������ ��� ��� ���������� �� � � ��11�� 6��: ���� 1�������� �� ���� � � ;������������ � �� ���� 1�������� �� � � +�������������K����� ���������� ������ � ������ �� ��� � ��?6�� ��������8 � � ��������� ��?6�� ��� � ���� ������ � ��� �" � �������� �� ���� �� �� �� � 6�� �1� 1��6��8 �� �� �71���� �� ������� ����'�

� � ����� ��������� � �� ���� 1�������� �� � � ;7� 1���� ���@�%�� "���?����� � � ;7� 1���� �%���� ���� "������� �� �����6� �� ������� ������� ��������@�%�� �� � ����� �����1������ 6������ ��� � �����8 � "��� ������ �" 1����?���� �� ���� 3������8 ���� �" � � �������� �� ��� �� � � ���������� �� � ���������� ����� �� ���� � � ��8 � ��� �����6� �;������ ���� 6� ����� ��� C � �����'� � � ����' �������� �" "��� ��?6�� �������� ���� �� �� ������ � � ����'��1���������� ��� ��� ��%���� � � ���������� ���� � �������� 1�� ����8 � ���� 1�������� �� ���� &� ���������� � � ����' ���� � >������ 1���� ����� ��

��

Page 79: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 100 200 300 400 500 600 700−1400

−1200

−1000

−800

−600

−400

−200

0LTD

Number of rendered frames

Cal

cula

ted

valu

e

0 100 200 300 400 500 600 7000

50

100

150

200LTD

Number of rendered frames

Diff

eren

ce

.����� '��C +�� ������ � �� ;���� ���1���� � � >������ 1���� �� ;7� 1����+�� ������ � � ��7���� �(������ �� �- ��6���1��8 �6��� /�', ���1��8� �� � � +�� ���� �� ?���/�

����� � � >������ 1���� �%�� "�������8 � � +�� ����� 6����� ��� � �� � D� ������ ����� ��?6�� 1�������� �%�� "������� ��� 1���� �� 6� ������ �� �� ���������� ��� ��� �" 1�������� ��� 6� � ����� �11��7�������� � � �' 6�� �%��6����� ��� ���1�������� ���1�7� ���������� ���� �" ��1�������� � � +������������ ���� �71��� � � ��� ��1���������� ��� ������ �� ����� � � ���� ��1���������� � ��� ��� � � ���� �������� 1��6�� �� ��11�����?����� �� ��������8 �� � ��� ��%���� ��� �' 6�� ����������� � � ��7��������� �" � � ��1���������� ��� �6��� � D8 ��� ;���� '��� ����� � � +�� �������� �(��� � � 1��� �" � � ���� 8 �� ����� �" � D �� ����1��6� �� ��� ������� � � %����� �" �� �� ��� � � ��� +�� ��1���������� �� �����6� ��������� ������

!�� �������

� � ����;������ 1���� ��� �" � � �� �� �� ������ ��� �����6� �� � �� � �1����� � ;7� 1���� �� �� �� ������ ��� ���1��� �� � >������ 1���� ������� ������ � ���� �� �� �� ��1���������� �� ���;���������� �������� ������ � ������ ��� ����1��6� ���� �������� �

��

Page 80: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������� �

�!� ��������������

� �� � �1��� �� �����6� � � � ����� �� � �� � � ;7� 1���� �� � ����1� ��� !#8 �� �� ��� 6� ���1�� ��� �� � ���1���� �� ��� �� � �*���/#,,7�� �� � �1��� ��� �����6�� ������� �1 �� 1��"������ � �� � 1��;���8 �� �1����=��� � � �� � �� � ����� �" � � �� � 1��;���� .���� � � ��� ���� ����� ���� �� ��� � �� � � �� � ���:� �� � � ��!?1��"���� � � ��1�����������" �� �� �� �� � � ��! 1��"��� ��� ���� �� ������ � � 1��6�� �� �� �������� 1����� ������� ��� ��� ��� ��� ���1�� "��� � � !#F� �� ��:8 �� �� �� ��� � � �� �;� �� �� �� ���1�� ���� � 1��� �" �� 1 ���� �������� �� � � ��! ��� ��� <��:�

$�� � �&������ �� ��� �� �

�"��� ���1����� � � "����������� �" � � �� �� �� ������8 �7�� ��� �����6��?�����8 � � �� � ��� �� �;� �� ;� ���� � � #,,7�

(���� ��� ��$�� � ;���

� 1��<��� �� #� � #��1���� ��� �� �� ��� �� ���1�7 �� ������8 ����� �� ������ 1��������� �� 6� ���� �������� 1���� � �� � �� 1��<��� ��� �"���1�������� ������ ����� � � � 1��<��� ��� ��� ��� �� ��� � �*���/#,,78� � ������ ��11��� ;�8 � ;� � �� ���;����� � � ������ ���� 6��:�8 ������ ��1�� � � � �� �� �� ������ �� � ;�� ���� ������� ���� � � ��� 1��<����� � ;��� 6�� ���� ���� ���1������ ������ �� ��: ������� � � ��: ������8���� �������� � �� � � ���������� �6����8 ��� ������� ,����8 ��� ���� � ����� � ������ �� �� � � ���1������ ������ ���� �� �� � � ����� ���� ��� ��1�� ���� �� ��� ���8 � �� ��� ��� ������ ����� � 1�����1��� ������������� � � ������ ���� �������� 8 � � � �1������ �" � � �� � ������ �

(���� 8�� - � 3����

� � #,,7 �� � ��� &���� 1������9��������� ������ �� � �' &���� ���?��� "�� ����: �� ��1 ���������� � � ��1 �� ����: ������ ��=�� ���� � ������ "����C ������ ����:C '�, &����8 ����: ��=�C '�, &��� �� 3��1 ��=�C ,'&���� � � �������� ����: ��=�� ���� � ���� �� ���� ������� ����: ����>��1��6���� � � ;��� ��<�� 1��6�� ��� �� ;� � � 3$�. ;��� ����� ���� � �

�-

Page 81: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

#,,7F� ������� � � ��=� �" � � ;��� ����� ��� '�/�/ 6����� &� �� ��� � �3$�. ����� "��� ;� �� ����� ������ �� ������ ������ �� � � ��18 ������� �-�/ 6���� �����6� "�� � � �������� �" � �� �� �����6�� �� � � 1�������� �� ��� ��� ����1��6�8 ����� � � �� �� �� ������ ������� ������ 6�(��� ��� � ���� ��=� �" ���/ 6����8 � ���� ��������� ��� ��� ����� ��,� 6���� �� ���' 6���� "�� ����� ������� � ��� ����� ��� �" 3$�. ���� ��� � � ��� ���3$�. ����� � ��� �" � � ������ �" ����� ��=��� ��� �6��� �� &�����B�� ��� ����� ���� ��� �� ��� � � � ��� �����8 '�/ 6����8 ���� ��1��� 6� � � ��� ���� ��=��� �'/ 6����� &�� � � ��� 3$�. �� ��� ����� ������������� ���� � � �� � �� �������� ��6��� &� ���� ��8 6�� ��6�� ��� �� � ���� � � ��� &���� 1������9��������� ������ ������ �" � � �' &���� ��1�������

(���� �$$� �

)��11��� ���� 6�� ����� ������� ��� "������� � �� �(�� �� � � ��! �� !# ��� �8 �� � �� � � ���� �� � ��� 6� ���1�� �� #� � #��1���� �� K�?��� ��� ��� )��11��� ���� ������ ����� ������ ���������9 ������������ ����� ���)*���� �� � � !#?1��"��� ������)�� ��� ��� �� �� � �#,,7 � � "�������� ��� ��� + �'��,�����)+ �'��,���� � � ��1*��@���"������� ������ � � ����� ��=� 1�� ���� �� ��?6���� � � �7��� ��?6��� ��� ��� �� ����� � � ������ �" ������ �� ������� � �� �� ��� � �� ��1*��@.��� ����� � ��1*��@.��� ��� � �� ��� ������ �� �� 6� ������� �� � � �7�����?6��� �� �������� � � ��=� 1�� � � �7��� ��?6����

'��) � ��*��������+������ ����"

,

-��)�� .!�����/!

0��0 �����+�����"%

-����

� ��� �) �� � ��*0%

�*0 �����+����� 1 �������� ��� �) �� �""%

����0��*0 2 3��"%

��*0 ����%

0��0 �*0 1 4%

-� )��

5

'��) ��*�����0���'��) �*0"

,

� ��� �) �� � � �*0 *0%

-�� )�� .!�����/!

�� �2*0" 0��0 %

�*0 �*0 � 4%

-� )��

�0����*0"%

5

� � "��� 9"����� ��� ��1������ 6� 6�� 1��"����8 6�� ��� �(����� "���?����������� � � ��! 1��"��� ��� ��� ��� 9����� "��� ;� ��� 6��� �� � ������ �� �(��� "��� � � !#8 ����� � !# ��� ��� 9����� ���� 6��:� �" ��� "��� �;�� ��� ���11��� ���� ���������� C ���������� �� *���$������ �� � � !#�� ��� ��� "��� 9"����� �� ������9������ � � ����� ��� 6��:� �� � � ��!

�/

Page 82: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

1��"��� �� ���� � ��1 ��� ���9������� ��� 6��� �� � ���� ���� � � ����� ���6��: �� ��%���� 9������� "��� � � !#F� �� ��:� 3������8 ��� ���� �6������ �� � ��� �� � �(������ �� � � ��� � � !# �� ��! �����1��� � � 6��� �� ������" �����6��� � � ��� ���� �� � � �� ��� ��� F���� �� ���F ��1������������� F6�� �� ���F ��1�����������8 � ��� � � !# ��11���� � � "����� �� � � ��!� � ����� &������ �" � � �(������ �� �� ��������� �� ��������� � � �� ����� �"6���� 4��� 6��� ���11���5 � �� ��� "��� �� !# 1��"��� �� �� 6� ��� ��� ��! �� ���� ������ � �� �� ��1������ ����� � � �� �� �� ������ ��� � ����� ;� "��� � !#8 �� �;�� � � ���1�� �� � �� ������ � �� 6��: �� � �!#� &�� ��� .���.�� �� �������.�� � 6��� ���11��� 6�"��� 1������ � � ���� $�� .���.�� �� ���������� �� ��� 6��:� ����� �� �%�� �� �?6��8 ��6� �6� �� ��� � ����?;�F� �� ��� ����� � � ���1�� ��� ���1�� ;� �� ���� �� ��� "�����8 ��� ��� � �� ��8 �������.�� ��� � �� ����� 6��:� �" ��?6�� ������� �� ��� ��� ��11��� �?6�� ��������

� �0���������'��) � *06 � ����6 � �� ��6 ���� �����"

,

� 4$ �0�� �7%

-��)�� �8.�!9::

� �%

� ;<�46 ;<�=%

� 4$ � ;����0�* *0%

��0 �� 7% � # �� ��% �11"

,

;<�4 �;����0�*>�? @@ A" B 7&��%

;<�= ;����0�*>�? B 7&��%

�0�� �1 ��0���B;<�=6 46 46 ����"%

�0�� �1 ��0���B;<�46 46 46 ����"%

5

-����

�0�� � ��0���*06����6�� ��6����"%

-� )��

0��0 �0�� �%

5

� 0��)�0�������'��) �*06 � ���� 6� �� ��6 ���� �����"

,

� 4$ 0��)� �7%

-��)�� �8.�!9::

� 4$ � ;����0�* �� 4$ �" *0%

� 4$ ��� �� �� � ����%

��0 �0��)� � 7% 0��)� � # ���� @@ ����� � 4""% 0��)� �11"

,

;����0�*>0��)� �? ��+�����"%

������� @ 4"

;����0�*>0��)� �? C ��+�����"##A%

5

-����

0��)� � �0��)�*06 ����6 �� ��6 ����"%

-� )��

0��0 0��)� �%

5

��

Page 83: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

(���� /7 %������

) �� ������� � � �� �� �� ������ �� � � !��?�*�! 6��� 8 ���1�� ���� 6���� "��� �� �� � � !#F� �� ����� � �� ������������� �� ���� ���4��� 6����� � ����5 �� � � ��! �� "���� �� ���� ���� � � ��� �����"�� �� ���1��� �) �� ��� ���9������� "��� � � !#F� �� ��:8 � � ��! ��� ��� ��� �� ����� �� ��� �� �� �� "����4�/ ��5 1�� ����� � �� 6� �6� �� �1����=� �� �6��� � �� �� �� ��1���������� ��� �������� ���� ����1� � � � ��� ��������8���1� �;�� �� .�:���8 � ��� ������ ��� 9����� ��� "���9�� ;�� ������ � � ��1�� ������� ��� ����� =����� �� � � ��%����� ��1�� 6�(��� �� ���������1�� ����� �� � � ���1�� ������� � ��� � ���� ���� �"��� � ��� ������������ ��1������ 8 � � ��! ��� ��� �� �� �� �� "����� �� ���?����� � �.�:� �9� �������� ���� ��� � �� 1��;��� �� � �� ����� ��� "�� ������ ��:��

(���( ���9 �$���

����� � � !��?�*�! ����1���� 6��� 6� �"��� ���� ��� � ���: �1�� �"�/*3= ������ �" ��� ��7���� ���: �1�� �" ��/ *3=8 � ��� ��� � ��� �� ���� � ���: �1�� � � � ��"�������� �� ��� ���� �1���;������� �� ������ �� ��� 1����6� �� ��� � � ���: �1�� ��� �1 "��� �� �7������ "������� ������� 6����������

(���, !�3 � ���

� � #,,7 ����� ��� � �6���� ��� ���������� ����1� 6� ��7�� ������������� �� �6���� �������� � ��� �" "�������� ��� �� � 8 ��68 ���8 ������8 ���8 � ����� �1����=� "�� � � #,,7� � "�������� �� ������ �"� ��� 6� ������� ��� !#� � � ��������� �" � ��� "�������� �� � !# ��� ��� ��� � � �������11�������8 �� � � �� �� �� ����� � ��� "�������� �� � � #,,7 �� ������� � �� �1����=��� ��� �� � � ���1���8 ������ �� � 1��"������� 6�����

(���. 8�� - !��9�

� ��� ���� ���� ����� ��:� �" ������ �� � � �� �� �� ������� � �� ������ ��� � �� ���� ��� �������6� �� � � !#8 6�� ����� � � 1������ �� ���� �� � � #,,7 �"��� �6��� � �// "������ � � ��: ��� �� ��/ 6���� �"��� � �//"������ �� "�������� � � ����� "�� ������ ��:�8 �� ������ � �����6� A����?��=�A �� :��1 ����: �" � � ���� ������ ������� ����� ���� ��1*��@������ ��� ������=� ��� �������� 6� ��=� P ��=��"4������� ���5 �� � ����1*��@.��� ��� ��� ������=� ��� ������� 6� � � ���� ����� �� � � �7?��� �� 6��� 4����� 6� ��1*��@���5� &� ����� 1����" ����� ���� ������=� �������� 8 �� ��� ���� �� ����� � � ������ ��:�� � � ������ �� �� �� ������ ��� ���6� 8 ���6��� ��� 1��� �" ��������9 ��������� 1���� ��� �� � ����� .���7��1�8 � ������ ��� � 6� ������� ��� ������ �� � � �������� "��������� � ��������� 1���� ��� ��� ��� ������ �"��� � � �������� "�������� � �������=� �����6� �������� �� � ���6�� �" 6���� �� � �� ������� �� ��-'6����� � �� ����� � �� � � ��������� �" � ���������� � ��� ������� ������� �� ����� � ��: �" ��-' 6����� � � �� �� ������ ��:� "��� ����

��

Page 84: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�� 6���� �� � � �������=�����9 ��������=����� 1������ �� � 6���� ����� �� ��? �� "����� � � ��: �� ����� �� �� �� "���� ����� � �� �"��� ��// "�����8 ������� � �" ���� 8 � � ��: ��� 6� -�// 6����� �� 6� ������� � �� � ��������:� ���� ����8 � � �� �� �� ������ ��� ��� �� ��� �� ,/ /// "�����8 �6��� �������� �� �/ ����� � �" ���� � ) �� � � �� �� �� ������ � ��� ��� �"����� � � ������=� �����6� ��� /8 ���� �� ��:��

(���0 ��� ���� �����

K���� #PP ��/ ��� ��� �� ����1 � � �� �� �� ������ �� � � !#?!��"������ � � ��!?1��"���8 �� � ���1���� ���/ ��� ��� � ����� �������� ��� � � ��� � �� 6� ���1���6� ��� K���� #PP ��/ �� �� � ���1���� ���/8 ���� ���������� �������� � .�� ��������8 �!��-. ������� 6���� �� � � !#?1��"���8 6��������� ��?6�� ��� � �� � � ��!� ���� �� ��1������ �(������ �� � � ���� ����������7 �" 6�� ���1����� �� ����� ��� �� ����1���� ��� ��?6�� �����8 � ���� �� �� � �� ���� �� ������� � � ����� �� � ��?6�� �����6� ��� ��: �:� � ��C

� 4$ '�04 =9$%

� 4$ '�0= =9$%

� �= '�0�= 477%

� �= 0����%

0���� '�0�= 1 �'�04 � '�0="%

$���� �� 6� � � ���� �,���� � � ���� �� � ��� �� � � ��! ��� ����� � ���� �//� �" ��� ��?6�� ���� ��� ����1�� ����� �� �� � � 1�� ��� ��������� � �� ����� �� ����� � �� ?�����8 � � 1�� ��� �� 6� /� � � ���1��� ���� � ���1���� ����1��� � � ��� ��?6�� �����6�� �� ����� �� ����� � � 1�� ����� � ��?6�� ����� �" � � 1�� ��� �� 6����� � �� � ��?6�� ����8 � � ���� / ��������� ���� ������� � � ������� �����7 �� � � ��! ��� ��: �:� � ��C

� 4$ '�04 =9$%

� 4$ '�0= =9$%

� �= '�0�= 477%

� �= 0����%

0���� '�0�= 1 ��� �="�� 4$"'�04 � �� �="�� 4$"'�0="%

&� � ��� � � ��1� ���� 4�����54�����5 6�"��� ���� �� ����8 � � ���1������������ � � ��1� ������� �� � ����1������� �" ��� ��?6�� �����6��8 6�� �� ������ � 1�� ��� �� ������ �� � ��?6�� ����� � �� �� ���"� ����� � � ���1��� ������ ��?6�� ����1������� �� � ��?6�� � �����8 ������ �" � ��?6�� ����1��������� � ��?6�� � ������ �� � � !# 1��"���8 K���� #PP �� ������� ������ ���� ���� ��?6��� �����6��8 ����1���� � �� ����� �� �� � �� � ��� � �1�� ��� ��� ������ ����� � � !#?������� ��� ��� ��� �� 6� �1����=� 8 6����� "��������8 �� �� ����1��6��

R�� ���� �� ��1������ ����� �� � � 1����" ���������� �� � � !#?1��"��� ���� ������ �� ��� � � AD�A >�� �� 1���� �� �������8 ����� ��� �" 6��? �1� 8 ��������� � � ���� >�� 4�� � � >�� AD A5 �� ��� �� � � #,,7 �� 1���� ��?6���������� �� ������� ������ �� 1���� � ��?6�� ������� �� ������ ��� � �� >�� ������� �� � /� � � "������ �� � ��������� � �� 1��6���

� �= �%

��0�� 7% � # 9% �11"

*0� ��DE�6 E�)F D6 �6 �"%

��

Page 85: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� � �������� ���1�� ���1���� � �� �� � ����� �� � ���1���� �� �� "����C

76 4

76 =

76 �

76 G

76 9

� � ���� �� � ����� K���� #PP �� 1���� ������� ����� �� 6�� ������� ��1���� ��?6�� �������� �� � � #,,78 � � >�� AD A ��� 6� ��� � 3������8 �" � �>�� AD A �� ��� ������ �� 1���� � ��?6�� �����6�8 � � ������ �� 6� ����������� ��� � �� �� �������� 6����

� 4$ �%

��0�� 7% � # 9% �11"

*0� ��DE�6 E�)F D6 �6 �"%

� � �������� ���1�� ���1���� � �� �� � ����� �� � ���1���� �� �� "����C

76 4HII7

46 A9�7$

=6 497AG=

�6 =4$�IA

G6 =A4H4G

�����8 � � ���� �� � ����� K���� #PP �� 1���� ������� ����� �� 6�� ������� � �� ��� ��� ���� �:� � ������� 1��6��� 3������8 ����� � � ���� ��� �� �� �� � ���1���� � ��� ���: �//D �������� �� � � ��������8 1����"��� �"��� ��� "�� �6������� ) �� ��?6�� �����6�� ��� 1����� �� ������ ��� ����� ����� � � � ����� O?�����8�����M8 �� � �� � ��?6�� �����6�� ��� 1����� �� =���8 �� ��� ��� ���1���� �(����� ����� � �� � �� ��� ������� �� ;�8���1��� � � 1����" >����

$�� *� � ���+���

!��;��� �� ��� �� ��� � �� �(����� 1���� �" � � 1������ �������� #�����!��������� 0��� 4#!05 ����� !��;��� �� �;�� ��N � ��� ��%�� ��� �� ����?���� �� ���� ����� � 1�������� �1�� � �� ��� ������� �" � 1������� ) �� � �� ���� ��������� ������� �� "��� 8 �� �� 1����6� �� ��� � � �� 1��� �" � ��������� � �� �� ���1�������� ���1�7� ���� � � 1��� �" � ������� � �� ����������� #!0 �� "��� 8 �1����=������ �� � �� 1��� ��� 6� �� � �� 1��;��� ���6� �7����� ������ �� � �� ��� �� �� 1����6� �� ���������� ����������� �� ������1������8 �(����� �������� �� �(����� 1���� �" � 1������8 �� ;� � �� 1����� �� ��� ��������� ���� ������

(���� � :���� � � ��

� � 1��;��� 1������ ��� �� � 1��� �" #� � #��1���� ��� ��� � � ���� ��?������ ��"�������� � � 1��;��� 1������ ����� ��N #� � ��=�8 �7������� �����8����?8 �������?8 ��7����? �� ������� ���� ������1���� ���� ��� ��6 "���?������ �7������� ����� �� � � ���6�� �" ����� � ������� ������� �� 6��� ��� 8���� �� � � �������=� ����� ������� �" � �������8 *������ �� � � ���������� �" ����� ������� 6� � �������8 *�7���� �� � � ������ ������ �"

�'

Page 86: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

����� ������� 6� � �������8 ������� �������� �� � � ������� ���6�� �" ��?��� ������� 6� � �������� � � 1��;��� ��� ��� �� � � ��! ��� � ������������ �" �6������ �� ����� � � �� ��� ��� �" �1����=�����8 ��� ������� ,��"�� ����� �� � � �1����=����� ���������

(���� � :���� %������

#� � 1��;��� ��� 1��"���� �"��� ���� �� ����;������ �" � � �� �� �� ������8��� ������� '� �� � �� ����� � ��� �7���� � "�� ���:��� �� �� �� ������8��� ��� �����6�������� � � �����6������� 6��: ��� 6� � ��� �� � ���� ����6��:� �" ������� 8 �� ��� ��%����� ����� �� �;������� �� � � �7������ 6��:�� ����� ��� � � �� � � �7������ �� �� �� ������ ��� �� 6� 1��;� �� �1����=� 8��� ��� � � �����6������� 6��:�

�.�.�.� !������ 6�<��� � � �& �����

��� � �� "� �" � � 1��;� "�������� �� 6� � ��� �� � �� �������� � ���"�������� ���C ���@�7�����4� � ������ ������58 ���@3��"@�����"���4�11���3$.����58 ���@$����1�������4�����1��� �" � ������58 ���@.����01 ���4�1 ����1��������8 ���������8 1��<�������8 ���58 ���@#������#������!����� 4��11���� ��� 6�(�� ���� ����������58 ���@2��&�(�� 4��%����� 6�(���58 ��!*��@���4������� ������5 �� ��!*��@�����4 �������� ������5� � ���� ���� �� � 1��;��8 � � "����01 ��� "������� ���� ���� ����� �/��� � "����������� � � �7��1���� �" � � ������ �������� �� � � .����01 ��� ��� ��� ��������� "���� 4���5� � � "����������� �" � � �� �� �� ������ �� ��� �� 1������3$�.8 ���8 ��11�� �� ����� � � ���1� "��%����� ��� � �� 1��;��� ���'� :3=�

B��� � �� � � 1��;��� ����������� �� � �� ������� � �� � � ���� ���6���" ����� ������� 6� � "������� �� ��� ��6��������� ����� � �� �� "����������� ��6�������� �� ���@�7�����8 � � ����� ��� 6� ���@�7����� ��� � � ���������� �" ����� ������� 6� � � ������ �� �� �� ������� �� 6� �6� �����1��� �1����=��� ������8 1��;��� ��� �� � �� � � �� �� �� ������ ��� ������ #� � #��1���� �1����=����� ��������� � � 1��;��� ��� ��� �1����=�������� � ��� �� ;���� ,���

)�� ��� ��� �1����=������8 � � ������ �� �� �� ������ �������� '�� ��/����� �� ��� "���� 4� ��58 �� �������� �" �6��� ��� *�1�� � � ��� ���� ���1�?������� ���1�7 ��6�������� �� � � �� �� �� ������ ��� ���@3��"@�����"���8����� �-� ,,� �����8 �� ���@$����1�������8 ����� �� -'' ������ ����� ��� ��� ��� ��6�������� ���� "�� ��D �" � � ����� ��� 6� � � ���1����=� ���� �� ������� &�"��� � � ��7� 1��;��� ���8 � � �� � ��� �1����=� �� �����6� �� ������� ,����� .����� ,�� � ��� � � ���� ������1���� �" � � �1����=� �� ��

� � �1����=� �� �� �� ������ ��� "� �� � ���1���� �1����=������ ���?����� �, ��/ �����8 �6��� �� *�1�� � � �1����=����� 1������ �� �� ��� � ����1�7��� �" � � �� �� �� ������ 6� ;�� ������ � � ��� ������1���� �" ��*�1� �� 6��� � � ��! ��7���� ��1�6���� �" ��/ *�1�� ��� �" � � ��%����?����� �" � �� � ���� �� 6���� �6� �� ��� ��� 1����� ������� �� � � ��!� � ���7� 1��;� �� ��� ��� ��� 1����� �������8 � ��� �� ;���� ,���

)�� ��� 1����� �������8 � � ������1���� �� ����� ��6� "��� �� *�1��� �6��� �' *�1�� � �� ��� �71���� ����� � � ���@3��"@�����"��� �� ���@$����1������� ��� �7����� "�� ����� ������� � � ���� ������1����

�,

Page 87: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

16979

12188

7677

2612

2273

433310

298551

72944

A3D_Execute()

A3D_Hrtf_transform()

A3D_ResampleSource()

A3D_frameUpdate()

A3D_CalculateCurrentParam()

A3D_getBuffer()

DspMem_Alloc()

DspMem_Free()

Total amount of cycles after 1 frame, without optimization

.����� ,��C � � ������ �" ����� ������� 6� � � �� �� �� ������ �"��� ���"���� ��� ��� 1����� ������ �� �� �1����=�������

75620

35338

16196

12325

1645

1732

2102

2380

A3D_Execute()

A3D_ResampleSource()

A3D_Hrtf_transform()

A3D_frameUpdate()

DspMem_Alloc()

DspMem_Free()

A3D_getBuffer()

A3D_CalculateCurrentParam()

Total number of cycles after 1 frame

.����� ,��C � � ������ �" ����� ������� 6� � � �1����=� �� �� �� �������"��� ��� "���� ��� ��� 1����� �������

��

Page 88: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

3564

3430

3290

3175

147490

70676

32392

23817

A3D_Execute()

A3D_ResampleSource()

A3D_Hrtf_transform()

A3D_frameUpdate()

DspMem_Alloc()

A3D_getBuffer()

A3D_CalculateCurrentParam()

DspMem_Free()

Total number of cycles after 1 frame

.����� ,��C � � ������ �" ����� ������� 6� � � �1����=� �� �� �� �������"��� ��� "���� ��� ��� 1����� ��������

�" � � �� �� �� ������ ��� ��� 1����� �������8 �� ��� 6��� � � ��7�������6�� �" ����� � �� ��� 6� �7����� �� � � ��!� �� ��� � ���� ������� ���������� ��� �������8 �, "�����4,/ ��5 ���� �7����� � �� 1��;���8 ��� ;���� ,�'�

�"��� �, "�����8 � � �� �� �� ������ �� ������� � ��� ��� �����8 �6����' *�1�� � � ������ �" ����� ��� 6� � � ������ �� �� �� ������ ��11� "����' *�1� �� �' *�1� �� �� � � �7������� "��%����� �" � � ���@.����01 ����� � ���@.����01 ��� �7������ ����� �/ �� �� �� ��� �7����� ����� ������ � �, "�����8 � �� �� ����� � � ������� ���1�7���� )�� ��� �����6�������8� � �� �� �� ������ �������� �6��� '/D �" � � ��7���� ��1�6���� �" � ���!�

�.�.�.� +��� *���� +� >� ��� %��������

�� �������� � � ���1�������� ��>����� �" � � .���� 01 ��� � ������ 1��;������ ���� ������ �" ������� � � .���� 01 ��� ����� �/ �� � � .���� �1 ����� ��� �� "��� �� � � ���&�(�� �������8 ���� ����� � ��� .����� ,�, � ���� �� � � �1����=� �� �� �� ������8 ��� ��� 1����� ������� �� � � .����01 ��� "��%����� �" � ��8 �������� �6��� �- *�1�� #��1��� � �� ���� �� �'*�1�8 � �� � � "���� �1 ��� ��� �� � ���� �������� �1 ��� "��%����� 4�/ ��5��� ;���� ,�'�

�.�.�.� !������ 6�< � � �& �����

� � �����6������� ��1������ �1�� � �� � � 6�(��� Lo �� Lf ������ "��?%����� �� � �� � � �����6�11� �� ��� �

� �� �� �� �� � �� �" Lo �� ����� � �� Lf 8 � � �����6������� �� ��� 6����1��� 6� ��� 6�(�� �1 ��� ��� � � *�1� ������1���� �� ��� "�� � �Nd 4B��6�� �" �����6������� ��� �� ��5 ;��� ��� �" 6�(�� �1 ��� 6� ��� � ��

��

Page 89: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

102123

92747

82404

77249

74875

3182821

1774707

809800

A3D_Execute()

A3D_ResampleSource()

A3D_Hrtf_transform()

DspMem_Alloc()

A3D_getBuffer()

A3D_CalculateCurrentParam()

A3D_frameUpdate()

DspMem_Free()

Total number of cycles after 25 frames

.����� ,�'C � � ������ �" ����� ������� 6� � � �1����=� �� �� �� �������"��� �, "����� ��� ��� 1����� ��������

3961616

791394

A3D_Execute()

A3D_frameUpdate()

Total amount of cycles after 25 frames

.����� ,�,C � � ������ �" ����� ������� 6� � � �1����=� �� �� �� �������"��� �, "����� �� ������� � � .���� 01 ��� ������� ����� � ���

��

Page 90: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

48114

35182

13357

4040

249385

669696A3D_reverbApply()

applyDelayedFilter()

FLIB_CMULT_CALC_F()

FLIB_CMULT_NORM_F()

insertInBuffer()

insertInReverbDelayBuffer()

Total amount of cycles after 6 frames, with 6 nodes

.����� ,��C � � ������ �" ����� ������� 6� � � �1����=� �����6������� ���"�� � "����� �� ��� Nd = 6�

"�� � � ���� ���� �� � ��� �� ;���� ,�� � � ���1�7��� �� ,,�� *�1� ������ ��;���� ,�� � ��� �� �� ���� *�1�� �� �� 1����6� �� �� ��� ���� �" � � ���1��������6� �� �����Nd� � �� �� � ��� �� ;���� ,�� � ��� � � ���1�7��� �� �11��7��������- *�1�� *���� � � �� ������ ����� "��� � � �11������ .���� "�������8� ��� � � ������ �" ���������� �� 6� "����� � ���"��� � � ���6�� �" ��� ��� � #*�� "������� ��� �� ��� � ���8 � � ���6�� �" ����� ���1��������� ����� ��� �

$�� ��� ,&����-������

#� � ���1���� ��� �� #9#PP ���1��� �� �6� �� 1��"��� ������� �1����=�������� �(����� ����C ;�8 1������ �� 1�������� O��M� 3�� ?��� �1����=��������� 1��"���� �� � � �1����=��8 � �� ���� 6� ��� �� �� ���� �1���� �� ��� � �1����=�� �(��� �(����� ���� �" �1����=�����8 � ��� ��� / 1��"�������1� �1����=������ �:� �������� �����6�� �� ���������8 ���������� �" ����� �� �8 ���� +��� �8 � � �� ��� ��� �" �1����=�����8 �(��� "������� �:� ��1�1����=������8 �7������ �" � "�������� � �� ��� ����� ��� 8 ���������� �"��6� ������ ��6�71��������8 ���� B��� � �� � � �� ��� ��� �" �1����=�����8��� ������ "�������� ��� �� �������1� ��%������ � � �� � ��������� 1��"���������� � ������ �1����=������8 1��������� 1��������?�1���;� �1����=�������� ��� �1����=������ ��� ����� ���6� 6�� ��� ��� ���� �(������ � �� � ��1����=�� �� ��� � � � �1����=�� ��� ��� ��� !������?��� �1����=������0���� !������?��� ���1��� � ������ ;�� ���� ��� ������� ���� ;� ��� � �� ��� � � �� �� ����� �� � � �1����=����� �� �� � ���������� 1������" � � ���1���� &������ � � ���1��� ��� ��� � � ������ 1������8 �� 1��"���������� �1����=������ � �� ��� ����� �11�� ����� ;�?��� �1����=������ .��"��� �� �1����=������8 1����� ��������� ��� 6� ������� ���� � � �� � �� ��

�-

Page 91: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

561907

407084

72023

22425

2269447

4575665A3D_reverbApply()

applyDelayedFilter()

FLIB_CMULT_CALC_F()

FLIB_CMULT_NORM_F()

insertInBuffer()

insertInReverbDelayBuffer()

Total amount of cycles after 30 frames, with 6 nodes

.����� ,��C � � ������ �" ����� ������� 6� � � �1����=� �����6������� ���"�� �/ "����� �� ��� Nd = 6�

435982

302651

219076

71324

21799

1482543

3833791A3D_reverbApply()

applyDelayedFilter()

getBufferedSamples()

FLIB_CMULT_CALC_F()

FLIB_CMULT_NORM_F()

insertInBuffer()

insertInReverbDelayBuffer()

Total amount of cycles after 30 frames, with 3 nodes

.����� ,��C � � ������ �" ����� ������� 6� � � �1����=� �����6������� ���"�� �/ "����� �� ��� Nd = 3�

-/

Page 92: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� � ���1���F� 1��1�������� �� �� ����� "��������� � � 1������ ��� �� � ��� ���� ����C *0��@���$��� �� 0B$�++� � � *0��@���$��� 1������1���;�� �� � � ���1��� ������� 1��1������ �" � ��1� � ���� � � ��� �" � �*0��@���$��� 1�����8 ��� ��� ��������� � �� � ��1 �7������ � ����������6�� �" ������ � � ��"�������� 1���� � 6� � �� 1����� �1� � � ���1����� �������� �" �� ��� �������� � �� ���� ��1 4�����1��� �� 6��:��1���5"�� � � ��1� � � 1����� ��� ��� �1 � � ���1��� �������� ������������� �� � � ��7� ��6������� �����6�� � � 1���� �" � � �� �� �� ������ � �� �����1����=� �

(���� $����<��� ��� ���

�"��� � � ;��� 1��;��� ���8 ��� ������� ,����8 � ��� ��� � ��� �� �1����=�� � 3$.����? �� $����1� "��������� � � 3$.���� 6��: ����8 ������� �,/ *�1� ����� � � ������ ��1����� �" � � ��!� *��� �" � � 3$.���� ��?�������� ��� ������ �1�������� �:� � ������8 ����1�������� �� � �"��� ��� � ������ �"� �6���� ��11�� 6� ��8 � ��� �� ��� �1������� ��� +@��� 4����� � ��! *�#5� � � *�# ����������� ����1��� ��� �����6�� �� � �"�� � �1�� ��� �"� 6� �� � � ����� �� � � �� � � �� �����6� �� �������� � � �3$.���� ���������� ���� �� �;� �� ��� � � *�# ������������ ����� � �3$.���� ��1� "�� ����� ���1� �� � 1����� ������8 � � 6���;� �" ����� � �*�# ����������� ������ �" ��1����� �1�������� �� ����� ���6�� � � 3$.�������� ������1���� ��11� "��� �6��� �,/ *�1� �� ,� *�1�8 ��� ��� � � �1�" � � #� � #��1����� �1����=��� � � ���������� �6���� ��� �;��� ��11����� ���1� ���� ����� �1��������� 0���� � ��� ��11� "�������� ������ �" #�����7 "��������� � � �1����=����� 1���� ��� �" � � #� � ���1���� �1����=���� ��� "������� ���� "��� �� 6� "����� �� ��?6�� ����������8 6�� � � �"�����?6�� ���� ����� �1�������� ���� "����� � �� � � ��11� ����� �"� ����� � ����� ����� 6� ��1����� � ��?6�� ���������� �� ��� �1���;� "������� 4�����?1� "�������5 ��� ����� �"�8 �� 1��;��� ��� �� �� �� "����� �" � � 1��;������� �� ����� �����8 � � �� �;������ ��� :�1�� � � ���� 1���� ��� ����� � ��� ��?6�� ����������� � ��?6�� ���������� �� � � �� �� �� ���������� �� �;� �� ��� � � ��11� ����� �"� �1��������� !����� ��������� ����������� �� � ��1� �� ��� �� ���� ��1� �" 1����6�8 �� �����6� �� � � 1��?����� �������� � ���������� ���� ��� ����=� ����� ��� ��?6�� �1��������� �� ��� � � 0�"���������8 �� �������� 1��;� ��� �� � �"��� �� �"����� � �� � ��� ����� �"� �1��������8 ���� � � �� � ��� 1��;� �� �� ��� "�����86�� � � ���6��� ���� ��� ���� �� ��� ��� �� ��� "�� ��������� �� �� �� 6��:� ���� �����6�8 ����� � � �1?����=������ �����6� �6��� ���� ���� � �� ����� �� ���� � � ��%����������&� �1����=��� � � �� � ����� #� � #��1����F� �1����=��8 � � ������ �" ������������ 6� � � �� �� �� ������ ���� �� ��� , �����8 ��� ������� ,�� "�� ������

$�! �� �� ��&�� �� ���&��

0���� �� �� �������� "�� ��1�� �� ���1�� �" ���1�� �� ��� �� � � ��! 1��?"���8 ��� ������� ,���'� 0���� � ��� "�������� �� ��� ���1�� "�� 1����� ���������� ��:� �� ��1����6� "�� � � �� �� �� ������ �� ��� �� ���?����� � � ��?

-�

Page 93: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

����� �� �� �� ������ 1����� ������� ��� ��� ��� ��� ���1�� "��� � � !#F� �� ���� �� �� �� ��� �� �;� �� �� �� ���1�� �� � 1��� �" �� 1 ����8��� � � ��!F� �� �� �� ��� � � �� �� �� ��8 �� �+#��/����#8 �� � �' 6��8-� :3= ������ �� ��� � � �� �� �� �� �� � ������ ��� �� �� � ������ ��� ����� � �� �� �� �������� �� � � ��! ��� ��� �" � � *���� ���� &�(��� �����!��� 4*�&�!5�� �� �� 1����6� �� ��� �1 � � *�&�! �� ������ �� �������1� � ���� �� �������� � �1���;� ���6�� �" ���1�� 4� ? �,�5� � � *�&�! �� ��� ���������� ��?6�� ��� �8 � ��� ��� � �� 6� ����� 6� � � *�&�! �� � .�.� ������1�� �� ������ �� � � �������1�� � ��� �� ��� � � 1����6���� �� ��� �*� �������"�� ��� "��� � � *�&�! �� � �1���;� ������ �������� �� � �� ��� �� ��1����6� �� ��� �� �������1� "��� � � �*� �������� � �� �����"�� �� �������� ���1���8 �� � ����"��� �� 1������ � � ���1�� ����� �� � � �������

(���� ������� �$ 8�&��

�� �� �� �� ����1 � � *�&�! "�� ���������� ��� ��� "��� � � #� ��8 � ���6���" ��������� �� <��1��� ���� 6� ���� � � #� � #��1���� ��� �� �������� ����6�� �" �7��1��8 � � ;��� ���1 ��� �� ����� � ���� �7��1�� "�� ��� ���?"� :���� ��� � �� ��� "��� ��� �� ���� ��� ���"�� ��"��������8 ����� � ��7��1�� � �11� ��� � � ����1���� 1��:���8 ��� ������ "�� ���� �� ��? �� #� ��� �"��� ��������� � � ��1�������8 �� �7��1� 1��:��� "�� � � �������6��� ��� �������� "��� ��� �� � �� 1��:��� � ��� ���� ��� �7��1� "�� � ���� �" � � #� ��� � � �7��1�8 ��� ��� ���1� "��� ��� ��1�� � ���� ����������1� �� � ���1�� �" � ��� ���1�� ������ �� ��� ���� � �� �7��1������ �� 6� �7���� � � ��� � �����8 � ��� � �� �������� � ��� K���� ��� ��1��<���8 6�� ��� � � ������ �� �7����� ��8 � � �7��1� ��� "��� �� 6� ���"��������� ����� � � �� � � 6��� ������� 6� ��8 �� ��� � ��� � �" �� 6���� ������ ����� �������� � � ��7� ���1 ��� �� ����=� � � � � �� � � ��� ���:��� 6���� � �� 1������ ;��� � � <��1��� �� � � !��?�*�! ��� ���� � ��:� �� ��� � � ������� ��������� � � ������� <��1�� �������� ��� �11�� � � � ��7����1 ��� �� ����=� � � �������� �������� ��� �� � � �7��1�� � � "��� ���� ��� � �� �� 1�� �1� 6���� ��������� "��� � �� "�� �7��1� � � ����� 6�(����=� ��� ��� � &��� �� � �� �����1���� � � �������� �������� ��� ������� 8 6���� ������ ��� 6� "��� � � � ��������� �" ������� �1 � � *�&�! ��� ���1��� ��� � � ��������� ��11�� 6� � � �*���/K#,,�/ ���� *���� O-M8 �� "��� �� 6� �������� � ��� � �� � � ������ �������� �������8 ���� � � ���6��� �"� � *�&�!8 ��� � ��:� �� ��� "��� ��� �� ��� � � *�&�! �� ���6� 8 ��� ���� ���6� � � *�&�! �� � ���6� ���6��� � 1����6������ �� ��� ��� �" � �*�&�! ���������� ������ ������ ��� ��� �� 6� �6� �� ��� J��1��� �� $��?������N �*���/K#,,�/ ���� *���� O-M8 �*���/K#,,Q !���1 ���� $�"������2�� �O�/M8 +�/�9,,�/ 3�� ���� �1���;������ O��M8 �+#��/����# �'?&�� -�:3= ������ �� �� #� �� ���� *���� O�,M �� �*���/K#,,/�9,/�9,,/-9,,�/��! *���� ���� &�(��� ����� !��� 4*�&�!5 $�"������ 2�� � O��M� ��?�6��� �" � � *�&�!8 ��%���� � ����� 6�� �� 6� ��� �� � ��������8 �� 6� �6��� � � �� ��� ��� ��������� � � ���� �" � � �������� �� �����6� ����� ��������� � � � ����� ��� � � �������� ����� ��� ��� �" � � 6���8 �� ����� 6��:� � ��� �����

-�

Page 94: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

(���� ������� �$ ��� �8� ��� ���

����� ��� �� � � ������ ��� �*� �������� ��� ���� ��� "��� ��� ���������� �� ���� ��� � �� ����� � �� �� �� �� �� ���� �*� "�� � � *�&�!8 � ����� � ��� �" ����� �*��8 ��� 1�� � ����� ��� �*� �� 6� ��� �� ��� ��������� �� ��� �" � � � ���� ��������� �� � � *�&�!� � � ������ ����������"�� � � �*� ��� � �� 6� ����� �� ������� ��� �*� �� ��� ��� ��� ���������� ����� � � *����� � ������ ��� �� � � �*� ��������� ��� ��6� ����� �� 6��� � �������8 ��� �� ��� � � �� �� � � ����� �� � "�� � ���!� ��� "�� �*� � ��� �7���� � ���1� �" �7��1�� � �11� ��� � � 6��� 8� ��� ���� �" � ��� �7��1�� ��� ����� ��16��: �� � �� ������� �����"����� � �7��1�� ���:� �� � ��������� ��� � �� �� � � �*� � �� 6� ��� �1�� � ������ ��� �� ��� � � ��������� ���N �*���/K#,,�/ ���� *����O-M �� �*���/K#,,Q !���1 ���� $�"������ 2�� �O�/M�

(���� ��3����� 8�&�� ��� �8�

�� �� �� �� ��:� � � �*� �������� �����"�� ��� "��� � � *�&�! �� � �������8 � � �������1� ��� "�� � � *�&�! ���� 6� ���6� � �� � � �*����� 6� ���;���� �� ����� �� � � *�&�! �� 6� ���6� � � � �*� ������� 6� ���;���� �� �� ��� ��� �� � � �����"�� � �� ��� �1���

$�$ �������

� �� � �1��� �����6� � ���������� ��� �� � � ���:��� �� �� �� �������� � �� �� ��� ���1�� �� ��� �� � ��!� #� � 1��;��� ��� 1��"���� ��� � �� �� �� ������8 ���1�������� ���1�7 6��:� ���� �1����=� �� #� �#��1���� ��� �� ��� ��� �� � � �� ��� ��� �" �1����=������ � � ��! ������ ��� �� ���1� ���� "��� � � ��� �� <��:8 �� �� �"� ���1�� ����� � � ���� �� ������ � �� �� ��� � � �� �;� ���1�� �� � � ���1�� <��:8 � ��� �1��� �" �� 1 ���� ���� �������� �

-�

Page 95: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������� �

��� �� �� ����� �� �!�

� � ��! 1��"��� �� ������ � �������� ���� � � !# 1��"���� ) �� � ��� �� �� ������ �� �1����=� 4��� ��� �����6�������58 � � ��! ��� ��� ���� �� �� "����� � ��� ����� "����� � �� ���?����8 ����� ���6� "����� � ��6�� !#� ��� �� � �� � ����� � ��<�� ���6��: �� � �� �" � � ��! ���� ����9� 4��� 9�����5 �� � � !#F� �� ��:8 � � 1��"������� 6������ �// ���������� � �� ���?����� ������� � � �� �� �� ��1���������� ��� ��� �� ��������C �7������� �� �������� ����;������� � � �7������� ����;������ �� ����� ����"� � � �7������� �" � � �� �� �� ������8 ���� ��������� � ��� �" 1���� � ��:��� ������ ��������� �� ���71���� 6� ����� �:� #!0 ���� ��� � ��������� ����;������ ���� � � �9� "�������� �� ��� ��� ��� ������ �" ���� �� � ���1�� )��� ;� �� �� � ���� *���6 �� ���1��� ��� � ��"������ ����;�� B��� � �� � ��! �1����=������ ��� ����� �� ����� � �� 1 ��� �� � ��� � ��! �� �� �� ��8 ������� ,�'8 ��� ��� ��� ��1������ �� � �� ������

.�� �)������� '���+������

� � ���� ��� "�� �/ ������� ��� ����� � �// /// "����� � �� ������1�� � ��� ��� �" 1��� 0���� ��� ��� 1����� ������8 ��� �(���� �:� 3$�.8 ���8��11�� �� ���� � � �� �� �� ������ ������ �� :��1 � � ��7���� ��?������ ��=� 6��� � � ��%���������� � � ��7���� �������� ��=� ������ � ���7���� ���6�� �" 6���� ��%����� 6� � � �� �� �� ������ ����� ��� �7���?����� ������ � �� ���� �� ����� ��1�� ��� ��� �� �� ���1�� ��� ������ � � ���%����� ��1�� 6�(�� �������� �" � ��� �" =������ � � ��1�� 6�(��8 ������������� =�����8 ��� 1������� �� �� �;� ����� � � �� �� �� ������� � � ���1�����1�� 1�� ��� 6� � � ������ ���� ��� ���� �� ���� �� � � !#F� �� ��������������� � �9� �������� ��� ���� � � ��������� �" � � �7������� �" ���� ��8 6�� �� � ����� ���6� ������� �1�� � ��� ��� �" ���1�� ��� �������� ��� ��� ��� ���71���� ������ ��������� �� #!0 ���� ���

.�� �������� '���+������

� � �������� ���� ��� ��� �/ /// "�����8 � ��� ������ ��� )��� ;�8 �� � �!#F� �� ��:� � ��"������ ���� ;� ��� ��� ��� �� � � !# 1��"���8 ������ � ���� ;7� 1���� �� �� �� ������ �� ���;���������8 �� 6�� ���1�� ����

-'

Page 96: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 106

-2

-1

0

1

2

3x 10

4

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 106

-1

-0.5

0

0.5

1

A

B

.����� ���C � � ;����� � �� � � �"� � ���� ���1�� ������ 4����58 � � ;����������� �� � � ��! �� � � �� �� �� � � !# 1��"���� � � �(������ 6������� � ������ �� ����� =���8 � ��� �� ;���� ���68 � �� � � ������ ��� � �������

;�� ���� ���1��� �� *���6� � � ;7� 1���� �� �� �� ������ �� ���1��� ������"8 ����� �� �� ���� � �������� � �� � � �� �� �� ������ 6� ���� ������ ������ �� � � >������ 1���� ������� �� � � !# 1��"���� ����� 6�� � � !#�� ��! 1��"���� ��� � � ���� ������� �" � � ;7� 1���� �� �� �� ��������� � � ���� ���;��������8 � � ���1�� ����� ���� 6� � ������� .������ ����� ��� �������� � � �"� �� ��� � � ���� ���1�� ������ �������� �� 6�� 1��"����8 �� � � �(������ 6������ � � �������

&�� ���1�� � ����� �� � � ��! 1��"��� ��� � ������ �� � ��� ���1������� ���� �� � � !# 1��"���� ����� � � ���1�� �(������ 6������ � � 1��"������ =���8 � � �������� �" � � ��! 1��"��� ���� 6� �%�� �� � � �������� �"� � !# 1��"��� � �� ����� � � ���� ������� �" � � �� �8 ���� ��� ��!�1����=������ ����� ���

.�� �������

� �� � �1��� �����6� � � ����;������ 1���� ���� ��� �� � � �� �� �� �������"��� � ��! �1����=������ ���� ���1��� �

-,

Page 97: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 106

-1-

-0.5

0

0.5

1x 10

4

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 106

-1

-0.5

0

0.5

1

B

A

.����� ���C � � ;����� � �� � � ��� � � ���� ���1�� ������4����58 � � ;����������� �� � � ��! �� � � �� �� �� � � !# 1��"���� � � �(������ 6������� � ������ �� ����� =���8 � ��� �� ;���� ���68 � �� � � ������ ��� � �������

-�

Page 98: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������

����������

� � 1��1��� �" � �� � �1��� �� �� ���� � � ��� �� "��� �� :���� �� �� �(������11���� �� �� � ��� � ���� 1��6���C ����1���� ��������8 ������ � ��1�?���������� �� ��� � � �" �������� ����;������� � � � ������ ��� �� � �����1��� ��� ��>����� � �� � ���� � � ����� � � ����1���� �������� ��� � �?��� �� �� ���� ����� �� ����� � � 1��������� 1������ �� %���:� �� 1����6�4��� ������� ���5� �"��� �7������� � � �7������ >������ 1���� �� �8 �� ��� �?�� � �� ��� � ���1���� ��� ��1���������� ������ � 4��� ������� ���5� �>������ 1���� �� � ��� ����1� 6� �������� ����� � � ;7� 1���� ������ ��6���� � � >������ 1���� ������� �" � � �� �� �� ������ ��� ����1� �� ���?�"�9���1��� � � �������� �" � � ;7� 1���� �� �� �� ������ ��1����������4��� ������� ���5�

/�� ��'��&���� ����������

� � ����1���� �������� �" � �� � ���� ��� �� ����1 �� ��� �� 1����6��� � � !# 1��"���8 �� �� ��� A��;����A ���������8 �� � �� �� �� �"� �� �1����=� � � ������ �� � �� ;� � � ��! 1��"���� ���� �� �������� ��� 6��� ����1 ������ �� � � ��! 1��"���� &�� ���������� ��� � ��� � ���?����� �� ��� ��������� .�� ��������8 ����1��� ������ �� � � ��! 1��"��� ��� ��� ��%���� ��� � ������ ���������� �� ��� �� � � ��!� �� � � �� �� �� 8 �� �� 1��6��� �:� ����� ������ �� #!0 �����8 �9� �1�� �8 ����� ������������8 ���8 6����� 1������ �� �� � � ����1���� ������ �� � � !#1��"���8 � ��"����������� �" � 1������8 �� �:�� �� 6� ����� 6� � 6�� �� � �1������� �����1��� �� � ��!8 � ��"����������� ��� 6� ����� 6� � �������� � 6��8 ������ ��11��� ������8 ������������� 1��6���8 �� ���� 1��6?���8 ���� 3������8 � 1��������� �71������� �� ����1��� ������ �� ��!1��"���� � �� ���� �� �������=� � � 6� ����� �" � ��!8 � �� ����1��� ��� ���� �L����� � �� � 1����� ��� �� �� ���� �71������� �" ��! 1��"����� �� �� �������� ��� 1�� �1� "���� 6�� � � �71������� �� � � ���71������� ��! ����1��� &� ��� ��� � � 1������ ���� �� ��� �� ����1��� � �� ��� � !# 1��"���8 ������� �������� ���������� �� �� �� ��! ����� 1��6����) �� � �� �� �� ���1���8 �� �� ����� �� ��� �� �� � ��! 1��"���� � ����� ��� � �� �� �"� � � 1������ �� �� �� �� ��:� �� ��� �� � ��! 1��"���8�� �1��� ��� ����� � � ����1���� ������� ����� �� ��� ��� ��� ���1�7

-�

Page 99: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

� �� �� ������ ��1����������8 ��:��� � � ���������� ���� � ��! 1��"��� ���?���� � ���6��: �" � �� ����1���� �������� �� � �� ��1����������� 6��� �������� �� ���8 ��� 6� ��� �L����� � �� �� ��1���������� ��� ��� �� ����� ��� � �������� �� ���� ��1������� �" �� � �������� ��:� �� �� ��1�?���������� �� ���� ����� � ��� � ��������� �� �������� ��� 6� �� 1��: � ����� 1��"��� ������� �:� J�K�� J�K��� 6�� �6<��� ������� �� ����� 1��"���� *��� ��6�� ������8 ����� ���?1 ����8 !��8 ���8 ���� � ��11��� J�K�� J�K� ���� � � ���� ��1������������ 6� �7����� �� ��� 1��"��� ��11������ � ���1���6� J�K� �������� 0�"��?�������8 � � J�K� 1���������� ������� �� ��� ��11���� �� ������ �� � 6���6� � �������� � �� ����� � �� � J�K� ��1���������� �" �� ������ ��� ��� �� "��� ��8 "�� �������� � # �� � .������ ��1���������� �" � � ���������� ��

� � �������� � ���� �� � � ����� �" � ����1���� 1������ ��� �� ����1 ����� �� 1����6� �� � � !# �� � �� �� �� �"� � � �� � �� ��� �� � � ��!��� � � ;�� ����� �� 6����� � �� � �� ��� � � 6��� � ���� �� � � ����� �" � �1��<���� � � ����� �������� ��� �� � ���6������� �" ����������8 � � �������� ��;��� ����1 �� � !# 1��"��� �� � �� �� �"� � � �� � "�� � � ��! �� � ��������� �� ��1����� � � �� � �� �� ���� � �� �� ;��� �� ������ � � >�� � ����� ��� �1�� � �� ��� �� ��� � ��� �"��� �� ����� � � �� � �� ��� � ���� �� �� �� 1����6� �� 6�� ���� �� ��� 6������ � � !# �� � � ��! 1��"����� �� �� ������ � �� �� �� ��1��� � �� �� ��� � ���1�;� ��������

/�� �������� ��&�����������

*��� ����1��� 1��"�� �� �� � � ��� ��� 1������� "��� ������ � �" � ���?��� �� ��� :���� �� �����1�����9 ������������ �� �����6�8 1������������� ����1 � ���� �L����� �� � �������� "��� ������ ��� �� � �� ����� �1�� �7������ �� �� ������ �� ��� 6� ��1������ �� �(����� ����8 ��� ���� �� �� �� �L��� �� �� � � ���1���� ��� �L����� ��1���������� 6��� ��� 1��?�7������ �� �� ���� 1���� �" � � ��1���������� �� ���� �:�� 6� ����?�� �� �������� �" � � 1��?�7������ �� �� ) �� �������� � 1������ ��� ��� �����"������ �� �8 �� ��� 6� ������ �� ����� � � >�� �� ��������� �" � � ��� ��?1����������� ��������� � � >�� �" � 1������ "���� � � ������ ��1������������ ��������� � � �L������ �" � � 1������� �� ��:� � ������� �" �� �7�������� �8 � � ��������� �� 9�� >�� �" � � ��� ��1���������� ���� �����6� � ���" � � �7������ �� �� � � �L������ �" � � ��� ��1���������� ��� �� � � �?���1��F� ���������8 � �� �� �7������ �� � �� �����6�� 0���� �� �7������ �� ��1�� � �1 � � ����1���� 1������8 6�� � � ��� ��1����������F� �L������ ����� �1�� ��� �� � � ����1��� � �� �� 1�� �1� ����� 6� ����� ���1�?���� � � � ��� ��� ��L����� ��������� �� ������� �� ��1����� � ��� ���1��������

/�� �������� '���+������

�� ��6� � �������8 � ;7� 1���� ��1���������� �" �� ������ � �� ��� ���?1�������� ���1�7 � �� � >������ 1���� ��1���������� �" � � ���� ������ ��� ������ 1��6�� ����1��� � ;7� 1���� 1������ �� �� ����"� � � ���������

-�

Page 100: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�" ���� �� ����� ���� �� �������8 � � 6��� ��� �� ��� ����� � � ������������;������ 1��6�� ��� 6� �� ������ � >������ 1���� ��1���������� 6��� ��� � ;7� 1���� �� �� �� � �� ��� ����1��� ��� ����� ���1��� :�� �����6���� ����"� � � �������� �� %����� �" � ��� ;7� 1���� ��1����������� � �� �"������ � ���?��������� �11���� � � ���1��� ��� ��� ���� �� ����1 �����1����������� �" � � ���� 1������8 �" � ��� �� �� 1��;� ������ � #���� ������ � ��������� �� ���:�� ��1����8 � � 6��� ��� � ����1�� ��� ����"� � ��������� �" � ;7� 1���� �� � �� �� ��� �7������ ��"������ .�� ��������8 *���6��� 6� ��� �� 1�� :�� �����6�� �� ����� ������ ����� �� :���� ��8 ����"�� � �(����� 1���� �" � � ;7� 1���� ��1����������� � � ��� �" � ��������81���� �� 1�1�� ��� � �� ���� ����� 6� ��� ����� �

--

Page 101: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

������� �

����������

� �� � ���� �����6�� � � ��1����������8 �1����=����� �� ��� ����� �" � ;7� 1���� �� �� �� �� � "�� � ��!� � � ���: �� 6��� ��� � �� �� � ��� ������������N ��1���������� �" ;7� 1���� �� � �� � !#8 ��1���������� �� � �1?������ �" � � ;7� 1���� �� � �� � ��! �� �1����=����� �" � � �� ����� ������� �� 6� ��� �� ��������� �� � � ��1���������� �" ;7� 1���� �� ��� � !# �������8 � � ���� �������� �� 6���N 3$�.8 ���8 $����1���8 ���?����� �� ������ ����8 +�� �� $����6������� 6��� �� "��� � ��� ��������81������ >�� �� 6�(�� �� ��� �� 6��� ��1������ � �� � � ��1������������ � �1������ �" � � ;7� 1���� �� � �� � ��!8 � � ���� �������� �� 6��� �"��� � �1������ �" � � �������� "��� � � ;��� ������� 6��� �� ����"� � � ���������� �7���� �� � � ��! �� �� � � !# ��1����������� �� � � �1����=����� �"� � �� �8 � � �� � "��� � � ����� ������� �� 6��� �1����=� ����� "�� #!0����� 6�� ��� �� ���� ��� "�� ������ ������

� ���� ��� � �������� �" ��� �������8 � � �� � ��1������ �� 6�������;� �� � �� 1����6� ���1��� �� � >������ 1���� �������8 ������ �� 1��?�� 6� ��������� � � ����;������ �� 6�� 6��� ��� "�� ��� �������8 "�� ��� ������� �� "�� � �������� ���:��� ����� ���

������ � � 1��<���8 ���� 1��6��� �� 6��� "��� 8 � ����;� �� ������ � � � ���: �� 6��� ���1��� ��� ����� �����"������ �� � � 1������� �� 6��� ����� ����� ��� �� �� � �� ��� � �� � � ����� �" � � 1��<����� � �����8 � ����� ��� �� �1���;������� "�� "�������� �� �� �� ������������

��� �� ���� ���� ��� ����1���� ������ �� � � ����� �������� �" � � ���:8��� �� 6���� �6� �� "�� � � ��! ��� ���1�� �� �������8 � � ������������� ��� "�� �1����=� � �� ������� ��� "��� �� 1����6� �1����=������ �� ���?�1����� ��� 1����� ����

0�� %������ �'��&����

.��� �� ����1���� �" � �� 1��<��� ����� ������� �" 1����6� �1����=������6�� �� ������ �� �� #!0 ������ � � ���� ���� ��������� 1��� �� � ������6�������8 � �� ��� �� ��1������ �� "��%����� �����8 ������ �11��7?

�//

Page 102: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

����� � � ���� ������ �� � � ���� *�1� ���� "�� ��� ������ �" ��������� �� ��1���������� ����� � ��� �����6������� �(��� 6�� � � ���� �� ��� �� �� � ���� �� ���� ���1� ��1����������8 �� ���� �����8 ��� �� ��� � �%����� ��� �� 6�� ��� ��� ���� ��� ������ �" ����� 6�� ��� � ��� �� �� �� ������ ������1����� B�7� �� � � $����6�������8 ��� ��������� ��� ���������8 �� � � �����1� "�������� �1����=����� "�� � � �����1��� "���������� 6� ��� �� ��� ����� ���������� �� �1����=��� � � �����1� "������� ���������6� �� �8 ���6��� ����� �" 1�������8 �� �� ��1����� � � �����1���"������� ���� � �� ���� �������� � �� ���� ��11���� �����1��� "���������� ��:� �� 1����6� �� 6�� 1��"��� �����1��� ��� ��� 1������ �� ��� � ��!� � � 3$�. �����"���8 �������� �" � � ������ �" ��������� �� � ������1� "�������� � � ���� �" � � 3$�. ��� 6� ����8 ��� �� �����6���1����������� ) ��� �� ��� 6� 1����6� �� ������ ����� �" 1������� �� ����� �" *�#��

���� ������ ������ �1����=������ ��� 6� ���8 6� "��� �� ����� �" ��?1��� 6�(�� �� ����� �1��������� �� �� ��� � � ���� �" 6�� � � ����� ���1����������1� �� � � ����������� ������ �" �������1�� ������ � � � �����"�� "���*�&�! �� ������ ��� 6� �� � 6� � � �*� ��������� �� � � ��1�� �� ���1�� ���1�� � �� 6� ����1� �� ���� ���8 �� �� �� ��� �� ��� � �������1�1�� ���1��

�/�

Page 103: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

"��������#�

O�M S ��1C99���� �6�����9 �6� �� 1 ���9 T�+��(" /�������� $��������"0������ �//��

O�M �������� B������ ���� �� "�� ��"�������� �������� ��������� %��#� ��� �0 �������� B������ ���� �� � ��������� 4�B�� Q���,-?�-�-5�

O�M J��� &������ 1������ /������ $�� � "�����" �� � / ��� 1� �� %����#�!�����0 ���� �� 2������0 � � *�� !����8 �--��

O'M ����� $� &������ 3#+ 1� �� � 4�� �� ������" ��� ' ��������0 ����$������ ������8 �///�

O,M S ��1C99"�����������9 ���91�� 91�� ���"� ���< ��U�������!���B��6��G�*���/K#,,�/ T� $'13&54�66�5 ������ �//��

O�M ��7�� ������������ 3�5)66�5 ��#7'�� /��*�� +���������� (�������� ��� �0 ��7�� �����������8 �///�

O�M S ��1C99����1����� ������9 T� ���� ��� # ����(�� �� #������ � �����80 ������ �//��

O�M S ��1C99<�����������9 T� 9��� 3+ ��80 ������ �//��

O-M ��7�� ������������ $'13&54�66�5 �����#����� +������ 1����� ���� ��+��� '�� ��0 +��� ���6�� �!$�/��.8 ��7�� �����������8 �///�

O�/M ��7�� ������������ $'13&54�66� +1�� �������� ������� : ������������" +��0 +��� ���6�� �!$0���&8 ��7�� �����������8 *�� �//��

O��M ��7�� ������������ %35�)66�5 ��#7'�� ����� /��*�� 1����;����������� ��� �0�08 ��7�� �����������8 ��1 �///�

O��M S ��1C99���� �?1�����9 ��� ��9���1����?���� �����9>����� �� T� ���#��� 8222 <6� ��1���6�� �//��

O��M ��7�� ������������ $'13&5�66� 7�����!��� �)�== ������� � �> : ��� +��� ���6�� �!$0����8 ��7�� �����������8 J�� �//��

O�'M !����: ��� ����� 8������������� � � ����������� ��� �� ���� ����������� ������� 3+ � ��� ���� $��� ��������� �" ��� �����8 ������ �///�

O�,M ��7�� ������������ $%�3&5�+<<� &�#��� ?@ A/! 1���� � ��� �����0+��� '�� �� ��7�� �����������8 �---�

�/�

Page 104: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

O��M ��7�� ������������ $'13&54�665�)65&)665?)66�5 +1� ' ����������� ���� 1���� ��� -'��1�. ������� : ��� +��� ���6�� �!$0,-��8��7�� �����������8 �����6�� �//��

�/�

Page 105: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������� �

������� ��������������

��������

������ � � � ����8 �������� �� ���1�7��� 1��6�� ���� ��������� �� � ���11�� ��������� 6��:8 ��� ������� '���� "�� ���� ����� �6��� � � 1��6?��� �� ��������� � � 1��6��� ���� ���� 6� ��1����� � � ��11�� 6��:��� � ��� ��1����������� � �� ��� �11���� ��� �%��� �L����� �� ������" ���1�������� ���1�7��� �� �� �����6� �� ������� ������ � � ;��� ��1�?��������� �� �����6� �� � � ��7� ��������

��� ��� %���� ��&&�� ��&����������

� � +�� �� ������� �� ����� "����8 � � ���� �1�� � �� � � ������� �� � ������� �� � � �1�� �" ���� �� � � �� ��� � �� � � ������ �� ������� �������� ��� .�� ��� "���� � ��� ���� �� ������� �� � � � �� ���� 6������� � 1������� ����8 ������ ��7�? �� 1������� +�� ������ � � +�� ������������������ �" ��������� � ������� ��� +�����+� ����� �� �� 6��� �� � �������� 1�������� �� ��������� �" � � ������� �� � ������� � � ������� �������6������ � � ������� �� � ������ �� ��� ������� ��6�������� ��11������������ A����������+�������A8 � �� �� 6��� ��� �� 1��������8 ����� � � �������� ���� 6� � � ��������� �" � � ������� �� � � ������� � � +�� �� ������� 6� ����1���� � � �(������ �" ����������+������� �� ��11���������� ��� � � ������� �1�� �" ���� 8 � �� ����� � � ���� �� �� ��:� � � ���� �� ������ �� �������� � �� ��� ������1�� �� � � ������� �" � � ���� � �� �� �� ������ �� � � ����

� � ������� �� � �� ����1�� ��� � � ���1��� ���� �" � � ������ ��������� � � ������ �" ���� ���� ���1��� .����8 � � +�� �� �6����� 6� ��� ��� � � ���6�� �" ���1�� ��� � � ���6�� �" 6�(��� 6������ "������

tf =Nb · Lo

Sr

LSDV = Ps + (Vs · tf ) − Pl − (Vl · tf )DopplerDistance = ||LSDV ||

�/'

Page 106: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

��6� ���C� ���� !��� ������

Nb ������ � � ���6�� �" 6�(��� 1�� "�����Ps ������ Source→Next→PositionPl ������ Listener→Next→PositionVs ������ Source→Next→V elocityVl ������ Listener→Next→V elocityVso ������ �1�� �"���� tf ������ ���� 6������ "�����LSDV ������ +���������������11��K�����

LTD =(DistanceToListener− DopplerDistance) · V −1

so · Sr

Nb

B������� ����� ���� �� ��6� ���� ����&������.�����8 ������ � � ����6������ ����� "���� �1 ��� �� ����� �� +���������������11��K����� �� � � ��?����� �" ����� �7�� "��� � � ������� �� � � ������8 ��:��� �� ����� ������� � � ��?����� �" ������� �� ������� � � ��������� �" � � +���������������11��K��?��� �� ������ �� � � +�������������K����� �� � � ������� ���������� 4�����������'5�

�� �����6� �� ������� '����8 � � �(������ 6������ ����������+������� �� ��11���������� � ��� ��� ����� ��������� � � ��7���� ����� ��� �6����, DV�

�/,

Page 107: €¦ · Get Buffer Reverb accumulate HRTF Apply Reverb Calculate Current Params Apply Gain while sources in playing list Yes No Resample Frame Update Out buffer Accumulate

�������� �

$����� !������

� � *���6 ����1�� ��� � ���� ��� � �� � ���� ���� ����1� �� ���1��� � ��������� 6������ � � >������? �� ;7� 1���� �������� �" � � �� �� �� ������8������� �1 1��������� �� � � �� ������ �� "�� �6������ �������� &� �;����� >�� �� � � ;7� 1���� �� >������ 1���� ������� �" � � �� �� �� ������8 "������� �� �� � ;� "��� � � �� ��:� � �� ;� �� �������� 6� � *���6 ����1������ � *���6 ������ :�� 1��������� �:� ������ ��������8 ����� � ���������?����8 ���8 ��� ��� ������� ) �� � � ;� �� �������� 8 6�� �������� �" � � �� ��� � � � ;� �� ��� ���;���� � �������� � �� �� ��� �� ������ �7���� � ����� � ������������� � �� ���1����� 6�� �������� �" � � �� �� �� �������) �� 6�� �� �� ��� ��� � � '����( B�� ���8 � �� ����� ������� 1��������� ��;�� � � ;�� ������� ��"�������� �6��� :�� �����6�� ���� � � � ������8 ���1�������8 ��1�� �����8 ���8 "�� ����� "����� � � ���1������ ����1� �� � �1 � �� ��� "��� 6�� � � >������? �� ;7� 1���� ;�� �� 1��� � ��61��� "������� :�� �����6�� � � ;��� ;���� �������� � 1�� �" 6�� � � ;7� 1���� �� >������ 1���� ������ � � ��7� ��61�� 1��� � � �(������ 6������ � � ;7� �� � � >������ 1���� ������ � ��7���� �" �/ ;�����4 �1�� ��� �" � �� ����� ��� �������� 58 ��� �?� ��61���8 ��� 1���� � � ��� ��� �� �� ���������1�� ��� "�� �6������8 � �� 1�� �1���;� �����6��� � � ����� ����1�� ������"� ����� � �� ��� ����� ���6� ��� ������ �" ���� �� ������ � �� � �6�� ���1������ ����1�4� � ����� ����1�� � ��� 1�� �� ���� �����6�� �� � ����1������ ����1�5�� ��� ����1�� �� � �� ������ �� ���1��� �� �6�� � � �� �� �� ������� ������ � �� � ��� ����� 6� ���� 6������ � � ��! �� � � !# 1��"����8 ����1����=����� �� � �� � � ��! 1��"��� ��� 6� ����;� �� *���6� �� ���?<������� ��� � � ��1������� �" � �� � ���� �� ��� ��� � � �� � � ������ �� ��" � � *���6 ����1�� �� ��� 6� 1�6�� � �

�/�