Hey All,
As has been discussed here many times before Cantabile’s show notes is long overdue for an update. In the past I’ve attempted various approaches in but never been satisfied with how those attempts worked out and mostly abandoned them.
In addition to the audio engine work I’ve been doing (see here and here) I’ve also been prototyping yet another approach to show notes - and I think this one will work out, here’s some info…
This new approach:
- will be based around markdown with some custom extensions to support easier formatting and Cantabile States.
- will use web based technologies (ie: show notes will be displayed by a web browser).
- will be written almost entirely in JavaScript.
- will be open source.
Initially this new approach will only work via Cantabile’s web server in an external browser. Once mature I’ll look to moving it to an embedded browser in Cantabile’s main window where the current show notes are displayed.
Because most of this will be open source - you guys can also work on it, tweak it, adjust it and push back changes which I’ll consider including in the official version.
So far I’ve worked out a minimal set of extensions to markdown that supports everything that Cantabile’s current show notes support and I’ll be developing a migration path that converts the old show notes to the new. At least for a period of time, both the new and old approaches will be available.
Today I released a new build of Cantabile which aside from some other tweaks and fixes includes some network API support for this new approach:
For those curious, the changes are:
- New endpoint GET
/api/shownotes/v1raw- returns the current song’s old show notes in JSON format including all state information. This will be used for the migration process to convert old show notes to the new format. - New endpoint GET/POST
/api/shownotes/markdown- gets or sets an arbitrary string associated with the song. This will be used to store the new show notes markdown format. Currently this is stored in the song file but eventually might be moved to an external sidecar file for easier external editing. The web client will include an editor for editing the markdown and previewing the result. - New endpoint GET
/pdf/somesong.pdfgets metadata for a PDF file including number of pages and page sizes. The filename is relative to the currently loaded song. - New endpoint GET
/pdf/somesong.pdf?page=1renders a PDF page as PNG. By default renders at 300dpi. Override with optional query stringres=120to adjust.
PDF support requires GhostScript be installed. The 64-bit AGPL version will suffice.
So far I’ve got a proof of concept with:
- Basic markdown rendering (including inline styling etc…)
- Support for section visibility, colors, fonts, alignment etc…
- Support for adjusting section settings based on selected Cantabile state
- Support for ABC notation
- Support for various ChordPro style formats
Below are some screenshots showing markdown and associated output to give you an idea where this is headed.
That’s all I’ve got to show for the moment and I’m not promising anything soon, but there is work going on here.
Brad
PDF rendered by GhostScript via Cantabile’s web server (note the URL in the address bar):




