{"id":3581,"date":"2021-11-18T17:50:44","date_gmt":"2021-11-18T08:50:44","guid":{"rendered":"https:\/\/blog.criware.com\/?p=3581"},"modified":"2024-05-21T10:38:27","modified_gmt":"2024-05-21T01:38:27","slug":"explosion-system","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2021\/11\/18\/explosion-system\/","title":{"rendered":"Explosion System"},"content":{"rendered":"<p>In this post, we explore how REACT can be used to automatically adjust the volumes and effects of a group of sounds when triggering an explosion.<\/p>\n<div style=\"text-align:center; max-width: 800px; margin: 0 auto;\">\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3581-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/Explosion-system-video.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/Explosion-system-video.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/Explosion-system-video.mp4<\/a><\/video><\/div>\n<\/div>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Explosions<\/h2>\n<p>For this example, the explosions are designed as a combination of two layers: a rocket sound at the start, quickly followed by an explosion blast. The Rocket and Blast layers have their own Random No Repeat Cues; each of them containing several samples.<\/p>\n<p>The parent Polyphonic Cue is created by simply dragging &amp; dropping the Rocket and Blast Cues on different Tracks, which creates Cue Links. Once this is done, we just need to adjust the timing of the Blast region on the timeline, to make it start about 400ms after the Rocket region.<\/p>\n<p>To get even more variation when triggering the Cue, random ranges are also assigned to the Cue\u2019s Volume and Pitch parameters. Then, the Blast\u2019s Playback Timing Random parameter is set to 300ms, allowing us to slightly randomize its playback time.<\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/01-Rocket-Random-Cue.jpg\" alt=\"01 Rocket Random Cue\"\/><\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/02-Explosion-Cue.jpg\" alt=\"02 Explosion Cue\"\/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Ambience<\/h2>\n<p>Now that we have created a satisfying explosion Cue, let\u2019s design the background ambience, which will allow us to showcase the effect of the REACT system. This ambience is also made of two layers. The first one is a simple Cue containing a looping sample, acting as the ambience bed. The second layer is made of several distant explosion samples put in a Random No Repeat Cue. Since we want to play the ambience layer continuously, the Playback Mode is set to PlayList: each time a sound has played, it will jump to the next one and so on&#8230; In both Cues, the lowpass filter is activated in the Filter section of each track.<\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/03-Warfare-Cue.jpg\" alt=\"03 Warfare Cue\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/04-Lowpass-filter.jpg\" alt=\"04 Lowpass filter\"\/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Ducking with REACT<\/h2>\n<p>With the Cues all set up, it\u2019s time to configure REACT to apply a ducking effect on the ambience when an explosion is triggered. First, let\u2019s assign Categories to the Cues. Categories are used to organize Cues and to control them in batch. For example, REACT uses Categories to determine which sounds are triggers and which sounds should be affected when the triggers are played. In this case, we create an Ambience and an Explosion categories. We drag &amp; drop our two ambience Cues on the Ambience Category in the project tree, and do the same with the Blast Cue for the Explosion Category. This means that only the Blast sound will trigger the ducking, and not the Rocket sound.<\/p>\n<p>We can now create a REACT object, that we call Explosion Ducking. \u00a0The Changing Category is set to Ambience, and the Trigger Category to Explosion. The REACT Type is set to Ducker (this should be the default). For the Change Parameter, we select an AISAC and rename it Ducking AISAC, while we set the Change Level Value to 0.<\/p>\n<p>Once all this configured, you can adjust the timing of the REACT to your liking. For this type of sound, we recommend having a fast Change Time (around 100 ms), a Fixed Hold Time of 1 or 2 seconds, and a longer Return Time of about 3 to 5 seconds, depending on how long are your explosion sounds.<\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/05-Ducking-REACT.jpg\" alt=\"05 Ducking REACT\"\/><\/p>\n<p>Finally, we have to assign the Ducking AISAC to the Ambience Cues. For both the Background and Distant Explosion Cues, we create an AISAC that controls the Volume and the Biquad cutoff. The amount of attenuation after each explosion will be determined by the curve we draw for the AISAC.<\/p>\n<p>To test this automatic ducking system, go to the Session window, and start your ambience Cues. You should hear their level decrease once an explosion Cue is triggered, and progressively come back after that.<\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/06-Ducking-AISAC.jpg\" alt=\"06 Ducking AISAC\"\/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Boosting sounds with REACT<\/h2>\n<p>It is also possible to amplify other sounds with REACT. For example, we may want to add a sine tone after for a couple of seconds. We create a simple Cue with a looping sine wave that we assign to a new Category called SFX. This Cue should only be played when an explosion occurs. To ensure that, we can use an Action Track in our Blast Cue that will start and stop the Sine Cue.<\/p>\n<p>The steps are:<\/p>\n<ul>\n<li>Create an Action Track on the Blast Cue<\/li>\n<li>Drag &amp; drop the Sine Cue on the Action Track to create a target<\/li>\n<li>On the Action Track, create Start and Stop Actions aligned with the beginning and the end of the Materials in the Blast Cue.<\/li>\n<\/ul>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/07-Action-Track.jpg\" alt=\"07 Action Track\"\/><\/p>\n<p>Using the same process than previously, we create a new REACT object where the SFX category will be changed by the Explosion Category using an AISAC-Control named Sine AISAC. The Change Time of the REACT object should be longer in this case (around 1 second) while the Return Time should be shorter because we don\u2019t want the Sine wave to last too long.<\/p>\n<p>Finally, we just need to create the AISAC that will be driving the volume of the Sine Cue. However, instead of lowering the volume when the AISAC approaches 0, we increase it.\u00a0 Each time an Explosion is triggered, the Sine wave will come and leaving smoothly, reinforcing the sound.<\/p>\n<p><img decoding=\"async\" style=\"width:938px;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/08-Sine-REACT.jpg\" alt=\"08 Sine REACT\" \/><\/p>\n<p>REACT is a great to automate sound changes based on what Cues are triggered in the game. How will you use it in your game?<\/p>\n<p><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align:center;\">\n<a style=\"display: block;\n    border: 1px solid #ccc;\n    padding: 20px;\n    max-width: 100%;\n    margin: 0 auto;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/11\/Explosion_System_Project.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" style=\"\n    display: block;\n    margin: 0 auto;\n\">Explosion_System_Project.zip<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we explore how REACT can be used to automatically adjust the volumes and effects of a group<\/p>\n","protected":false},"author":2,"featured_media":5504,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[5,7],"tags":[],"class_list":["post-3581","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adx","category-tutorials"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3581","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=3581"}],"version-history":[{"count":10,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3581\/revisions"}],"predecessor-version":[{"id":3601,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3581\/revisions\/3601"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/5504"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=3581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=3581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=3581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}