RFC: Replacing Show Notes (kinda, maybe)

Hey All,

As you probably know I’ve been working lately on Cantabile’s network server and on the weekend put together a little demo showing how it could be used for markdown based show notes.

From the feedback I’m starting realize there really needs to be some richer formatting of show notes inside Cantabile itself and I’ve starting looking into what would be required to add markdown/html support.

Before I go too far down this rabbit hole however, here’s what I’m thinking:

  • The current show notes mechanism would be dropped. The whole concept of a stack of “notes” would be replaced with a separate “show notes” document.
  • Songs with existing show notes would be automatically converted to markdown.
  • Show notes editing would be completely external to Cantabile - use whatever text editor you like (similarly to how it works in the markdown demo however there would be a dedicated built in command for it instead of the custom tool command).
  • The Save As command and the Song rename command in the set list have already been updated to automatically rename related files ie: files with similar names but different extension. This is so that if you Rename or Save As a song, the notes will come along for the ride. This will be in the next build.
  • Currently show notes are “state controllable” allowing some notes to only appear in certain states - this would be replaced by conditional directives in the markdown file.
  • Currently show notes can have embedded variables eg: $(SongTitle). Limited support for these would continue to work, but possibly not for dynamic variables (eg: $(TransportPosition) probably won’t work).

Pros:

  • Much richer formatting control (headings, dividers, bold, italic, images, bullet points, links, colors, images, fonts etc…)
  • You can use a more capable text editor of your choice instead of the cumbersome editing currently in Cantabile
  • Resolves the current problem with linked clone states where really they should be linked for everything except for show notes
  • The same show notes format can be used both inside Cantabile and remotely via network server
  • Possibility for serving up different sets of show notes to different network clients. (eg: one set of notes for the lead singer, one for the drummer etc…)
  • Possibility for more advanced directives inside the markdown file. (eg: marking transort positions to control automatic scrolling), chord pro formatted data
  • Possibility to provide a custom style sheet to control formatting across all songs from one place.
  • Possibility of using other files types directly for show notes. (eg: a single image file, a chordpro file) rather than requiring a markdown file.
  • HTML rendering is almost certainly useful in other parts of Cantabile too.

Cons:

  • Loss of some functionality related to embedded variables as described above.
  • Editing which notes appear in which states is more complex but can probably be mitigated with some commands in Cantabile.
  • Although a lot more flexible than the current show notes, it still wouldn’t offer the full functionality of a web browser client. eg: no scripting, no pdfs, no videos. This sounds like a con but really it’s a pro - need to draw the line somewhere.

In case you’re unfamiliar with Markdown, it’s what you type everytime you enter something into this forum. See the demo video for an example, or here for more.

As for hiding/showing sections in certain states I was thinking something like this (assuming the song has states named Verse1, Verse2, Chorus1, Chorus2, Chorus3 etc…)

# $(SongTitle)

