{"id":6154,"date":"2025-07-29T15:38:44","date_gmt":"2025-07-29T06:38:44","guid":{"rendered":"https:\/\/blog.criware.com\/?p=6154"},"modified":"2025-08-06T17:30:18","modified_gmt":"2025-08-06T08:30:18","slug":"distance-based-effects-for-voices","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2025\/07\/29\/distance-based-effects-for-voices\/","title":{"rendered":"Distance-based effects for voices [Part 1]"},"content":{"rendered":"<p>In this 2-part tutorial, we will learn how to implement distance-based effects on character voices, using Unreal Engine 5 and ADX for UE. <\/p>\n<p>There are many situations in games where character voices must be processed to sound more realistic (NPC dialog, broadcasted announcements, radio chat in multiplayer mode, etc\u2026).  In all these cases:<br \/>\n\u2022\tThe voice can be heard normally at close range<br \/>\n\u2022\tAs the distance increases, the voice becomes muffled and difficult to hear.<br \/>\n\u2022\tFor longer distances, communication devices may be used, such as walkie-talkies, radios, etc\u2026 lowering the quality of the transmission.<\/p>\n<p>In this first post, we will prepare the interactive audio data in Atom Craft, ADX\u2019s authoring tool. In the next post, we will handle the implementation in Unreal Engine 5.5, using only Blueprints (no code).<\/p>\n<p>We will use the ADX LE UE SDK (version 2.01.00). If you are not familiar with it yet, ADX LE is the light edition of ADX, and the SDK can be downloaded for free here: https:\/\/game.criware.jp\/en\/products\/adx-le_en\/<\/p>\n<h5>Importing the audio files<\/h5>\n<p>First, we need to import the wave files corresponding to the dialog and the noise in AtomCraft as Materials. The Materials folder of your Work Unit should look something like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA01.png\" alt=\"\" width=\"395\" height=\"277\" class=\"alignnone size-full wp-image-6156\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA01.png 395w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA01-300x210.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA01-130x90.png 130w\" sizes=\"auto, (max-width: 395px) 100vw, 395px\" \/><\/p>\n<p>Here we have 2 dialog lines and a noise file.<\/p>\n<h5>Creating the Cues<\/h5>\n<p>The next step is to create the Cues that will play these sounds. To do so, simply drag and drop each one of the Materials onto the Cue Sheet. The Cues will be automatically created with their default settings.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02.png\" alt=\"\" width=\"517\" height=\"604\" class=\"alignnone size-full wp-image-6158\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02.png 517w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02-257x300.png 257w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/p>\n<p>If needed, you can organize the Cues in different Cue Sheets. However, if you put them in the same Cue Sheet, you should have a structure like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03.png\" alt=\"\" width=\"397\" height=\"619\" class=\"alignnone size-full wp-image-6159\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03.png 397w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-192x300.png 192w\" sizes=\"auto, (max-width: 397px) 100vw, 397px\" \/><\/p>\n<p>To ensure the noise plays continuously during the transmission, select its material in the Inspector, set Overwrite Loop Information to \u201cTrue\u201d, and set the Loop Type to \u201cLoop\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04.png\" alt=\"\" width=\"548\" height=\"340\" class=\"alignnone size-full wp-image-6160\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04.png 548w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-300x186.png 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/p>\n<h5>Creating the Categories<\/h5>\n<p>Since later we will want to apply the muffled effect only to character voices in the game, we will assign them to a Category.<\/p>\n<p>First, we need to create that Category. Expand &#8220;Categories&#8221; in the project tree, right-click on any Category Group and select &#8220;New Object -> Create Category&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05.png\" alt=\"\" width=\"942\" height=\"648\" class=\"alignnone size-full wp-image-6161\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05.png 942w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-300x206.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-768x528.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-130x90.png 130w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><\/p>\n<p>Let\u2019s create a Category called \u201cVoice\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06.png\" alt=\"\" width=\"393\" height=\"379\" class=\"alignnone size-full wp-image-6162\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06.png 393w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-300x289.png 300w\" sizes=\"auto, (max-width: 393px) 100vw, 393px\" \/><\/p>\n<p>Then, select the character voice Cue and press the Category Edit button in the Inspector.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07.png\" alt=\"\" width=\"1722\" height=\"753\" class=\"alignnone size-full wp-image-6163\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07.png 1722w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-300x131.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-1024x448.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-768x336.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-1536x672.png 1536w\" sizes=\"auto, (max-width: 1722px) 100vw, 1722px\" \/><\/p>\n<p>As shown below, check the &#8220;Voice&#8221; Category and press the OK button.<br \/>\nDo this for all the character voice Cues.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07b.png\" alt=\"\" width=\"404\" height=\"336\" class=\"alignnone size-full wp-image-6164\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07b.png 404w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07b-300x250.png 300w\" sizes=\"auto, (max-width: 404px) 100vw, 404px\" \/><\/p>\n<h5>Setting up the AISAC Control<\/h5>\n<p>We will use ADX\u2019s &#8220;Aisac Control&#8221; feature to apply effects. First, let\u2019s create a &#8220;Global AISAC&#8221;, so that we can apply the same Aisac Control to multiple Cues at once.<br \/>\nRight-click &#8220;Global AISAC&#8221; in the project tree and select &#8220;New Object&#8221; -> &#8220;Create AISAC&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08.png\" alt=\"\" width=\"849\" height=\"620\" class=\"alignnone size-full wp-image-6165\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08.png 849w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08-300x219.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08-768x561.png 768w\" sizes=\"auto, (max-width: 849px) 100vw, 849px\" \/><\/p>\n<p>Select the AISAC graph type as &#8220;Bandpass &#8211; Cutoff High&#8221;. This will allow us to progressively cut off the high frequencies and muffle the sound.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09.png\" alt=\"\" width=\"479\" height=\"195\" class=\"alignnone size-full wp-image-6166\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09.png 479w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-300x122.png 300w\" sizes=\"auto, (max-width: 479px) 100vw, 479px\" \/><\/p>\n<p>We can create a simple linear graph. Ensure that the AISAC value is set to at least 0.1.<br \/>\nIf you set it to a value closer to 0.0, the effect will be too strong and you will barely be able to hear it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10.png\" alt=\"\" width=\"988\" height=\"676\" class=\"alignnone size-full wp-image-6167\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10.png 1317w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-300x205.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1024x701.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-768x525.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-130x90.png 130w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/p>\n<p>A Global AISAC can be attached to Cues by dragging and dropping it onto these Cues. Let\u2019s do it for all the Cues corresponding to character voices. Once this is done, we will be able to preview the Global AISAC effect.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11.png\" alt=\"\" width=\"427\" height=\"602\" class=\"alignnone size-full wp-image-6168\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11.png 427w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11-213x300.png 213w\" sizes=\"auto, (max-width: 427px) 100vw, 427px\" \/><\/p>\n<p>Once the Global AISAC is attached, you can play a Cue and operate the AISAC control slider to apply the effect, which, in this case, should make the sound muffled.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12.png\" alt=\"\" width=\"879\" height=\"661\" class=\"alignnone size-full wp-image-6169\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12.png 1172w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-300x226.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-1024x771.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-768x578.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/><\/p>\n<p>Finally, check the &#8220;Default control value&#8221; box of the AISAC control. This will set the default value to 0.0.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15.png\" alt=\"\" width=\"781\" height=\"268\" class=\"alignnone size-full wp-image-6170\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15.png 781w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15-300x103.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15-768x264.png 768w\" sizes=\"auto, (max-width: 781px) 100vw, 781px\" \/><\/p>\n<h5>Building the Cue Sheet <\/h5>\n<p>We are now ready to export the Cue Sheet! Go to the Build menu and select \u201cBuild Atom CueSheet Binary\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13.png\" alt=\"\" width=\"881\" height=\"368\" class=\"alignnone size-full wp-image-6171\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13.png 1175w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-300x125.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1024x428.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-768x321.png 768w\" sizes=\"auto, (max-width: 881px) 100vw, 881px\" \/><\/p>\n<p>Select the options as shown below and press Build. A new ACB file will be generated.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14.png\" alt=\"\" width=\"813\" height=\"536\" class=\"alignnone size-full wp-image-6172\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14.png 1084w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-300x198.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1024x675.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-768x507.png 768w\" sizes=\"auto, (max-width: 813px) 100vw, 813px\" \/><\/p>\n<p>In the second post of this tutorial, we will import the binary Cue Sheet we prepared in Unreal Engine and use Blueprints to implement distance-based effects on character voices!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this 2-part tutorial, we will learn how to implement distance-based effects on character voices, using Unreal Engine 5 and<\/p>\n","protected":false},"author":2,"featured_media":6179,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[5,7,22],"tags":[],"class_list":["post-6154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adx","category-tutorials","category-unreal-engine"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/comments?post=6154"}],"version-history":[{"count":10,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6154\/revisions"}],"predecessor-version":[{"id":6240,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6154\/revisions\/6240"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/6179"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=6154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=6154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=6154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}