[DevLog] Building Show Notes 2

Background

See these posts for some background thoughts, suggestions, ideas etc…

Requirements

Distilling all of the above down, this is what I’m aiming for as the main requirements:

  • Improved text formatting (eg: ability to color individual words, in paragraph formatting etc…)
  • Integration with Cantabile’s states (eg: show/hide sections based on state, auto scroll to state marker)
  • Ability to embed cantabile $(Variables) in notes.
  • Support for images
  • Support for PDF files (or parts thereof)
  • Support for multi-column layout and/or tables
  • Other formatting features like bullet lists, numbered lists, quotations etc…
  • Ability to view notes both within Cantabile and remotely via Web-UI. (eg: viewing notes on a tablet)
  • Ability to deliver different notes to different band members
  • Support for ChordPro display
  • Support for auto-scrolling based on song timing and/or bindings
  • Support for manual scrolling via MIDI control
  • Ability to convert old show notes to new system

Basic Approach

Here’s initial approach I’ll be taking with this:

  • Show notes will become a plain text file format
  • The notes will be stored as a separate file next to the associated song file. (eg: MySong.cantabileSong and MySong.cantabileNotes live together)
  • Editing will be done using an external text editor of your choice
  • The format will be markdown, with embedded directives for additional control and markup
  • The notes will be displayed in a separate web browser
  • Integration with Cantabile will be via the Cantabile Network API.
  • PDF rendering using Ghostscript

Later:

  • Support for storing the notes content embedded in Cantabile (rather than as a separate file)
  • Support for editing the notes directly in Cantabile (rather than with a separate editor)
  • Embed a web browser in Cantabile so notes can be viewed in-place without requiring a separate window.
  • Direct integration between the embedded browser and Cantabile (rather than via the network API).