{"id":3193,"date":"2020-12-14T08:27:26","date_gmt":"2020-12-13T23:27:26","guid":{"rendered":"https:\/\/blog.criware.com\/?p=3193"},"modified":"2020-12-14T09:04:57","modified_gmt":"2020-12-14T00:04:57","slug":"ambience-design-in-atom-craft-part-1-2","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2020\/12\/14\/ambience-design-in-atom-craft-part-1-2\/","title":{"rendered":"Ambience Design in Atom Craft \u2013 Part 1"},"content":{"rendered":"<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Introduction<\/h2>\n<p>Ambience often doesn\u2019t stand in the limelight like music or player-driven SFX. However, much like music, ambience is essential for setting the game\u2019s tone and fleshing out the soundscape. These sounds can be the subtle din of a room tone or the melodic chirruping of birds. Regardless of the form these sounds take, we can use a few Atom Craft tricks to play them back in exciting ways.<\/p>\n<p>In this blog, we will create a sophisticated ambience system that can be played in-engine with a single event (i.e., all the logic will be built-in). This content will form part of a larger series on making the most of ADX2 for ambience design.<\/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-3193-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1.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\/2020\/12\/2020-12_AmbienceP1.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\">2020-12_AmbienceP1.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;\">Loops<\/h2>\n<p>When designing ambiences, a balance needs to be struck between localized sources and general background ambience. Having one big stereo ambience will save on voices, but the file will need to have a long duration to avoid noticeable repetition, and it won\u2019t effectively support discrete 3D spatialization. Using several smaller files will require more voices, but this will support dynamic playback and tighter sync with visuals.<\/p>\n<p>However, although longer files are less flexible than a more granular approach, we can still use some tricks to add randomization. A simple approach is to cut longer ambiences down and crossfade between them, playing back the chunks in random order. We can add fades in Atom Craft, but we can also bake them in using our DAW. If they are baked-in, all we need to do is:<\/p>\n<ul>\n<li>Create a Shuffle Cue named \u201cNature_Ambience_Container\u201d\n<ul>\n<li>Drag in all the stereo ambience Waveform Materials<\/li>\n<\/ul>\n<\/li>\n<li>Create a Polyphonic Cue named \u201cNature_Ambience_Loop\u201d\n<ul>\n<li>Drag in Nature_Ambience_Container Cue to Link them<\/li>\n<li>Create a new Sequence Loop Marker\n<ul>\n<li>Set Marker Start Time = 0 [msec]<\/li>\n<li>Set Market End Time = 9000 [msec]<\/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\/2020\/12\/2020-12_AmbienceP1-1.png\" alt=\"2020-12_AmbienceP1-1\" width=\"994\" height=\"359\" class=\"alignnone size-full wp-image-3199\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-1.png 994w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-1-300x108.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-1-768x277.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>Sequence Loops don\u2019t stop Track playback early, but they will trigger subsequent Cues early. Since our fades are baked in, this behavior gives the effect of a seamless transition.<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">One-shots \u2013 Simple<\/h2>\n<p>Random Containers can be used for more than just random playback. Since this feature allows for setting the <em>Random Weight<\/em> for playback probability, we can use a one-shot sound with this setting to determine if anything should play at all! If the combined percentage is less than 100, playback won\u2019t always trigger. This approach is perfect for play-and-forget ambiences, where we don\u2019t want additional work on the engine side.<\/p>\n<p>Let\u2019s add a cawing crow that plays back automatically. For this, we need to:<\/p>\n<ul>\n<li>Create a Random Cue named \u201cCrow_Caw\u201d\n<ul>\n<li>Drag in the relevant Waveform Material<\/li>\n<li>In the Inspector\n<ul>\n<li>Set Random Weight = 50 [percent]<\/li>\n<li>Set Pitch Random Range = 60 [cents]<\/li>\n<li>Set Pan 3D Angle Random = 90 [degrees]<\/li>\n<li>Set Multiple Playback Prohibition Time = 10000 [msec]<\/li>\n<\/ul>\n<\/li>\n<li>Drag onto Nature_Ambience_Loop to Link them\n<ul>\n<li>For this Cue Link, set Playback Timing Random = 5000 [msec]<\/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\/2020\/12\/2020-12_AmbienceP1-2.png\" alt=\"2020-12_AmbienceP1-2\" width=\"994\" height=\"468\" class=\"alignnone size-full wp-image-3200\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-2.png 994w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-2-300x141.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-2-768x362.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>With only one waveform file, we have created a decent amount of randomization. Weight and prohibition time will ensure the sound doesn\u2019t play too often, especially since our main loop is only 9 seconds long. Adding a Random Timing offset ensures that it doesn\u2019t trigger on exact multiples of 9 seconds (when it does playback eventually). And pitch and pan will add some variation.<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">One-shots \u2013 Advanced<\/h2>\n<p>To get even more variety out of a small sample pool, we can use Automation. This technique works especially well for ambiences like wind and waves, which have an ebb and flow. To design this, we can:<\/p>\n<ul>\n<li>Create a Random No Repeat Cue named \u201cWind_Nature_Gust\u201d\n<ul>\n<li>Drag in the relevant Waveform Material<\/li>\n<li>Duplicate the newly created Track twice<\/li>\n<li>On each Track, click <em>No Automations<\/em> and\n<ul>\n<li>Add \u2192 Volume<\/li>\n<li>Add \u2192 Bandpass Filter \u2192 Bandpass \u2013 Cutoff High<\/li>\n<li>Create some custom curves, ensuring the same start and end values<\/li>\n<\/ul>\n<\/li>\n<li>In the Inspector\n<ul>\n<li>Set Pitch Random Weight = 600 [cents]<\/li>\n<\/ul>\n<\/li>\n<li>Drag onto Nature_Ambience_Loop to Link them\n<ul>\n<li>For this Cue Link, set Playback Timing Random = 1500 [msec]<\/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\/2020\/12\/2020-12_AmbienceP1-3.png\" alt=\"2020-12_AmbienceP1-3\" width=\"994\" height=\"395\" class=\"alignnone size-full wp-image-3201\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-3.png 994w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-3-300x119.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-3-768x305.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>We now have a few different variations, each with custom curves built-in. Since designing these curves is a manual process, we can ensure that they sound natural. And it also avoids having to create some custom logic on the engine-side. If we duplicate our Cue Link and apply offset randomization, we can create an even more natural effect, as the fade-out of one Cue will be masked by the other.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-4-1.png\" alt=\"2020-12_AmbienceP1-4\" width=\"994\" height=\"470\" class=\"alignnone size-full wp-image-3207\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-4-1.png 994w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-4-1-300x142.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/12\/2020-12_AmbienceP1-4-1-768x363.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Ambience often doesn\u2019t stand in the limelight like music or player-driven SFX. However, much like music, ambience is essential<\/p>\n","protected":false},"author":2,"featured_media":3204,"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-3193","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\/3193","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=3193"}],"version-history":[{"count":9,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3193\/revisions"}],"predecessor-version":[{"id":3211,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3193\/revisions\/3211"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/3204"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=3193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=3193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=3193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}