{"id":5262,"date":"2024-06-03T13:11:26","date_gmt":"2024-06-03T04:11:26","guid":{"rendered":"https:\/\/blog.criware.com\/?p=5262"},"modified":"2024-06-03T13:11:26","modified_gmt":"2024-06-03T04:11:26","slug":"bullet-time","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2024\/06\/03\/bullet-time\/","title":{"rendered":"Bullet Time"},"content":{"rendered":"<p>Popularized by \u201cThe Matrix\u201d, bullet time is a classic visual effect in action movies and games. Time is temporarily slowed down so the hero can perceive and react to events with greater accuracy and agility. Of course, sounds should also slow down during bullet time, so let\u2019s see how to implement this in Atom Craft!<\/p>\n<div style=\"max-width: 700px; margin: 0 auto; margin-bottom: 20px; border: 1px solid #aaa;\">\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-5262-1\" width=\"800\" height=\"423\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/video_bullettime.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/video_bullettime.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/video_bullettime.mp4<\/a><\/video><\/div>\n<\/div>\n<h1 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Assets Creation<\/h1>\n<p>In addition to your regular sound effects, we will need to prepare a few assets to implement the bullet time effect:<\/p>\n<ul>\n<li>A one-shot sound that will be played when the bullet time is activated.<\/li>\n<li>Another sound for when it ends.<\/li>\n<li>An ambience that will play during the bullet time.<\/li>\n<\/ul>\n<p>It is also recommended to create special versions of your assets to differentiate them and improve their sound (i.e., not only pitch-shifting them). This can involve adding or removing layers to the sound and applying special filtering or other effects.<\/p>\n<p>For instance, in our demo project, we created a slow-motion version of the gunshots that we used only during the bullet time.<\/p>\n<h1 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Implementation<\/h1>\n<p>This effect can be easily created with a REACT object:<\/p>\n<ul>\n<li>Start by adding a dedicated <strong>Category Group<\/strong> for the bullet time.<\/li>\n<li>Create two <strong>Categories<\/strong>: \u201cTrigger\u201d and \u201cTarget\u201d.<\/li>\n<li>Assign all the sounds that will be affected by the bullet time to the Target category (usually Foley, weapons, ambiences, environmental sounds, etc.).<\/li>\n<li>Finally, create an <strong>AISAC Control<\/strong> called \u201cBulletTime\u201d.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5264\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/01-Categories-and-AISAC.png\" alt=\"01 Categories and AISAC\" width=\"387\" height=\"302\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/01-Categories-and-AISAC.png 387w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/01-Categories-and-AISAC-300x234.png 300w\" sizes=\"auto, (max-width: 387px) 100vw, 387px\" \/><\/p>\n<p>Now we can use these Categories and the AISAC to configure the REACT object:<\/p>\n<ul>\n<li>Create a new <strong>REACT<\/strong> object of type <em>Ducker<\/em>.<\/li>\n<li>Set \u201cTarget\u201d as <em>Changing Category<\/em> and \u201cTrigger\u201d as <em>Trigger Category<\/em>.<\/li>\n<li>Change the <em>Hold Type<\/em> to <em>Fixed Time<\/em>.<\/li>\n<li>Set <em>Change Time<\/em> at 1000 ms, <em>Return Time<\/em> at 2000 ms, and <em>Hold Time<\/em> to 6000 ms.<\/li>\n<li>Select the \u201cBulletTime\u201d AISAC as the <em>Change Parameter<\/em> and set the <em>Change Level Value<\/em> to 0.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5265\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/02-REACT.png\" alt=\"02 REACT\" width=\"1325\" height=\"550\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/02-REACT.png 1325w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/02-REACT-300x125.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/02-REACT-768x319.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/02-REACT-1024x425.png 1024w\" sizes=\"auto, (max-width: 1325px) 100vw, 1325px\" \/><\/p>\n<p>Once the REACT object is ready, we need a Cue to Trigger the bullet time effect:<\/p>\n<ul>\n<li>Create a first <strong>Polyphonic Cue<\/strong> that only contains the bullet time ambience.<\/li>\n<li>Then, create a second <strong>Polyphonic Cue<\/strong>, and assign it to the Trigger Category.<\/li>\n<li>Insert a Track and place the Activation SFX at the beginning of the timeline.<\/li>\n<li>On the same Track, place the End SFX at the time corresponding to the <em>Hold Time<\/em> value.<\/li>\n<li>Create an <strong>Action Track<\/strong>, and set the bullet time ambiance Cue as the target.<\/li>\n<li>Add a <strong>Start Action<\/strong> at the beginning of the Cue, and a <strong>Stop Action<\/strong> a bit after the End SFX.<\/li>\n<li>Set the <em>Fade Time<\/em> of the Stop Action to 1000 ms.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5266\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/03-Trigger-Cue.png\" alt=\"03 Trigger Cue\" width=\"1327\" height=\"455\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/03-Trigger-Cue.png 1327w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/03-Trigger-Cue-300x103.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/03-Trigger-Cue-768x263.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/03-Trigger-Cue-1024x351.png 1024w\" sizes=\"auto, (max-width: 1327px) 100vw, 1327px\" \/><\/p>\n<p>The Cue should now be able to trigger the REACT object. We still need to use the AISAC system to apply the bullet time effect to the targeted Cues. In our example, these are just an ambiance Cue and a gunshot Cue. For the ambience, we will simply pitch down and fade the sound, while for the gunshots, we will crossfade the sound with the bullet time variation we prepared, in addition to pitch-shifting and filtering. Of course, you can make the bullet time affect other types of Cues if you wish.<\/p>\n<ul>\n<li>For the ambience, create an <strong>AISAC<\/strong> at the Cue level.<\/li>\n<li>Add <em>Volume<\/em>, <em>Pitch<\/em>, and <em>Bandpass<\/em> <em>\u2013 Cutoff High<\/em> graphs, and make the curve decrease when the AISAC value goes to 0.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5267\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/04-AISAC-Amb.png\" alt=\"04 AISAC Amb\" width=\"1069\" height=\"424\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/04-AISAC-Amb.png 1069w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/04-AISAC-Amb-300x119.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/04-AISAC-Amb-768x305.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/04-AISAC-Amb-1024x406.png 1024w\" sizes=\"auto, (max-width: 1069px) 100vw, 1069px\" \/><\/p>\n<p>More work is needed for the gunshot Cue:<\/p>\n<ul>\n<li>First, if it&#8217;s a Random cue, you should move the tracks into a <strong>Sub Sequence<\/strong>.<\/li>\n<li>Then, create a second Sub Sequence and place the special versions of the gunshot\u2019s assets into it.<\/li>\n<li>Now we can use an AISAC on each Sub Sequence and make them crossfade with a <em>Volume<\/em> graph.<\/li>\n<li>On the original Sub Sequence, also add a <em>Pitch<\/em>, and <em>Bandpass<\/em> <em>\u2013 Cutoff High,<\/em> to pitch down and muffle the sound as the AISAC goes to 0.<\/li>\n<li>You can also slightly adjust the Pitch of your special assets, or increase the send level to a dedicated Reverb Bus, in order to add more depth to the gunshots.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5268\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/05-AISAC-Gunshots.png\" alt=\"05 AISAC Gunshots\" width=\"1074\" height=\"768\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/05-AISAC-Gunshots.png 1074w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/05-AISAC-Gunshots-300x215.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/05-AISAC-Gunshots-768x549.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/05-AISAC-Gunshots-1024x732.png 1024w\" sizes=\"auto, (max-width: 1074px) 100vw, 1074px\" \/><\/p>\n<p>When the triggering Cue is played, the REACT object should automatically control the AISAC and create the bullet time effect. As usual, the project is included if you want to try it out for yourself.<\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align: center;\"><a style=\"display: block; border: 1px solid #ccc; padding: 20px; max-width: 100%; margin: 0 auto;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/03\/AtomCraft_Project_BulletTime.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" style=\"display: block; margin: 0 auto;\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" \/>AtomCraft_Project_BulletTime.zip<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Popularized by \u201cThe Matrix\u201d, bullet time is a classic visual effect in action movies and games. Time is temporarily slowed<\/p>\n","protected":false},"author":2,"featured_media":5280,"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-5262","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\/5262","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=5262"}],"version-history":[{"count":8,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/5262\/revisions"}],"predecessor-version":[{"id":5279,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/5262\/revisions\/5279"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/5280"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=5262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=5262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=5262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}