Files
Mainline/examples

Examples

This directory contains example scripts demonstrating how to use Mainline's features.

hybrid_visualization.py - Renders visualization using the hybrid preset-graph format.

python examples/hybrid_visualization.py

This uses 70% less space than verbose node DSL while providing the same flexibility.

Configuration

The hybrid format uses inline objects and arrays:

[pipeline]
source = "headlines"
camera = { mode = "scroll", speed = 1.0 }
effects = [
    { name = "noise", intensity = 0.3 },
    { name = "fade", intensity = 0.5 }
]
display = { backend = "terminal", positioning = "mixed" }

See docs/hybrid-config.md for complete documentation.


Default Visualization (Verbose Node DSL)

default_visualization.py - Renders the standard Mainline visualization using the verbose graph DSL.

python examples/default_visualization.py

This demonstrates the verbose node-based syntax (more flexible for complex DAGs):

[nodes.source] type = "source" source = "headlines"
[nodes.camera] type = "camera" mode = "scroll"
[nodes.noise] type = "effect" effect = "noise" intensity = 0.3
[nodes.display] type = "display" backend = "terminal"
[connections] list = ["source -> camera -> noise -> display"]

Graph DSL Demonstration

graph_dsl_demo.py - Demonstrates the graph-based DSL in multiple ways:

python examples/graph_dsl_demo.py

Shows:

  • Imperative Python API for building graphs
  • Dictionary-based API
  • Graph validation (cycles, disconnected nodes)
  • Different node types and configurations

Integration Test

test_graph_integration.py - Tests the graph system with actual pipeline execution:

python examples/test_graph_integration.py

Verifies:

  • Graph loading from TOML
  • Pipeline execution
  • Output rendering
  • Comparison with preset-based pipelines

Other Demos

  • demo-lfo-effects.py - LFO modulation of effect intensities (Pygame display)
  • demo_oscilloscope.py - Oscilloscope visualization
  • demo_image_oscilloscope.py - Image-based oscilloscope

Configuration Format Comparison

Format Use Case Lines Example
Hybrid Recommended for most use cases 20 hybrid_config.toml
Verbose Node DSL Complex DAGs, branching 39 default_visualization.toml
Preset Simple configurations 10 presets.toml

Reference

  • docs/hybrid-config.md - Hybrid preset-graph configuration
  • docs/graph-dsl.md - Verbose node-based graph DSL
  • docs/presets-usage.md - Preset system usage