Effect System
All effects use the following shared configuration:- Frame Rate: 90 fps (
__init__.py:102) - Canvas Anchoring: Center-aligned canvas and text (
__init__.py:105-106) - Rainbow Gradient: 7-color gradient used across all effects (
__init__.py:38-46)
Intro Effects
The intro phase randomly selects one of three effects (33% chance each):ColorShift
Used for: Intro animation (33% probability) Location:__init__.py:199-206
Number of times the color gradient cycles across the text
Number of frames for each gradient transition step
Colors used in the shifting gradient
Direction the color wave travels across the text
Colors used in the final static gradient
Direction of the final gradient
Spotlights
Used for: Intro animation (33% probability) and finale effect Location:__init__.py:210-216 (intro), __init__.py:292-300 (finale)
Intro Configuration
Number of frames the spotlights search before revealing text
Number of simultaneous spotlights
Colors for the final revealed text
Direction of the final gradient (radial creates a spotlight effect)
Finale Configuration
The finale version uses enhanced parameters:Shorter search duration for the finale
Range of spotlight movement speeds
More spotlights for the finale
Width of each spotlight beam relative to default
How quickly the spotlight brightness fades at edges
Spray
Used for: Intro animation (33% probability) Location:__init__.py:218-226
Starting position of the spray effect. Randomly chosen from:
"n", "ne", "e", "se", "s", "sw", "w", "nw", or "center"Percentage of characters sprayed per frame (8%)
Range of speeds for character movement during spray
Colors for the final text
Direction of the final gradient
Interlude Effect
The interlude plays 75% of the time between intro and finale.VHSTape
Used for: Interlude glitch animation (75% probability) Location:__init__.py:249-261
Total number of frames the glitch effect runs
Probability (22%) that any given line will glitch in a frame
Probability (3%) that a character becomes noise
Colors used for glitch line effects (white + rainbow + white)
Colors used for glitch wave distortions
Colors for the text after glitching completes
Direction of the final gradient
Finale Effects
The finale sequence plays three effects in order:Fireworks
Used for: Main finale explosion effect Location:__init__.py:157-173
Allows fireworks to explode anywhere on the canvas (not just above text)
Number of frames between each firework launch
Percentage of canvas covered by firework particles (12%)
Colors used for firework explosions
Symbol used for firework particles. Unicode options:
"✦", "✧", "❇", "❈", "✺", "*", "+", "x". ASCII fallback: "o", "*", "+", "x"Colors for the text after fireworks complete
Direction of the final gradient
Highlight
Used for: Glitter effect after fireworks Location:__init__.py:270-283
Brightness multiplier for the highlight beam (260% of normal)
Width of the highlight beam in characters
Direction the highlight sweeps across the text. Randomly chosen from four diagonal directions:
DIAGONAL_BOTTOM_LEFT_TO_TOP_RIGHTDIAGONAL_BOTTOM_RIGHT_TO_TOP_LEFTDIAGONAL_TOP_LEFT_TO_BOTTOM_RIGHTDIAGONAL_TOP_RIGHT_TO_BOTTOM_LEFT
Colors for the final text
Direction of the final gradient
Unicode Support
Effects automatically adapt based on terminal encoding support (__init__.py:49-57):
- Unicode Check: Tests if terminal can encode
"✦❖✺"characters - Firework Symbols: Unicode terminals get 8 options vs 4 ASCII options
- Confetti Characters: Unicode terminals use 22 characters vs 6 ASCII characters
Terminal Configuration
All effects share this base terminal configuration (__init__.py:100-108):
| Parameter | Value | Description |
|---|---|---|
frame_rate | 90 | Frames per second for all animations |
canvas_width | 0 | Auto-detect terminal width |
canvas_height | 0 | Auto-detect terminal height |
anchor_canvas | "c" | Center the canvas in the terminal |
anchor_text | "c" | Center the text within the canvas |
reuse_canvas | True | Reuse the same canvas between frames |