Skip to content

Latest commit

 

History

History
73 lines (71 loc) · 2.86 KB

TODO.md

File metadata and controls

73 lines (71 loc) · 2.86 KB

TODO

  • Real Lisp
    • Parse sexprs into AST tables
    • Persist AST tables as sexprs #1
  • Load configuration from file
    • Load .plisp as listener implementation
    • Assign .plisp via config
    • Use named ports (e.g. Faderfox/Launchpad) when available #2
    • Use virtual MIDI ports instead of real IDs #3
    • Make configuration more robust, play nice w/ Git #6
  • Convenience functions
    • Channel-changing #4
      • Do things across multiple channels, like OT tracks
    • Message-mapping (what does this mean?)
    • Note/CC matching
    • Inclusive ranges (thinking ".." for the fn name), e.g. (.. 1 4) ->(` 1 2 3 4) #5
  • Remove env references from core as much as possible; used in:
    • print-expr
    • def
    • def@
    • expr-to-sexpr
  • Collate TODOs from code
  • Refactor everything to use plisp as much as possible
  • Refactor for library usage
    • Do not reference other modules via globals
    • Messages and plisp MAY be useful separately (?)

DONE

  • Implement (basic) MIDI output handlers
  • Flatten message structure (nesting is yucky)
  • Implement Menus
    • Menu state (button press)
    • Change background (log) display - colors/mask (draw_checkers)
    • Draw menu border
  • Implement MIDI inputs -> messages
  • Norns screen log (text-only for now)
    • Log incoming messages
    • Log handlers - NAH, not now, I don't think this will work
    • BONUS - cute "index" animation
    • Show log messages with actual info
  • Create environment/context for each event
  • Split into modules
    • lib (core)
      • Messages
      • Lisp
      • Utils
      • Core
  • Remove the stupid helixes var
  • MIDI-lensing (for e.g. OT)
    • OT lens definition
    • Input (MIDI from external devices)
    • Output (MIDI to external devices)
  • Convert lenses to plisp
  • Refactor exec to create child envs

LATER

  • Implement UI #7
    • Visual (keyboard-free) expression editor
      • Note that full expr probably ain't it
      • Lean into the mercurial quality of lisp
      • DSLs are useful
      • Macros may also be useful
    • Message "learn" (like MIDI learn)
  • Implement message throttling #9
    • Timers/clocks
    • Execution context (like closure env) - may need IDs, etc.
  • ("Spike") Investigate norns sky lib, see if it can replace some code #13
  • Add engine support
  • Add debug mode #10
  • Rethink lens modes - they're cheesy #11
    • Conditions + state is more useful
  • Add norns param menu read/write support
    • This has its own MIDI mappings