{{#if Verse1}}
Lyrics for verse 1 here
{{/if}}

{{#if Verse2}}
Lyrics for verse 2 here
{{/if}}

{{#if Chorus1, Chorus2, Chorus3}}
Lyrics for chorus
{{/if}}

Markdown supports fixed pitch formatting with ``` delimiters and a syntax language following the first one. So chordpro text could be entered like so and would render with the chord names above the lyrics (and would automatically transpose).

```chordpro
Swing [D]low, sweet [G]chari[D]ot,
Comin’ for to carry me [A7]home.
```

To get all this working, Cantabile is going to need two things:

  1. A markdown to HTML converter (I’ve already written one in the past that will work just fine).
  2. A HTML Rendering engine.

Number #2 is the problem. I’m probably going to need to write that myself and it’s non-trivial. I’ve looked at a couple of open source ones but haven’t found anything that fits all the needs (C#, capable, not too capable, not too buggy, engineered well enough that I can make fixes/changes as required, fits with Cantabile GuiKit UI library etc…).

In the meantime, the next build of Cantabile will have the network server and you’ll be able to play around with the whole concept using a separate web browser. Hoping to get that out by early next week.

Thoughts?

@brad

I have been using show notes for about 2 yrs for lyrics, song maps, and notes…all controlled by state changes. Performing with several bands has produced over 500 songs, with many states(lyric page changes) that I have meticulously put together over that 2 yr period. I am very open minded to the change,you are proposing, and think it would be a great addition to C3. My concern is…what is going to happen to all the work I spent endless hours on? Show notes is as important to my setup as routing is through controllers to vsti’s. Would this change wipe all this out and force me to start all over? I always support all the great work you do, just concerned.

Regards

Corky

Hey Brad!

Although integrating Markdown has obviously a lot of advantages, I also have a concern about it.
Cantabile is already a feature-rich application which beats all competitors by far. At the moment it’s a bit cumbersome to create notes. But in the end it’s a very clean user interface which just a few options like font size and so on. I don’t know if such kind of integration will make things over-complicated because the user might need to learn a few HTML-basics.
In the end I’d rather love to see a support for showing PDFs (which I do at the moment via an external program) because if you share sheets with other musicians it’ll be PDF for sure…

Don’t get me wrong: I like the MarkDown concept. But it seems to be a lot of work for you… so you really should double-check if it’s the right moment to set it up!

Hey Guys,

Thanks for the feedback.

No you wouldn’t need to start again. As mentioned there would be a conversion process that would translate the existing notes to markdown. Good point though about how you’ve spent alot of time setting this up so to just move it to another system in concerning and I’m fully aware of that. To begin with the existing show notes system would run in parallel to the new system with a way to switch between the two and certainly saved songs in any new edition would continue to save the old show notes in case you need to go back to an earlier version. The big question for which I don’t have an answer yet is how cleanly your old notes will move to the new system - see further comments below.

There probably will be a bit of a learning curve there, but probably only for more advanced stuff. Most of the basic typical usage should be fairly easy to use.

I’ve not looked into how feasable this is, but I’m guessing not trivial. Also, I need to look into supporting PDFs via the network server - it’s entirely possible this might make PDF support with external viewer a lot cleaner (though still in a separate window).

Yep, but it’s an interesting challenge which I’ll probably do as a night-time/weekend project while continuing other work on Cantabile in parallel. Luckily the needs for Cantabile aren’t too demanding and it’s something I can develop in isolation.

So the big question is: how well will existing show notes map to markdown? Here’s some things that might affect this.

  1. Show notes with both an image background and text in the one “note”. Markdown only really supports text or image in one place - not overlaid like Cantabile can currently do. HTML can do this though so there might be a solution in there somewhere.
  2. Scaled images. Cantabile can scale images to make them larger/smaller than their native size. I’m not sure how this will map to markdown, but I can probably figure out a solution.
  3. Use of variable (eg: “$(SongTitle)”) in show notes. The new implementation will certainly implement variables that don’t change over the course of the song/state. Dynamically updating variables however (eg: transport position, cpu load, current time) might not be supported - it’ll depend on the HTML renderer implementation whether it can easily support dynamically changing content.
  4. Lots of different font styles/colors. Currently you can format each note with a different font, size and color etc… This is more difficult in markdown because it’s designed to produce consistent looking documents. If your show notes have fairly arbitrary/random variations across notes that might be tedious. If however you like all your notes to have similar formatting then the new system will probably work in your favour.

I’d be interested in hearing in more detail about how every uses show notes - especially in relation to the above mentioned points.

Another possibility might be to keep the existing show notes and in-app editing, but allow markdown in the show note content. It would still need a HTML rendering engine in the background through to draw it all.

To sum up, this isn’t an imminent change, you won’t lose anything nor have to start over again and there will definitely be a transition period where you can use either system until teething problems are resolved.

Brad

That puts me at ease then. I like the concept and where this is going. The possibility of seperate show notes has been a hot topic at several rehearsals lately. Many bandmates interested, especially since everyone has different needs, as you stated above.

I’m open to it, but it seems a sledgehammer to crack a nut, at least in my case. Much beyond font, bold, italic, text size and colour I feel that the rest is overkill.

This is just a personal perspective; I can see that other people would like all this clever stuff, and I can respect that. I simply think that there are higher priorities.

I really like the idea, and it doesn’t seem like overkill to me. There’s a big benefit in being able to do show notes with mixed font, bold, size, colour etc. yet still keep the data in a plain text format that’s readable and editable in any text editor, and on other platforms.

And having all of a song’s notes available in a single file will be really beneficial too, allowing you to move/copy notes between sections of a song easier, and even just being able to see the notes for multiple sections of a song without having to toggle between song states will be helpful. And for geeks like me who like to keep their Cantabile files in version control, it’ll be especially cool to be able to track the edit history of show notes in a nice way.

One thing I sometimes wish I could easily do is to export the show notes for a song to some format I can read on my phone when I’m travelling etc. It would be really handy to be able to review and reinforce memory, while away from my music computer. @brad’s proposal would immediately provide this feature.

The other really nice thing about this proposal is being able to easily embed images inline with show note text, without the (current) need to maintain the show/hide state of a set of different notes. The particular scenario I have in mind is where you might have mostly text-based notes, but then occasionally want to throw in a stave or two of score notation, mixed in with everything else, to remind you of a melody line or something. This would be dead easy in the new proposed scheme.

I had a few thoughts about this. The need to use an external editor might feel a bit disjointed for some people, and also the need to maintain show notes for different song states using logic built into the note might feel onerous. So how about:

  • When you create/modify/reorder/delete song states in Cantabile, it automatically maintains the corresponding different sections of the Markdown file
  • When you double-click on show notes displayed for a given song state, it could just bring up something like the existing integrated show notes editor, but just showing the Markdown for the current state. Or optionally, bring up an external editor, but again just for the Markdown for the current state (it could do this by using a temporary file somewhere)
  • Provide a separate command to open up the whole Markdown file in an external editor, to give you the “full picture” for anyone who needs it.

That would mean people could continue working more or less how they are now, not needing to worry about maintaining the {{#if Verse1}} stuff, thus also avoiding the risk of forgetting to close those blocks etc. It would also avoid the difficulty of looking through the Markdown file to find the right block to edit for a given state.

People could also continue to write their notes more or less exactly how they always have, using the integrated editor, in plain text with no formatting, if they so choose, since plain, ordinary text is also valid Markdown. Thus the transition to the new system could be pretty seamless, except perhaps in a few odd cases where people happen to be using text that’s actually Markdown formatting, like “## Something”.

Almost all of my show notes follow the same style, using a fixed-pitch font of a specific size, and I make very heavy use of the horizontal layout capabilities of fixed-pitch fonts; I have many things aligned a different horizontal positions for readability. Thus, I’d really hope existing fixed-pitch notes get converted into Markdown with the ``` formatting.

All my show notes are the same colour, and if I use images, it’s for the whole note (e.g. a music score image), and I don’t do any overlaying. The only variables I use are for song/state titles, which I have in a separate note object at the top (without state behaviour), so it gives a clear visual indication of the current state in a larger font. I don’t use any variables that change within a given state.

For me, your mention of having a custom stylesheet that applies to all notes is really attractive. I really like consistency across notes, and being able to define some of that appearance stuff globally would be nice, to avoid having to set it in each song.

Big thumbs up from me! :slight_smile:

Neil

1 Like

I might be one of the edge cases, so I haven’t jumped on this. In my band I need “real music” notes/staff for horn parts and such. I go back and forth between keys and sax/flute. We create the horn section parts with Musescore. In the past, I’ve taken my part and converted the Musescore PDF output to PNG for display in C3 with Show Notes. I try to edit it such that it’s either one page, or the pages match Song States. I’ve had a couple of issues with C3 and Google Drive fighting, and wind up with the PNG files missing and Show Notes blank. Meanwhile, the other horn players decided to switch to iPads with forScore for displaying PDFs. Now, I send a Song Select via a Binding from C3 to the iPad using rtpMIDI. I’d prefer to send a Program Change, but haven’t been able to get forScore to work with that. For now, Song Select is working flawlessly–I just have to create separate in-sync playlists for forScore and C3 and mind the page turns. That said, there would be fewer moving parts if I could display PDFs with C3.

1 Like

Something I’ve been thinking of that might be really helpful is the ability to support 2 screens (like Ableton) where two monitors could show Routing and Show Notes separately. Alternatively, 1) a split window to show both views, 2) the Controller Bar on the Show Notes page, or 3) floating Toolbar/Controller Bar that could be dragged anywhere.

1 Like

Hi Brad,

I wanted notes support from early on and am very glad C3 has support for it, it was a very wise inclusion to the app. I’m in the safe boat as far as I am already OK with C3 notes but I see the bigger picture for others when it comes to networking the already well organized Cantabile Song way of thinking and saving pertinent support literature or images. For a large professional group with multiple iPads or monitors the networking and Html options seem very forward thinking. So, like Corky mentioned, as long as it can be as simple as it is now with the option to be far bigger for those who could really use it in their group. This seems well thought through, so I’m a thumbs up on it!

Dave

1 Like

Thanks everyone for the feedback… very useful and lots of food for though.

If I’ve got to write code to render mixed fonts in the one paragraph I might as well use open standards (aka html) for specifying how to do that.

Yep and I’m thinking about supporting this in Cantabile. In the meantime, you could use network server/browser as the second screen.

1 Like

I’m using Show Notes to represent the sounds of the 8 parts that my physical controller controls. I’m using one text note per part. I’m using 1 color per text note that corresponds to the color that I set for the midi in channel. Based on state I’m enabling/disabling my parts, and I ‘grey out/hide’ the corresponding text notes. I would love to additionaly see that I could ‘grey out/hide’ this text note, based on a on/off binding ( representing a button on my controller). This is the only dynamic action I would love and use for sure. I do use static variables like song names and states.

For now my sheet music is kept in PDF and I’m using forScore for that. My first priority for text notes is having overview on settings, sounds and states in live situations. If this is provided in another way (e.g. dynamic mixer panels), I would consider switching to chord or score sheets in c3.

1 Like

For me it’is a good idea let the user making own styles and give it all the html features.

Even if i know how to write html, i think it could be a good strategy to use a kind of open GUI for WYSIWYG like CKEditor, embedded in the Show notes windows.
In this way the user could be able to create almost everything with this powerful library.
No custom engine but a simple web browser control.

I think that without a smart utility to create html lot of people could turn one’s nose up…

The difficulty is not lose the interaction with the song’s states (scrolling, events, binding, ecc…). I think this point can not be lost per obvious reasons :wink:

My thoughts :slight_smile:

1 Like

I like the idea, but I’d be more inclined to use HTML (since I’m familiar with it) over Markdown (which I’m not, although it doesn’t look too difficult).

1 Like

The thing about Markdown is that when not “rendered” and just viewed as raw text, it still looks clean and readable. So you’d see:

# My Heading

instead of

<h1>My Heading</h1>

Which means you can edit it in a plain text editor without the clutter.

Neil