Epic: Preset Scripting Language for Mainline #48

Open
opened 2026-03-19 22:52:18 +00:00 by david · 0 comments
Owner

Summary

We need to evaluate adding a scripting language for authoring presets in Mainline, replacing or augmenting the current TOML-based preset system. The goals are:

  1. Expressiveness: More powerful than TOML for describing dynamic, procedural, or dataflow-based presets
  2. Live coding: Support hot-reloading of presets during runtime (like TidalCycles or Sonic Pi)
  3. Testing: Include assertion language to package tests alongside presets
  4. Toolchain: Consider packaging and build processes

Current State

The current preset system (presets.toml) uses simple TOML with static configuration - it cannot express:

  • Conditional logic based on runtime state
  • Dataflow between pipeline stages
  • Procedural generation of stage configurations
  • Assertions or validation of preset behavior
  • Sensor bindings for parametric animation

Proposal

See ADR: Preset Scripting Language for Mainline for full analysis.

Recommendation: Start with a textual DSL approach (similar to TidalCycles) with potential for visual editor later. Mermaid is excellent for documentation but is not a programming language.

Epic: Preset Scripting Language

Spike Stories

  • SPIKE: Evaluate DSL Parsing Tools - Survey Lark, parsy, pyparsing with POC
  • SPIKE: Research Livecoding Languages - Document patterns from TidalCycles, PureData
  • SPIKE: Prototype Textual DSL - Create minimal DSL that converts to PipelineConfig
  • SPIKE: Investigate Assertion/Testing Approaches - Survey testing in livecoding systems

Implementation Stories

  • Implement Core DSL Parser - Parse DSL syntax, produce valid PipelineConfig
  • Hot-Reload System - File watcher + pipeline mutation for real-time updates
  • Assertion Language - Assertions run as part of preset execution
  • Toolchain/Packaging - Create, build, and install preset packages

Additional Context

  • Related to: Pipeline mutation API, Sensor framework, Effect system
  • Skills: mainline-presets, mainline-architecture
## Summary We need to evaluate adding a scripting language for authoring presets in Mainline, replacing or augmenting the current TOML-based preset system. The goals are: 1. **Expressiveness**: More powerful than TOML for describing dynamic, procedural, or dataflow-based presets 2. **Live coding**: Support hot-reloading of presets during runtime (like TidalCycles or Sonic Pi) 3. **Testing**: Include assertion language to package tests alongside presets 4. **Toolchain**: Consider packaging and build processes ## Current State The current preset system (`presets.toml`) uses simple TOML with static configuration - it cannot express: - Conditional logic based on runtime state - Dataflow between pipeline stages - Procedural generation of stage configurations - Assertions or validation of preset behavior - Sensor bindings for parametric animation ## Proposal See [ADR: Preset Scripting Language for Mainline](./wiki/proposals/adr-preset-scripting-language.md) for full analysis. **Recommendation**: Start with a textual DSL approach (similar to TidalCycles) with potential for visual editor later. Mermaid is excellent for documentation but is not a programming language. ## Epic: Preset Scripting Language ### Spike Stories - [ ] **SPIKE**: Evaluate DSL Parsing Tools - Survey Lark, parsy, pyparsing with POC - [ ] **SPIKE**: Research Livecoding Languages - Document patterns from TidalCycles, PureData - [ ] **SPIKE**: Prototype Textual DSL - Create minimal DSL that converts to PipelineConfig - [ ] **SPIKE**: Investigate Assertion/Testing Approaches - Survey testing in livecoding systems ### Implementation Stories - [ ] Implement Core DSL Parser - Parse DSL syntax, produce valid PipelineConfig - [ ] Hot-Reload System - File watcher + pipeline mutation for real-time updates - [ ] Assertion Language - Assertions run as part of preset execution - [ ] Toolchain/Packaging - Create, build, and install preset packages ## Additional Context - Related to: Pipeline mutation API, Sensor framework, Effect system - Skills: `mainline-presets`, `mainline-architecture`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: klubhaus/sideline#48