{"id":297,"date":"2026-04-04T22:26:29","date_gmt":"2026-04-04T20:26:29","guid":{"rendered":"https:\/\/callerscaddy.de\/?p=297"},"modified":"2026-04-04T22:28:23","modified_gmt":"2026-04-04T20:28:23","slug":"rules-all-trigger-conditions-actions-and-parameters","status":"publish","type":"post","link":"https:\/\/callerscaddy.de\/en\/rules-all-trigger-conditions-actions-and-parameters\/","title":{"rendered":"Rules, ALL Triggers, Conditions, Actions and Parameters"},"content":{"rendered":"<p>The Rules system is the heart of automation in Callers Caddy. <\/p>\n\n\n\n<p>You define, <strong>When<\/strong> something is supposed to happen (trigger), <strong>whether<\/strong> a condition must be met \u2013 and <strong>What<\/strong> Then (action) happens. <\/p>\n\n\n\n<p>All without scripting, all with a click.<\/p>\n\n\n\n<p>And so that you know exactly what&#039;s currently available, here is the complete list of triggers, conditions, actions, and parameters.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Trigger<\/h2>\n\n\n\n<p>A trigger is the starting signal for a rule. I currently have 23 triggers implemented \u2013 from song events and app launches to keyboard shortcuts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_started<\/h3>\n\n\n\n<p>Triggered as soon as a song starts playing. Ideal for automatically loading a layout or displaying lyrics, for example.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_stopped<\/h3>\n\n\n\n<p>It fires when a song has been completely stopped \u2013 not during pause. Useful for tidying up after a track or skipping ahead.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_paused<\/h3>\n\n\n\n<p>It reacts to the moment you press the pause button. For example, you can use it to clear the fullscreen lyrics window.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_resumed<\/h3>\n\n\n\n<p>Activates when a paused song resumes playing. This allows you to, for example, bring the lyrics back to the foreground.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_changed<\/h3>\n\n\n\n<p>It fires as soon as another song is loaded \u2013 whether from the playlist or by clicking. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">app_started<\/h3>\n\n\n\n<p>This is triggered exactly once: when the application starts. This loads your favorite layout or sets default values.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">manager_closed<\/h3>\n\n\n\n<p>This reacts when you close the playlist manager. The default system rule then automatically focuses on the song list. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">play_timer<\/h3>\n\n\n\n<p>It fires every 10 seconds during playback. This allows you to implement time-based warnings \u2013 for example, if a pattern runs for too long.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">key_f1 to key_f12<\/h3>\n\n\n\n<p>Each F-key is its own trigger. You can freely assign them any actions you like \u2013 play, stop, change layout, whatever you need.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">key_space<\/h3>\n\n\n\n<p>The spacebar as a trigger. Standard system rule: Play\/Pause toggle \u2013 just like you know it from a media player.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">key_l<\/h3>\n\n\n\n<p>The letter L acts as a trigger. By default, it opens the location dialog so you can quickly select your event.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">key_p<\/h3>\n\n\n\n<p>The letter P acts as a trigger. By default, it toggles the playlist manager.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conditions<\/h2>\n\n\n\n<p>A condition is optional \u2013 it restricts whether the rule is actually executed. If no condition is set, the action always runs. All conditions except one are parameterless.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_type_is_singing<\/h3>\n\n\n\n<p>True, if the current song is marked as a &quot;Singing Call&quot;. This allows you to control rules that only apply to singing calls.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_type_is_pattern<\/h3>\n\n\n\n<p>True, if the song is entered as a &quot;Patter&quot;. This allows you, for example, to initiate a different sequence at the Patter Stop than at the Singing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">lyrics_available<\/h3>\n\n\n\n<p>True, if a lyrics file is embedded for the current song. This prevents you from opening an empty lyrics window.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">lyrics not available<\/h3>\n\n\n\n<p>The opposite is true if no lyrics file is present. Use this to perform an alternative action in that case.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">loop_set<\/h3>\n\n\n\n<p>True if a loop is configured \u2013 more precisely: loop_in &gt; 0.1 s or loop_out deviates from the song duration by more than 0.5 s. This means you can only activate the loop toggle if a loop is actually useful.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">loop_not_set<\/h3>\n\n\n\n<p>The opposite of `loop_set`. Useful if you want to automatically set a best loop when the song starts, but only if one hasn&#039;t been set yet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">location_selected<\/h3>\n\n\n\n<p>True, if you have selected an event in the location dialog. This locks certain actions until the location is set.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">location_not_selected<\/h3>\n\n\n\n<p>True if no location is active. This allows you, for example, to automatically open the location dialog when the app starts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">play_duration_above<\/h3>\n\n\n\n<p><strong>Parameter: <code>minutes<\/code> (float, 0.5-60, default: 5)<\/strong> True if the song has been playing for more than X minutes. This allows you to implement time warnings \u2013 e.g., a red warning signal after 7 minutes of pattern.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Actions<\/h2>\n\n\n\n<p>Actions are what the rule actually does. I&#039;ve implemented 30 actions, divided into areas like widget control, transport, loop, lyrics, and more.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">dock_open<\/h3>\n\n\n\n<p><strong>Parameter: <code>dock_name<\/code><\/strong> Makes a widget visible and brings it to the foreground. You can use this to, for example, automatically display the lyrics when a song starts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">dock_close<\/h3>\n\n\n\n<p><strong>Parameter: <code>dock_name<\/code><\/strong> It hides a widget. Ideal for clearing away the lyrics or tidying up the layout when stopping.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">dock_fullsize<\/h3>\n\n\n\n<p><strong>Parameter: <code>dock_name<\/code><\/strong> Displays a widget as a floating window at approximately 90x screen size. The previous state is saved so you can revert to it later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">dock_focus<\/h3>\n\n\n\n<p><strong>Parameter: <code>dock_name<\/code><\/strong> Makes a widget visible, brings it to the forefront. <em>and<\/em> gives him keyboard focus. That&#039;s the difference to <code>dock_open<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">auto_scroll_start<\/h3>\n\n\n\n<p>Starts auto-scrolling in the lyrics widget. You typically use this when starting a singing call.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">auto_scroll_stop<\/h3>\n\n\n\n<p>Stops auto-scrolling. Useful when pausing or stopping, so the scrolling text doesn&#039;t continue.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">layout_load<\/h3>\n\n\n\n<p><strong>Parameter: <code>layout_name<\/code><\/strong> Loads a saved layout by name. The special case <code>\"&quot;default&quot;\"<\/code> restores the state in front of a full-size window.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">log_message<\/h3>\n\n\n\n<p><strong>Parameter: <code>message<\/code> (Text)<\/strong> Writes a message to the rules log. Useful for debugging rule chains or logging events.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">statusbar_message<\/h3>\n\n\n\n<p><strong>Parameter: <code>message<\/code> (Text), <code>duration_ms<\/code> (int, Standard: 3000)<\/strong> Displays a temporary message in the status bar. This allows you to give yourself brief reminders during operation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">play<\/h3>\n\n\n\n<p>Starts playback (deferred via timer to prevent re-entry). Also works if a song is already loaded but stopped.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">pause<\/h3>\n\n\n\n<p>Pauses the current song. Only executed when the pause button is active.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stop<\/h3>\n\n\n\n<p>Stops playback completely. Only executed when the stop button is active.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">fade_out<\/h3>\n\n\n\n<p>It introduces a 5-second fade-out. The song fades out gently \u2013 ideal at the end of a square riff.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">play_pause_toggle<\/h3>\n\n\n\n<p>Switches between play and pause. That&#039;s the default function of the spacebar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">auto_advance<\/h3>\n\n\n\n<p>Loads the next song from the playlist. This allows you to create an automated sequence without manual clicking.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">open_location_dialog<\/h3>\n\n\n\n<p>Opens the location dialog. Useful as a startup rule if you always want to select your event first.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">toggle_manager<\/h3>\n\n\n\n<p>Toggles the visibility of the playlist manager. Corresponds to the standard shortcut on <code>P<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">system_ping<\/h3>\n\n\n\n<p>Plays a warning tone: 880 Hz and 1100 Hz, each for 150 ms, or a system beep as a fallback. You use this to audibly alert yourself to a time elapse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">warn_background<\/h3>\n\n\n\n<p><strong>Parameter: <code>level<\/code> (int, 1\u20132)<\/strong> Color the play timer label. Level 1 = Orange (<code>#f59e0b<\/code>), Level 2 = Red (<code>#ef4444<\/code>This way you can see at a glance that something needs attention.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">warn_background_reset<\/h3>\n\n\n\n<p>Resets the background color of the play timer label to normal. Use this when stopping or changing songs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">tempo_change<\/h3>\n\n\n\n<p><strong>Parameter: <code>delta<\/code> (int, \u221250\u2026+50, default: +2)<\/strong> Changes the &quot;Today&#039;s Pace&quot; by the specified percentage. The change only applies to this session and is not saved in the database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">song_tempo_change<\/h3>\n\n\n\n<p><strong>Parameter: <code>delta<\/code> (int, \u221250\u2026+50, default: +2)<\/strong> How <code>tempo_change<\/code>, but persistent: the new value is stored directly in the database with the song.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">pitch_change<\/h3>\n\n\n\n<p><strong>Parameter: <code>delta<\/code> (float, \u22126.0\u2026+6.0, step: 0.5)<\/strong> Shifts the pitch by the specified semitone. Useful for quickly going an octave lower or higher with the press of a key.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">volume_change<\/h3>\n\n\n\n<p><strong>Parameter: <code>delta<\/code> (float, \u22121.0\u2026+1.0, step: 0.05)<\/strong> Changes the song&#039;s volume relative to the current value. The range is between 0.0 and 1.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">auto_set_best_loop<\/h3>\n\n\n\n<p>Analyzes the current song and automatically sets the best 64-beat loop. An overlay appears during the analysis \u2013 the song must have BPM data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">toggle_loop_active<\/h3>\n\n\n\n<p>Toggles the Loop Active checkbox on or off. This allows you to activate or deactivate the set loop with a single button press.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">goto_position<\/h3>\n\n\n\n<p><strong>Parameter: <code>position<\/code> (choice: <code>start<\/code> \/ <code>loop_in<\/code> \/ <code>loop_out<\/code> \/ <code>end<\/code>, Standard: <code>start<\/code>)<\/strong> Jumps to the specified position in the song. If crossfade is enabled, the transition will be smooth.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">lyrics_auto_width<\/h3>\n\n\n\n<p>Automatically adjusts the width of the lyrics panel to the content. Useful after a layout change when the width is no longer correct.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">photo_capture<\/h3>\n\n\n\n<p>Activate the camera, wait 500 ms for startup, and then take a picture. You can use this to automatically take a group photo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">photo_show<\/h3>\n\n\n\n<p>The photo dock displays as a fullscreen window (approximately 90 %). This allows you to present the captured image large on the screen.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>This list is already impressive, but it will likely grow even further. It all depends on the many ideas from Callers Caddy users.<\/p>\n\n\n\n<p>Remember, you can <a href=\"https:\/\/callerscaddy.de\/rules-your-workflow\/\" data-type=\"post\" data-id=\"265\">Save your rules too<\/a> and exchange with other callers.<\/p>","protected":false},"excerpt":{"rendered":"<p>The rules system is the heart of automation in Callers Caddy. You define when something should happen (trigger), whether a condition must be met (condition), and what happens then (action). All without scripting, all with a single click. And so you know exactly what&#039;s currently available, here&#039;s the complete list of triggers\u2026 <a title=\"Rules, ALL Triggers, Conditions, Actions and Parameters\" class=\"read-more\" href=\"https:\/\/callerscaddy.de\/en\/rules-all-trigger-conditions-actions-and-parameters\/\" aria-label=\"Read more about Rules, ALL Triggers, Conditions, Actions and Parameters\">Read more<\/a><\/p>","protected":false},"author":1,"featured_media":298,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-funktionen"],"_links":{"self":[{"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/comments?post=297"}],"version-history":[{"count":1,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/posts\/297\/revisions"}],"predecessor-version":[{"id":299,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/posts\/297\/revisions\/299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/media\/298"}],"wp:attachment":[{"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/media?parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/categories?post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/callerscaddy.de\/en\/wp-json\/wp\/v2\/tags?post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}