Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ivan-1f/phichain/llms.txt

Use this file to discover all available pages before exploring further.

Easing Functions

Easing functions control how values transition in events, creating natural-looking motion. The editor supports a wide variety of easing types.

Available Easing Types

LinearConstant rate of change from start to end.
  • Best for: Mechanical movement, speed changes
  • No acceleration or deceleration

Choosing the Right Easing

  • EaseInOutCubic: Smooth, natural motion
  • EaseInOutQuad: Gentler alternative
  • Linear: Mechanical, constant-speed movement
  • EaseInOutCubic: Smooth spinning
  • EaseOutBack: Playful overshoot
  • EaseInOutQuart: Dramatic, impactful rotation
  • Linear: Instant, noticeable change
  • EaseInQuad: Gradual acceleration
  • Steps(2-4): Discrete speed tiers
  • Linear: Clean fade
  • EaseInOutSine: Smooth, natural fade
  • EaseOutQuad: Quick fade-in, gradual fade-out
Experiment with different easings! Use the Game View to preview how they feel during playback.

Complex Line Animations

Multi-Event Coordination

Create sophisticated animations by layering multiple events on the same line.
1

Plan the Animation

Sketch out what you want the line to do:
  • Move to the right while rotating?
  • Fade in while scaling up?
  • Circle motion with speed changes?
2

Create Base Movement

Add the primary motion (e.g., Move events)
3

Add Secondary Effects

Layer Rotate, Alpha, or Size events on top
4

Time Events Carefully

Align event timings for the desired combined effect:
  • Start all together for synchronized motion
  • Offset starts for sequential effects
  • Overlap for transitioning between states
5

Test and Refine

Play back repeatedly, adjusting timings and easings

Circular Motion Pattern

To create a line that moves in a circle:
  1. Create a Move X event with sine wave values (use multiple events to approximate)
  2. Create a Move Y event with cosine wave values (phase-shifted by 90°)
  3. Synchronize the timings perfectly
  4. Use EaseInOutSine for smooth circular motion
The editor doesn’t have built-in circular motion. You’ll need to manually create the sine/cosine wave pattern with multiple events.

Wave Effects

Create oscillating motion:
  1. Create alternating Move events:
    • Beat 0-4: Move from 0 to 0.5 (EaseInOutSine)
    • Beat 4-8: Move from 0.5 to 0 (EaseInOutSine)
    • Beat 8-12: Move from 0 to -0.5 (EaseInOutSine)
    • Beat 12-16: Move from -0.5 to 0 (EaseInOutSine)
  2. Repeat the pattern as needed
  3. Combine with rotation for spiral effects

Multiple Line Coordination

Master-Detail Pattern

Create a main line and several detail lines that follow it:
  1. Create a “master” line with primary movement
  2. Create 2-4 “detail” lines
  3. Copy the master’s Move events to detail lines
  4. Offset the detail lines spatially (different Y positions)
  5. Add phase-shifted animations (detail lines react slightly after master)

Symmetrical Lines

Create mirror-image lines for balanced visuals:
  1. Create Line A and Line B
  2. Add Move X event to Line A: 0 → 0.5
  3. Add Move X event to Line B: 0 → -0.5 (opposite direction)
  4. Use identical timings and easings
  5. Place mirrored notes on each line

Line Handoff

Transition notes smoothly between lines:
  1. Line A active with notes (Alpha = 1)
  2. Line B starts invisible (Alpha = 0)
  3. At beat X:
    • Line A fades out (Alpha: 1 → 0)
    • Line B fades in (Alpha: 0 → 1)
    • Position lines at same location during transition
  4. Continue charting on Line B
Line handoffs create seamless transitions and can make charts feel more dynamic without overwhelming the player.

Chart Optimization

Event Consolidation

Reduce event count for better performance:
  • Remove redundant events: Events that don’t change values
  • Merge sequential events: Combine events with same value into one
  • Simplify constant events: Single constant event instead of multiple short ones
  • Approximate curves: Use fewer events with better easing instead of many linear segments

Note Optimization

  • Consistent spacing: Keep notes at similar densities to avoid sudden difficulty spikes
  • Lane utilization: Spread notes across available lanes
  • Hand balance: Consider left/right hand distribution (though less critical than traditional rhythm games)

Performance Considerations

  • Aim for < 1000 events per line when possible
  • Each event is computed every frame during playback
  • Complex easing functions cost more than Linear

Timeline Settings Deep Dive

Beat Density

Controls sub-beat division visibility:
  • 1/4: Common for most charts
  • 1/8: For moderately fast patterns
  • 1/16: For very fast or swing rhythms
  • 1/32: For extreme precision
Higher density = smaller snap increments when moving notes with arrow keys.

Lane Configuration

Set the number of note lanes (columns):
  • 3 lanes: Minimal, for simple charts
  • 5 lanes: Standard
  • 7-9 lanes: For complex, dense patterns
Lanes are evenly distributed across the line width.

Snap Settings

  • Enable Snapping: Notes/events snap to beat grid
  • Disable Snapping: Free placement (use for very specific timings)
Toggle snapping on/off in Timeline Settings when you need precise, off-beat placement.

Custom Event Techniques

Stutter Effect

Rapid position changes:
  1. Create very short Move events (1/8 or 1/16 beat duration)
  2. Alternate between two positions rapidly
  3. Use Linear or Steps easing
  4. Combine with rotation for chaotic effect

Perspective Illusion

Simulate 3D depth:
  1. Decrease Size as line moves “away” (up on screen)
  2. Increase Speed to maintain note readability
  3. Decrease Alpha slightly for atmospheric depth
  4. Use EaseInOutQuad for natural perspective

Freeze Frame

Pause line motion during intense sections:
  1. Set Speed to 0 (constant event)
  2. Keep notes visible but non-approaching
  3. Add rotation or other effects during freeze
  4. Return Speed to 1+ to resume

Curve Note Tracks

Curve note tracks allow notes to follow curved paths (advanced feature):
  • Create smooth arcs for notes
  • Visualize curved trajectories in Game View
  • More complex than standard notes
  • Use sparingly for emphasis
Curve note tracks are an advanced feature. Start with standard notes before exploring curves.

Workflow Tips

Iterative Design

1

Rough Pass

Place notes at approximate timings, focus on rhythm
2

Timing Refinement

Adjust note positions for perfect sync with music
3

Add Basic Events

Simple movement and rotation
4

Polish Events

Add easing, secondary effects, fine-tune values
5

Playtest

Iterate based on feedback and feel

Organization

  • Name lines descriptively: “Verse Main”, “Chorus Top”, “Bridge Spin”
  • Group related events: Keep Move X/Y events aligned
  • Document complex patterns: Add notes in Chart Settings about technique used
  • Save versions: Use Save As to create checkpoints

Testing

  • Test frequently during creation
  • Playtest at different skill levels (if possible)
  • Watch for readability issues (overlapping lines, too-fast speed)
  • Verify all notes are hittable (not off-screen or impossible timing)

Export and Distribution

Once your chart is complete:
1

Final Save

Save your project (Ctrl+S)
2

Export

Use File > Export to create distribution files
3

Test Exported Chart

Verify the exported chart works correctly
4

Package Assets

Include audio, illustration, and chart files
For CLI-based export options, see the Converter Tool documentation.

Next Steps

Keyboard Shortcuts

Complete reference of all hotkeys for maximum efficiency

CLI Tools

Learn about command-line tools for batch operations

Build docs developers (and LLMs) love