A Chaser is a meta-function that plays other functions in sequential order. Chasers contain information about the running order, direction, and timing applied to member functions. The chaser itself is nothing without other functions (typically scenes) as its members.
If a member function’s behavior is changed, those changes automatically apply to all chasers containing that function.
Chasers are defined by their steps, each containing:
struct ChaserStep { quint32 fid; // Function ID to play uint fadeIn; // Fade in time (ms) uint hold; // Hold time (ms) uint fadeOut; // Fade out time (ms) uint duration; // Total duration (ms) QString note; // User note};
// Add a step at specified index (-1 = append)bool addStep(const ChaserStep& step, int index = -1);// Remove step at indexbool removeStep(int index);// Replace step at indexbool replaceStep(const ChaserStep& step, int index);// Move step from source to destinationbool moveStep(int sourceIdx, int destIdx);// Get step at indexChaserStep *stepAt(int idx);// Get all stepsQList<ChaserStep> steps() const;// Get step countint stepsCount() const;
// Set fade in modevoid setFadeInMode(SpeedMode mode);SpeedMode fadeInMode() const;// Set fade out modevoid setFadeOutMode(SpeedMode mode);SpeedMode fadeOutMode() const;// Set duration/hold modevoid setDurationMode(SpeedMode mode);SpeedMode durationMode() const;
// Tap to sync to beatvoid tap();// Get current step indexint currentStepIndex() const;// Compute next stepint computeNextStep(int currentStepIndex) const;// Get number of running stepsint runningStepsNumber() const;
Use Common mode for uniform timing, PerStep for varied rhythms
2
Set Realistic Hold Times
Ensure hold times allow functions to complete their effects
3
Prevent Self-Containment
A chaser cannot contain itself directly or indirectly
4
Use Crossfade for Smooth Transitions
Enable crossfade mode for seamless transitions between steps
When using Beat tempo mode, ensure the chaser duration (in beats) is compatible with your step count and BPM settings. Mismatched values can cause unexpected timing.