{"id":6216,"date":"2025-08-05T19:32:23","date_gmt":"2025-08-05T10:32:23","guid":{"rendered":"https:\/\/blog.criware.com\/?p=6216"},"modified":"2025-08-06T17:29:55","modified_gmt":"2025-08-06T08:29:55","slug":"charging-weapon-sounds-part-1","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2025\/08\/05\/charging-weapon-sounds-part-1\/","title":{"rendered":"Charging Weapon Sounds [Part 1]"},"content":{"rendered":"<p>In this 2-part tutorial, we will learn how to implement charging weapon sounds (and the subsequent shots) using Unreal Engine 5 and ADX for UE.<\/p>\n<p>It is common to see the player charge a weapon in a shooting game, a magic spell in an RPG, or a special attack in a fighting game. The concept is always the same:<br \/>\n\t\u2022 Holding down a specific button will start the charging.<br \/>\n\t\u2022 The charging sound starts out low, and progressively gets higher while the button is held.<br \/>\n\t\u2022 Releasing the button ends the charge and triggers the release sound (e.g., a laser shot, a spell, a fighting combo, etc.).<br \/>\n\t\u2022 The release sound depends on the charging duration.<\/p>\n<p>In our implementation in ADX, the charging sound will be smoothly controlled via an AISAC, while the release sound will use a Switch Cue based on a game variable.<br \/>\nIn this first part, 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: <a href=\"https:\/\/game.criware.jp\/en\/products\/adx-le_en\/\">https:\/\/game.criware.jp\/en\/products\/adx-le_en\/<\/a><\/p>\n<h5>Importing the audio files<\/h5>\n<p>The first step is to prepare and import the sounds we will use. In this example, the &#8220;SE_Charge&#8221; wave file will play continuously while charging, and three different shot sounds &#8220;SE_ShotA\u201d, \u201cSE_ShotB\u201d, and \u201cSE_ShotC\u201d will be triggered based on the charging state. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA01.png\" alt=\"\" width=\"392\" height=\"264\" class=\"alignnone size-full wp-image-6217\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA01.png 392w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA01-300x202.png 300w\" sizes=\"auto, (max-width: 392px) 100vw, 392px\" \/><\/p>\n<p>Make sure to prepare a sound effect that can be smoothly looped for &#8220;SE_Charge&#8221;, Once imported, select it in the Material Tree, set the Overwrite Loop Information to \u201cTrue\u201d and Loop Type to \u201cLoop\u201d. This will make it automatically loop.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA02.png\" alt=\"\" width=\"539\" height=\"344\" class=\"alignnone size-full wp-image-6218\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA02.png 539w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA02-300x191.png 300w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><\/p>\n<h5> Creating the charging Cue<\/h5>\n<p>To create the charging Cue, we will right-click on the Cue Sheet in the Work Unit Tree and select &#8220;New Object&#8221; -> &#8220;Create Cue &#8216;Polyphonic&#8221;. Give it a name that is easy to understand.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA03.png\" alt=\"\" width=\"1353\" height=\"677\" class=\"alignnone size-full wp-image-6219\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA03.png 1353w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA03-300x150.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA03-1024x512.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA03-768x384.png 768w\" sizes=\"auto, (max-width: 1353px) 100vw, 1353px\" \/><\/p>\n<p>Once the Cue is created, simply drop the &#8220;SE_Charge&#8221; Material on it. Play it to verify that it is playing as a loop. from the material tree to place it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA04.png\" alt=\"\" width=\"827\" height=\"583\" class=\"alignnone size-full wp-image-6220\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA04.png 1182w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA04-300x211.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA04-1024x722.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA04-768x541.png 768w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><\/p>\n<p>Right-click on an empty space in the track list 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\/08\/EA05.png\" alt=\"\" width=\"556\" height=\"503\" class=\"alignnone size-full wp-image-6221\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA05.png 795w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA05-300x271.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA05-768x694.png 768w\" sizes=\"auto, (max-width: 556px) 100vw, 556px\" \/><\/p>\n<p>Give it a name and set the AISAC graph type to &#8220;Pitch.&#8221; The idea is that the longer the charge, the higher and faster the sound will get.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA06.png\" alt=\"\" width=\"476\" height=\"201\" class=\"alignnone size-full wp-image-6222\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA06.png 476w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA06-300x127.png 300w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><\/p>\n<p>Select the &#8220;Pitch&#8221; graph and edit it so that it progressively increases towards the right.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA07.png\" alt=\"\" width=\"969\" height=\"630\" class=\"alignnone size-full wp-image-6223\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA07.png 1385w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA07-300x195.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA07-1024x666.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA07-768x500.png 768w\" sizes=\"auto, (max-width: 969px) 100vw, 969px\" \/><\/p>\n<p>Start the playback and move the slider to hear how the sound evolves. The AISAC value on the left will be used when the charging begins, while the value on the right will be used when the charge reaches its maximum. Adjust the graph to your liking and depending on the type of sound you are playing.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA08.png\" alt=\"\" width=\"895\" height=\"603\" class=\"alignnone size-full wp-image-6224\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA08.png 1279w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA08-300x202.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA08-1024x690.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA08-768x518.png 768w\" sizes=\"auto, (max-width: 895px) 100vw, 895px\" \/><\/p>\n<h5>Creating the shooting Cue<\/h5>\n<p>Let\u2019s now create the Cue that will be triggered when shooting the weapon. Right-click on the Cue Sheet in the Work Unit Tree and select &#8220;New Object&#8221; -> &#8220;Create cue &#8216;Switch'&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09.png\" alt=\"\" width=\"880\" height=\"562\" class=\"alignnone size-full wp-image-6225\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09.png 1258w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09-300x191.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09-1024x654.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09-768x490.png 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/p>\n<p>Place the 3 shooting sounds on separate Tracks in the Cue.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09b.png\" alt=\"\" width=\"898\" height=\"582\" class=\"alignnone size-full wp-image-6226\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09b.png 1283w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09b-300x194.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09b-1024x663.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA09b-768x497.png 768w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\" \/><\/p>\n<p>We will now add a &#8220;Game Variable&#8221; that will allow us to determine which sound to play. Right-click on the Project Tree and select &#8220;New Object&#8221; -> &#8220;Create Game Variable&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA10.png\" alt=\"\" width=\"906\" height=\"602\" class=\"alignnone size-full wp-image-6227\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA10.png 906w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA10-300x199.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA10-768x510.png 768w\" sizes=\"auto, (max-width: 906px) 100vw, 906px\" \/><\/p>\n<p>Name the game variable. In this example, we named it &#8220;ChargeLv&#8221;.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA11.png\" alt=\"\" width=\"398\" height=\"412\" class=\"alignnone size-full wp-image-6228\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA11.png 398w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA11-290x300.png 290w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/p>\n<p>Select the shooting Cue and open the &#8220;Switches&#8221; tab in the Inspector.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12.png\" alt=\"\" width=\"1782\" height=\"731\" class=\"alignnone size-full wp-image-6229\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12.png 1782w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12-300x123.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12-1024x420.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12-768x315.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA12-1536x630.png 1536w\" sizes=\"auto, (max-width: 1782px) 100vw, 1782px\" \/><\/p>\n<p>Assign the &#8220;ChargeLv&#8221; variable we just created to the Switch variable.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA13.png\" alt=\"\" width=\"356\" height=\"529\" class=\"alignnone size-full wp-image-6230\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA13.png 509w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA13-202x300.png 202w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/p>\n<p>Press on the &#8220;Evenly&#8221; button to spread the sounds along the variable values in the graph.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA14.png\" alt=\"\" width=\"499\" height=\"369\" class=\"alignnone size-full wp-image-6231\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA14.png 499w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA14-300x222.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/p>\n<p>It is time to check the results in the Session Window.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA15.png\" alt=\"\" width=\"837\" height=\"332\" class=\"alignnone size-full wp-image-6234\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA15.png 837w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA15-300x119.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA15-768x305.png 768w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><\/p>\n<p>To do this, drag and drop the shooting Cue into the Session window.<br \/>\nPress the &#8220;Game Variables&#8221; button to edit the game variables for testing purposes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16.png\" alt=\"\" width=\"1395\" height=\"777\" class=\"alignnone size-full wp-image-6235\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16.png 1395w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16-300x167.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16-1024x570.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16-768x428.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA16-800x445.png 800w\" sizes=\"auto, (max-width: 1395px) 100vw, 1395px\" \/><\/p>\n<p>Change the value of the game variable &#8220;ChargeLv&#8221; and confirm that the sound changes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA17.png\" alt=\"\" width=\"765\" height=\"717\" class=\"alignnone size-full wp-image-6236\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA17.png 765w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA17-300x281.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/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\/08\/EA18.png\" alt=\"\" width=\"640\" height=\"423\" class=\"alignnone size-full wp-image-6237\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA18.png 915w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA18-300x198.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA18-768x507.png 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/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\/08\/EA19.png\" alt=\"\" width=\"760\" height=\"498\" class=\"alignnone size-full wp-image-6238\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA19.png 1086w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA19-300x196.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA19-1024x670.png 1024w, https:\/\/blog.criware.com\/wp-content\/uploads\/2025\/08\/EA19-768x503.png 768w\" sizes=\"auto, (max-width: 760px) 100vw, 760px\" \/><\/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 charging weapon sounds!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this 2-part tutorial, we will learn how to implement charging weapon sounds (and the subsequent shots) using Unreal Engine<\/p>\n","protected":false},"author":2,"featured_media":6247,"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-6216","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\/6216","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=6216"}],"version-history":[{"count":9,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6216\/revisions"}],"predecessor-version":[{"id":6246,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/6216\/revisions\/6246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/6247"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=6216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=6216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=6216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}