{"id":6182,"date":"2025-07-29T19:25:13","date_gmt":"2025-07-29T10:25:13","guid":{"rendered":"https:\/\/blog.criware.com\/?p=6182"},"modified":"2025-08-06T17:30:05","modified_gmt":"2025-08-06T08:30:05","slug":"distance-based-effects-for-voices-part-2","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2025\/07\/29\/distance-based-effects-for-voices-part-2\/","title":{"rendered":"Distance-based effects for voices [Part 2]"},"content":{"rendered":"<p>In the <a href=\"https:\/\/blog.criware.com\/index.php\/2025\/07\/29\/distance-based-effects-for-voices\/\">first part<\/a> of this tutorial, we prepared an ADX Cue Sheet that includes both voice and noise Cues. In this second and final part, we will explore how to import it into Unreal Engine and implement distance-based effects using Blueprints.<\/p>\n<h5>Importing a Cue Sheet<\/h5>\n<p>To add the binary Cue Sheet to your game project, import the .acb and .acf files that were built into the content drawer (content browser).<\/p>\n<p>The .acf file contains all the Atom Craft project information. When importing, you will be asked if you want to update the Atom plug-in with the Atom Configuration contained in this file; press \u201cYes\u201d.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA01.avif\" alt=\"\" width=\"450\" height=\"156\" class=\"alignnone size-full wp-image-6180\" \/><\/p>\n<p>You can easily verify that the Cue Sheet was successfully imported.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02-1.png\" alt=\"\" width=\"578\" height=\"290\" class=\"alignnone size-full wp-image-6183\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02-1.png 578w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA02-1-300x151.png 300w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/p>\n<p>When you inspect the content of the Cue Sheet, you will see the 3 audio Materials we added in the previous post. (Note that if you didn\u2019t change the settings, they will have been encoded using our proprietary audio codec (HCA)).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1.png\" alt=\"\" width=\"1300\" height=\"722\" class=\"alignnone size-full wp-image-6184\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1.png 1300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1-300x167.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1-1024x569.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1-768x427.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA03-1-800x445.png 800w\" sizes=\"auto, (max-width: 1300px) 100vw, 1300px\" \/><\/p>\n<p>Now we need to add a test character. Place the mesh where you want in the level. This is where the audio dialog will be played from.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-1.png\" alt=\"\" width=\"1151\" height=\"674\" class=\"alignnone size-full wp-image-6185\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-1.png 1151w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-1-300x176.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-1-1024x600.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA04-1-768x450.png 768w\" sizes=\"auto, (max-width: 1151px) 100vw, 1151px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-1.png\" alt=\"\" width=\"807\" height=\"623\" class=\"alignnone size-full wp-image-6186\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-1.png 807w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-1-300x232.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA05-1-768x593.png 768w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/p>\n<h5>Preparing the Blueprint for the voice<\/h5>\n<p>Let\u2019s create a simple Blueprint Actor to play the voice. To do that, right-click in the Content Browser and select &#8220;Blueprint Class&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-1.png\" alt=\"\" width=\"1189\" height=\"958\" class=\"alignnone size-full wp-image-6187\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-1.png 1189w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-1-300x242.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-1-1024x825.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA06-1-768x619.png 768w\" sizes=\"auto, (max-width: 1189px) 100vw, 1189px\" \/><\/p>\n<p>Set the parent class to &#8220;Actor&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-1.png\" alt=\"\" width=\"635\" height=\"736\" class=\"alignnone size-full wp-image-6188\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-1.png 635w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA07-1-259x300.png 259w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/p>\n<p>Open the actor and add an Atom component.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08-1.png\" alt=\"\" width=\"671\" height=\"385\" class=\"alignnone size-full wp-image-6189\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08-1.png 671w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA08-1-300x172.png 300w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-1.png\" alt=\"\" width=\"1294\" height=\"725\" class=\"alignnone size-full wp-image-6190\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-1.png 1294w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-1-300x168.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-1-1024x574.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA09-1-768x430.png 768w\" sizes=\"auto, (max-width: 1294px) 100vw, 1294px\" \/><\/p>\n<p>Specify the sound to be played: this is an initial value that can be changed at runtime.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1.png\" alt=\"\" width=\"1400\" height=\"610\" class=\"alignnone size-full wp-image-6191\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1.png 1400w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1-300x131.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1-1024x446.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA10-1-768x335.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/p>\n<p>For testing purposes, set the Loop Settings to &#8220;Loop&#8221; in the Details panel.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11-1.png\" alt=\"\" width=\"944\" height=\"617\" class=\"alignnone size-full wp-image-6192\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11-1.png 944w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11-1-300x196.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA11-1-768x502.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/p>\n<p>Now you can place the Actor in the level and position it over the character&#8217;s mouth.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-1.png\" alt=\"\" width=\"939\" height=\"751\" class=\"alignnone size-full wp-image-6193\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-1.png 939w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-1-300x240.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA12-1-768x614.png 768w\" sizes=\"auto, (max-width: 939px) 100vw, 939px\" \/><\/p>\n<p>If you run the game at this point, you should be able to hear the character talking.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1.png\" alt=\"\" width=\"1089\" height=\"664\" class=\"alignnone size-full wp-image-6194\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1.png 1089w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1-300x183.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1-1024x624.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA13-1-768x468.png 768w\" sizes=\"auto, (max-width: 1089px) 100vw, 1089px\" \/><\/p>\n<h5>Setting the distance attenuation<\/h5>\n<p>In order to apply distance attenuation to the sound, right-click in the Content Browser and select &#8220;ADX Atom&#8221; \u2192 &#8220;Atom Attenuation&#8221;. The attenuation curve that is created will determine how the volume of the sound source changes as a function of its distance from the listener.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1.png\" alt=\"\" width=\"1234\" height=\"930\" class=\"alignnone size-full wp-image-6195\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1.png 1234w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1-300x226.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1-1024x772.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA14-1-768x579.png 768w\" sizes=\"auto, (max-width: 1234px) 100vw, 1234px\" \/><\/p>\n<p>Although you can create a custom distance attenuation curve tailored to your specific requirements, in this case, we will keep the default settings<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15-1.png\" alt=\"\" width=\"618\" height=\"262\" class=\"alignnone size-full wp-image-6196\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15-1.png 618w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA15-1-300x127.png 300w\" sizes=\"auto, (max-width: 618px) 100vw, 618px\" \/><\/p>\n<p>Next, you need to specify the newly created file in the Attenuation Settings of the Atom component.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA16.png\" alt=\"\" width=\"1400\" height=\"808\" class=\"alignnone size-full wp-image-6197\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA16.png 1400w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA16-300x173.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA16-1024x591.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA16-768x443.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/p>\n<p>As you move around the character or move the camera, you will now notice the distance attenuation taking effect.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA17.png\" alt=\"\" width=\"831\" height=\"532\" class=\"alignnone size-full wp-image-6198\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA17.png 831w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA17-300x192.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA17-768x492.png 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/p>\n<h5>Adding noise over the threshold distance<\/h5>\n<p>Next, we want to monitor the distance between characters, and when it reaches a given threshold, start playing some noise at the same time. To achieve this, let\u2019s first add a new Atom component for the noise.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA18.png\" alt=\"\" width=\"582\" height=\"343\" class=\"alignnone size-full wp-image-6199\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA18.png 582w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA18-300x177.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/p>\n<p>As expected, we specify the noise Cue.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA19.png\" alt=\"\" width=\"1400\" height=\"606\" class=\"alignnone size-full wp-image-6200\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA19.png 1400w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA19-300x130.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA19-1024x443.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA19-768x332.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/p>\n<p>We uncheck &#8220;Auto Activate&#8221; so it will not start playing automatically.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA20.png\" alt=\"\" width=\"745\" height=\"909\" class=\"alignnone size-full wp-image-6201\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA20.png 745w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA20-246x300.png 246w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/p>\n<p>It is time to go to the Event Graph and add a couple of variables:<br \/>\n\u2022\t&#8221; bVoiceEffect &#8220;: Boolean type. It will determine whether we need to apply an effect.<br \/>\n\u2022\t&#8221; ThresholdDistance &#8220;: Float type. This value determines from what point the effect must be applied.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA21.png\" alt=\"\" width=\"412\" height=\"500\" class=\"alignnone size-full wp-image-6202\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA21.png 412w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA21-247x300.png 247w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/p>\n<p>Compile and specify an initial value of 1000 for &#8221; ThresholdDistance &#8220;, which corresponds to 1000 units (10 meters).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA22.png\" alt=\"\" width=\"473\" height=\"640\" class=\"alignnone size-full wp-image-6203\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA22.png 473w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA22-222x300.png 222w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/p>\n<p>In the Blueprint, the processing begins from the Event Tick. First, the distance is branched depending on whether an effect is applied or not.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA23.png\" alt=\"\" width=\"779\" height=\"412\" class=\"alignnone size-full wp-image-6204\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA23.png 779w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA23-300x159.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA23-768x406.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA23-390x205.png 390w\" sizes=\"auto, (max-width: 779px) 100vw, 779px\" \/><\/p>\n<p>On the &#8220;False&#8221; side, we first determine whether the distance is greater than a certain amount.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA24.png\" alt=\"\" width=\"1092\" height=\"650\" class=\"alignnone size-full wp-image-6205\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA24.png 1092w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA24-300x179.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA24-1024x610.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA24-768x457.png 768w\" sizes=\"auto, (max-width: 1092px) 100vw, 1092px\" \/><\/p>\n<p>If the distance is high, &#8220;bVoiceEffect&#8221; is set to True and the noise sound is played.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA25.png\" alt=\"\" width=\"1215\" height=\"659\" class=\"alignnone size-full wp-image-6206\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA25.png 1215w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA25-300x163.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA25-1024x555.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA25-768x417.png 768w\" sizes=\"auto, (max-width: 1215px) 100vw, 1215px\" \/><\/p>\n<p>If &#8220;bVoiceEffect&#8221; is True, we check whether the distance is still long enough.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA26.png\" alt=\"\" width=\"1166\" height=\"661\" class=\"alignnone size-full wp-image-6207\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA26.png 1166w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA26-300x170.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA26-1024x581.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA26-768x435.png 768w\" sizes=\"auto, (max-width: 1166px) 100vw, 1166px\" \/><\/p>\n<p>If this is a short distance, we set &#8220;bVoiceEffect&#8221; back to False and stop the noise.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA27.png\" alt=\"\" width=\"1166\" height=\"661\" class=\"alignnone size-full wp-image-6208\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA27.png 1166w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA27-300x170.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA27-1024x581.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA27-768x435.png 768w\" sizes=\"auto, (max-width: 1166px) 100vw, 1166px\" \/><\/p>\n<p>The overall event graph looks as depicted below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA28.png\" alt=\"\" width=\"1351\" height=\"735\" class=\"alignnone size-full wp-image-6209\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA28.png 1351w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA28-300x163.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA28-1024x557.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA28-768x418.png 768w\" sizes=\"auto, (max-width: 1351px) 100vw, 1351px\" \/><\/p>\n<p>If you play the game in this state, when the characters move away from each other, noise will be added to their voices. When they get closer, the noise will stop.<\/p>\n<h5>Applying an effect based on distance<\/h5>\n<p>Using AISAC control, we can implement a system where the voice becomes gradually harder to hear as the distance increases.<\/p>\n<p>When &#8220;VoiceEffect&#8221; is True, meaning the characters are far apart, and the Branch node is False, meaning the distance remains far, we use the AISAC control (using Set Aisac Control by Name node).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA29.png\" alt=\"\" width=\"965\" height=\"649\" class=\"alignnone size-full wp-image-6210\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA29.png 965w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA29-300x202.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA29-768x517.png 768w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/p>\n<p>We map the effect to the distance so that it is maximized when the distance exceeds 10,000 units. The Map Range Clamped node is<br \/>\nuseful for converting a distance from 1000 to 10,000 units to an AISAC control value from 0.0 to 1.0. The value assigned to &#8220;Value&#8221; is returned as a numerical scale from &#8220;In RangeA to B&#8221; to &#8220;Out RangeA to B.&#8221; By connecting this value to the &#8220;Value&#8221; of the Set Aisac Control by Name node, we get an AISAC control value based on the distance.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA30.png\" alt=\"\" width=\"965\" height=\"649\" class=\"alignnone size-full wp-image-6211\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA30.png 965w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA30-300x202.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA30-768x517.png 768w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/p>\n<p>A good practice is to reset the AISAC control value of the voice effect to &#8220;0.0&#8221; when turning off the noise. (This time, the AISAC control value is fluctuating between &#8220;0.0 and 1.0&#8221;, but if the minimum value were different, we would definitely need to reset it).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA31.png\" alt=\"\" width=\"1032\" height=\"638\" class=\"alignnone size-full wp-image-6212\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA31.png 1032w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA31-300x185.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA31-1024x633.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/07\/EA31-768x475.png 768w\" sizes=\"auto, (max-width: 1032px) 100vw, 1032px\" \/><\/p>\n<p>Hearing voices without distance attenuation no matter where you are may feel unnatural, but it is sometimes necessary in a game. By adding some light audio effects and artifacts, the designer can make it clear to the player that the character speaking is actually transmitting, making it more natural. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first part of this tutorial, we prepared an ADX Cue Sheet that includes both voice and noise Cues.<\/p>\n","protected":false},"author":2,"featured_media":6214,"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-6182","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\/6182","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=6182"}],"version-history":[{"count":1,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6182\/revisions"}],"predecessor-version":[{"id":6213,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6182\/revisions\/6213"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/6214"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=6182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=6182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=6182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}