{"id":3268,"date":"2021-02-18T16:23:00","date_gmt":"2021-02-18T07:23:00","guid":{"rendered":"https:\/\/blog.criware.com\/?p=3268"},"modified":"2021-02-18T16:23:00","modified_gmt":"2021-02-18T07:23:00","slug":"ambience-design-part-3","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2021\/02\/18\/ambience-design-part-3\/","title":{"rendered":"Ambience Design Part 3"},"content":{"rendered":"<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Introduction<\/h2>\n<p>In this series, we will be looking at designing powerful and efficient systems for ambient playback. We created one-click ambiance playback in our previous two installments and set up some dynamic reverb switching.\n<\/p>\n<p>In this final part, we will add some location-based attenuation and implement everything into UE4.\n<\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px;\">\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3268-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_AmbienceP3.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_AmbienceP3.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_AmbienceP3.mp4<\/a><\/video><\/div>\n<\/div>\n<p><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align:center;\"><a style=\"display: inline-block; border: 1px solid #ccc; padding: 20px;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_AmbienceP3.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\">2021-02_AmbienceP3.zip<\/a>\n<\/div>\n<p><em>This project was created using CRI Atom Craft Ver.3.44.13<\/em><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Dynamic Volume<\/h2>\n<p>\nADX2 provides a host of different ways to manage the mix of our game. In many cases, we can combine several methods depending on what we are trying to achieve. The following example is simply one way in which we can achieve a dynamic state-based mix. The general idea is that we are creating custom mixes for the cave and forest snapshots that we created in part 2. This method will allow us to hear some of the forest ambience while in the cave and vice-versa. <\/p>\n<ul>\n<li>On DspBusSetting_0, create two new busses\n<ul>\n<li>Name them \u201cInside\u201d and \u201cOutside\u201d<\/li>\n<li>For each\n<ul>\n<li>Add a Bandpass effect<\/li>\n<li>Set the send to MasterOut<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>On the Cave snapshot\n<ul>\n<li>Set Outside volume slider to -9dB<\/li>\n<li>For Bandpass effect on Outside bus\n<ul>\n<li>Set Highest Cutoff = 1000<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_1.png\" alt=\"2021-02_1\" width=\"893\" height=\"585\" class=\"alignnone size-full wp-image-3276\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_1.png 893w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_1-300x197.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_1-768x503.png 768w\" sizes=\"auto, (max-width: 893px) 100vw, 893px\" \/><\/p>\n<ul>\n<li>On the Forest snapshot\n<ul>\n<li>Set Inside volume slider to -9dB<\/li>\n<li>For Bandpass effect on Inside bus\n<ul>\n<li>Set Highest Cutoff = 1000<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_2.png\" alt=\"2021-02_2\" width=\"893\" height=\"585\" class=\"alignnone size-full wp-image-3277\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_2.png 893w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_2-300x197.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_2-768x503.png 768w\" sizes=\"auto, (max-width: 893px) 100vw, 893px\" \/><\/p>\n<ul>\n<li>On BusMap_Default\n<ul>\n<li>Set DspBusName2 to Inside<\/li>\n<li>Set DspBusName3 to Outside<\/li>\n<\/ul>\n<\/li>\n<li>For Torch_Loop Cue, in the Inspector\n<ul>\n<li>Uncheck BusSend1<\/li>\n<li>Check BusSend2 (Inside)<\/li>\n<\/ul>\n<\/li>\n<li>For Nature_Ambience_Loop, in the Inspector\n<ul>\n<li>Uncheck BusSend1<\/li>\n<li>Check BusSend3 (Outside)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_3.png\" alt=\"2021-02_3\" width=\"671\" height=\"223\" class=\"alignnone size-full wp-image-3278\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_3.png 671w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_3-300x100.png 300w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/p>\n<p>\nThis set up reroutes the audio to separate busses, which then processes and attenuates the signal based on the player\u2019s location.<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">UE4<\/h2>\n<p>\nSince the heavy lifting was done inside Atom Craft, we don\u2019t need to do much work to set up basic implementation in UE4. After following the documentation to integrate ADX2 into our project, we can load up the First Person Blueprints template project as a simple test. Our example has a makeshift cave set up using the Box Geometry tool that has been extruded using the Brush Editing tool.\n<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Atom Cue<\/h2>\n<p>\nWe can drag-and-drop Atom Cues into our level from our Content Browser for sound sources that radiate outwards. This works well for spatialized sounds, such as our torch. Since we want to showcase discrete interior and exterior mixes, let\u2019s also place the Torch_Loop Cue into our cave. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_4.png\" alt=\"2021-02_4\" width=\"1359\" height=\"609\" class=\"alignnone size-full wp-image-3279\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_4.png 1359w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_4-300x134.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_4-768x344.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_4-1024x459.png 1024w\" sizes=\"auto, (max-width: 1359px) 100vw, 1359px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Atom Area Volume<\/h2>\n<p>\nOne of ADX2\u2019s newer UE4 features &#8211; the Atom Area Sound Volume, allows us to define custom shapes to fit our level geometry. As long as the player is inside this volume, they will hear the sounds that we have added to it. Since our template level is cube-shaped, this feature isn\u2019t essential, but it visually distinguishes our general ambience from our spatialized sound sources. <\/p>\n<p>\nSearch for \u201cAtom Area Sound Volume\u201d in the Place Actors panel, and adjust the size to fit the level by adjusting the coordinates under the Brush Settings heading in the Details panel. Then under Sound Atom Cue, add an Array element to Sounds and apply the Nature_Ambience_Loop Cue. Playback will trigger automatically by default, so nothing else needs to be done for this sound. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_5.png\" alt=\"2021-02_5\" width=\"687\" height=\"744\" class=\"alignnone size-full wp-image-3280\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_5.png 687w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_5-277x300.png 277w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Interior\/Exterior Switch<\/h2>\n<p>\nThe last feature we need to implement is a switch for our DSP Snapshots. This will require a little bit of Scripting with Blueprints but is still very simple. First, we need to navigate the Place Actors tab and search for a Trigger Volume. This is a standard UE4 feature and works similarly to the Atom Area Sound Volume. We can drag-and-drop it into our level and adjust the coordinates under the Brush Settings heading, this time to fit snuggly inside our cave.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_6.png\" alt=\"2021-02_6\" width=\"1435\" height=\"623\" class=\"alignnone size-full wp-image-3281\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_6.png 1435w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_6-300x130.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_6-768x333.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_6-1024x445.png 1024w\" sizes=\"auto, (max-width: 1435px) 100vw, 1435px\" \/><\/p>\n<p>\nAnd to set up our logic, we can navigate to the Blueprints tab at the top and select Open Level Blueprint. If our Trigger Volume is still highlighted in the World Outliner, right-clicking in our Event Graph will quickly show some related Actions. Let\u2019s add On Actor Begin Overlap and On Actor End Overlap Events for our Trigger Volume. We can then Get Default Asr Rack, send the returned value to an Apply Dsp Bus Snapshot action, and set the appropriate Snapshot Name. The result should look as follows:\n<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_7.png\" alt=\"2021-02_7\" width=\"878\" height=\"494\" class=\"alignnone size-full wp-image-3283\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_7.png 878w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_7-300x169.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2021\/02\/2021-02_7-768x432.png 768w\" sizes=\"auto, (max-width: 878px) 100vw, 878px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this series, we will be looking at designing powerful and efficient systems for ambient playback. We created one-click<\/p>\n","protected":false},"author":2,"featured_media":3274,"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-3268","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\/3268","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=3268"}],"version-history":[{"count":6,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3268\/revisions"}],"predecessor-version":[{"id":3285,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3268\/revisions\/3285"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/3274"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=3268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=3268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=3268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}