{"id":4826,"date":"2024-01-09T11:17:54","date_gmt":"2024-01-09T02:17:54","guid":{"rendered":"https:\/\/blog.criware.com\/?p=4826"},"modified":"2024-05-17T17:10:28","modified_gmt":"2024-05-17T08:10:28","slug":"adx2-beginners-guide-4-markers-and-actions","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2024\/01\/09\/adx2-beginners-guide-4-markers-and-actions\/","title":{"rendered":"ADX Beginner\u2019s Guide #4 \u2013 Markers and Actions"},"content":{"rendered":"<p>In the <a href=\"https:\/\/blog.criware.com\/index.php\/2023\/12\/06\/adx2-beginners-guide-3-selectors-and-game-variables\/\">previous blog<\/a> from this beginner\u2019s series, we used <em>Selectors<\/em> and <em>Game Variables<\/em> to create sound variations based on the game context. This time we will see how to create even more complex sound behaviours by adding <em>Sequence Markers<\/em> and <em>Actions<\/em> to the timeline of the Cues.<\/p>\n<h1 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Sequence Markers<\/h1>\n<p>A <strong>Sequence Marker<\/strong> is an object that triggers a specific behavior when the playback reaches its position on the Cue\u2019s timeline.<\/p>\n<p>The different types of markers will affect the playback in various ways:<\/p>\n<ul>\n<li><strong>Sequence Loop Marker<\/strong>: Adds a loop to the Sequence (unlike a material loop which is strictly limited to a Waveform Region). The start position, end position, and number of loops can be specified.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4827\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/01-Loop.png\" alt=\"01 - Loop\" width=\"1029\" height=\"456\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/01-Loop.png 1029w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/01-Loop-300x133.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/01-Loop-768x340.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/01-Loop-1024x454.png 1024w\" sizes=\"auto, (max-width: 1029px) 100vw, 1029px\" \/><\/p>\n<ul>\n<li><strong>Sequence Start Marker<\/strong>: Starts a sequence. It can be used to start the playback in the middle of a Waveform Region. When multiple Start Markers are present, the starting position will be selected randomly among them each time the Cue is triggered.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4828\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/02-Start.png\" alt=\"02 - Start\" width=\"1049\" height=\"466\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/02-Start.png 1049w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/02-Start-300x133.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/02-Start-768x341.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/02-Start-1024x455.png 1024w\" sizes=\"auto, (max-width: 1049px) 100vw, 1049px\" \/><\/p>\n<ul>\n<li><strong>Sequence End Marker<\/strong>: Ends a sequence. It can be used to stop the playback in the middle of a Waveform Region.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4829\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/03-End.png\" alt=\"03 - End\" width=\"1087\" height=\"459\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/03-End.png 1087w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/03-End-300x127.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/03-End-768x324.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/03-End-1024x432.png 1024w\" sizes=\"auto, (max-width: 1087px) 100vw, 1087px\" \/><\/p>\n<ul>\n<li><strong>Sequence Callback Marker<\/strong>: Adds a Callback marker. The game engine will receive a notification when the playback reaches the marker, allowing it to trigger gameplay events, VFX, animations, etc&#8230; Different IDs and tags can be specified for each Callback.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4830\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/04-Callbacks.png\" alt=\"04 - Callbacks\" width=\"1110\" height=\"552\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/04-Callbacks.png 1110w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/04-Callbacks-300x149.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/04-Callbacks-768x382.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/04-Callbacks-1024x509.png 1024w\" sizes=\"auto, (max-width: 1110px) 100vw, 1110px\" \/><\/p>\n<ul>\n<li><strong>Sequence End marker for REACT<\/strong>: Generates a sequence end for REACT. It makes it possible to stop REACT (the system used for ducking) before the end of the playback.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4831\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/05-REACT.png\" alt=\"05 - REACT\" width=\"1036\" height=\"383\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/05-REACT.png 1036w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/05-REACT-300x111.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/05-REACT-768x284.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/05-REACT-1024x379.png 1024w\" sizes=\"auto, (max-width: 1036px) 100vw, 1036px\" \/><\/p>\n<p>To create a Sequence Marker:<\/p>\n<ul>\n<li>Right-click on a Cue in the <em>Work Units Tree<\/em>.<\/li>\n<li>Select <em>New Object, Create Marker<\/em>.<\/li>\n<li>In the <em>Add Marker<\/em> window, select the <em>Type<\/em> and change its properties accordingly.<\/li>\n<li>Once placed on the <em>Timeline<\/em>, markers can be dragged to adjust their timing.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/06-AddMarker.png\" alt=\"06 - AddMarker\" width=\"402\" height=\"437\" class=\"alignnone size-full wp-image-4842\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/06-AddMarker.png 402w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/06-AddMarker-276x300.png 276w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><br \/>\n&nbsp;<br \/>\nSequence Markers can also be created automatically once the Waveform Region is added to a Sequence by embedding markers with specific character strings in the original wave file. For instance, if a marker is named \u201cCALLBACK\u201d in your wave file, a Callback Sequence Marker will automatically be inserted at the right position in the Cue\u2019s Sequence. This feature can be enabled and configured by selecting <em>Sequence marker auto-generation settings for waveform registration<\/em> in the <em>View<\/em> menu.<br \/>\n&nbsp;<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/07-SequenceMarkerAutoGeneration.png\" alt=\"07 - SequenceMarkerAutoGeneration\" width=\"1164\" height=\"820\" class=\"alignnone size-full wp-image-4840\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/07-SequenceMarkerAutoGeneration.png 1164w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/07-SequenceMarkerAutoGeneration-300x211.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/07-SequenceMarkerAutoGeneration-768x541.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/07-SequenceMarkerAutoGeneration-1024x721.png 1024w\" sizes=\"auto, (max-width: 1164px) 100vw, 1164px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h1 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Actions<\/h1>\n<p><strong>Actions<\/strong> allow you to play, stop, and change the parameters of another Cue or group of Cues (via the Category function) from the timeline of the current Cue.<\/p>\n<p>A special Track called an <strong>Action Track<\/strong> is created in the main Cue, associated with a Target Cue (or a Category), and then an Action is added to the timeline allowing the main Cue to control the Target Cue.<\/p>\n<p>To add an Action to a Cue:<\/p>\n<ul>\n<li>Select a Cue.<\/li>\n<li>Right-click on the Cue, and select <em>New Object, Create Action Track<\/em>.<\/li>\n<li>On the header of the Action Track, drag and drop the Cue or the Category you want to target.<\/li>\n<li>Then on the Action Track, right-click to create a new Action on the timeline.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/08-Action-Track.png\" alt=\"08 - Action Track\" width=\"999\" height=\"560\" class=\"alignnone size-full wp-image-4832\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/08-Action-Track.png 999w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/08-Action-Track-300x168.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/08-Action-Track-768x431.png 768w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><\/p>\n<p>Different Actions can be inserted on an Action Track:<\/p>\n<ul>\n<li><strong>Start<\/strong>: An action to start playing the targeted Cue.<\/li>\n<li><strong>Stop<\/strong>: An action to stop the target being played back (a fade-out can be specified).<\/li>\n<li><strong>Pause<\/strong>: An action to pause the target being played back (a fade-out can be specified).<\/li>\n<li><strong>Resume<\/strong>: An action to resume the target being paused (a fade-in can be specified).<\/li>\n<li><strong>Mute<\/strong>: Mutes or unmutes the specified track from the targeted Cue (fades can be specified).<\/li>\n<li><strong>Set selector label<\/strong>: Select a selector label for the targeted Cue. See the <a href=\"https:\/\/blog.criware.com\/index.php\/2023\/12\/06\/adx2-beginners-guide-3-selectors-and-game-variables\/\">previous blog<\/a> for more information about Selectors.<\/li>\n<li><strong>Specify Block Transition Destinations<\/strong>: Sets the specified Block of the targeted Cue as its next destination Block (used for interactive music).<\/li>\n<li><strong>Playback Parameter<\/strong>: Updates a playback parameter (e.g. volume, pitch, etc.) of the target over a certain time and following a given curve.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/09-Actions.png\" alt=\"09 - Actions\" width=\"1213\" height=\"584\" class=\"alignnone size-full wp-image-4833\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/09-Actions.png 1213w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/09-Actions-300x144.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/09-Actions-768x370.png 768w, https:\/\/blog.criware.com\/wp-content\/uploads\/2024\/01\/09-Actions-1024x493.png 1024w\" sizes=\"auto, (max-width: 1213px) 100vw, 1213px\" \/><\/p>\n<p>The following parameters can be modified:<\/p>\n<ul>\n<li>Volume<\/li>\n<li>Pitch<\/li>\n<li>Playback Rate<\/li>\n<li>BandPass Filters<\/li>\n<li>Biquad Filters<\/li>\n<li>Release Time of Envelope Generators<\/li>\n<li>Pan3D<\/li>\n<li>Bus Sends<\/li>\n<li>AISAC Controls<\/li>\n<\/ul>\n<p>A good example of usage of Actions is a <a href=\"https:\/\/blog.criware.com\/index.php\/2022\/07\/11\/pause-menu-system\/\">pause system<\/a> where a Cue triggers some Actions to <em>Pause<\/em> a category of sounds and to <em>Start<\/em> a background music. Another Cue can be used to <em>Resume<\/em> the paused sounds and <em>Stop<\/em> the music.<\/p>\n<p>By adding both the Sequence Markers and the Actions to your arsenal, you should now be able to implement more complex sounds in your game. In the <a href=\"https:\/\/blog.criware.com\/index.php\/2024\/02\/06\/adx2-beginners-guide-5-dsp-bus-mixer\/\">next post<\/a> of this series, we will see how to add effects and use the mixing system of Atom Craft.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous blog from this beginner\u2019s series, we used Selectors and Game Variables to create sound variations based on<\/p>\n","protected":false},"author":2,"featured_media":5382,"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-4826","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\/4826","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=4826"}],"version-history":[{"count":14,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/4826\/revisions"}],"predecessor-version":[{"id":5380,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/4826\/revisions\/5380"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/5382"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=4826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=4826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=4826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}