Working on a new version of the Show Notes panel


Hey Everyone,

I’m starting work on a new version of Cantabile’s Show Notes panel that will hopefully address most of the feature requests since it was originally released. I’ve put if off for so long because to do it properly is a fair bit of work, but I’ve decided the time has come.

The plan is to turn the show notes panel into a rich text editor - essentially a mini word processor, just click and start typing. It will also have the ability to embed other content types: images, PDF pages, ChordPro blocks, perhaps markdown sections etc…

The core functionality for this I’m building right now as a general purpose rich text editor in the new version of GuiKit (the toolkit Cantabile’s UI is built upon) and I’ve decided to document the entire process as a series videos. Since they’re more technical than what the typical Cantabile user will be interested in I’m posting them to the Topten Software blog and YouTube channel rather than the Cantabile ones.

In any case I’ll post them here as well for anyone interested and the first two are below. If you’re curious in what goes into developing a feature like this, follow along and of course feedback and questions welcome.



Hi Brad,

Thanks very much for this news! I will be following along … :smiley:



Thanks @dave_dore

and here’s part 3:


Got to say that OO languages absolutely baffle me, but as a programmer (COBOL, BASIC, Assembler) I find this fascinating! Thank you for sharing it with us.


Hi @The_Elf… if you ever feel inclined to learn more about OO I highly recommend C# - it’s an excellent, modern language that’s easy to use even from command line and simple text editor.


@The_Elf OO is not hard to grasp, and I speak as somebody who started in the 80s on a small 8080 microprocessor evaluation kit, where you had to hand assemble you code (work out the op codes and operands) and punch in the raw hex!

I learnt OO on C++ (C was my main language before then), but migrated to Java for my librarians (for the cross platform promise) and OO in Java was easier than C++ as all the confusing features of C++ are removed, and you do not need to worry about pointers and memory allocation!

I think OO leads to better, more encapsulated code, and well worth taking a look at, either C# or Java


Hi Brad,
That sounds really cool. Any plans on how this will be reflected in the web UI?


@brad … You asked if you were delivering at a good pace and it was fine for me, not to much detail and not so fast it didn’t click for me. It’s like a free programming tutorial for me that is very fun. Keep em coming!




I think it should fit together pretty well… but I won’t know until I actually get to implement it. The plan would be to render the entered text as HTML for the web UI. It may not layout exactly the same, but it should be very close since RichTextKit and Chrome both use the same underlying libraries for rendering and text shaping.

The bigger question is migrating existing show notes to the new version and integration with state management… but since I’ve got full control of the editor I should be able to make it work.



That’s my biggest worry, but I am confident you will make it work.


If it doesn’t work seamlessly I’ll probably include an option to continue using the old version, with a command to switch to the new version when you’re ready.


I’m good with that. Thanks Brad. :+1:

I have nearly 800 songs now, so…


Oh, believe me, I’ve tried. I did get to a point where I could write a simple Java program, but I really couldn’t get my head around all this library stuff. Every time I tried to do anything beyond the absolute basics I had stuff reported missing - it was a world of absolute frustration.

And I find OO languages absolutely unreadable. Quite how we arrived at languages like this when we seemed to be headed the way of understandable languages like COBOL equally baffles me! Languages should have become MORE readable over time, not LESS! It’s like the originators were obsessed with brackets! Lol!

And(!) I fundamentally struggle with programs that don’t ‘start at the top and end at the bottom’! :grinning:

So I’ll be grateful that there are experts like you out there and I will continue to watch what you’re doing with a sense of wonder and gratitude. Great work.


Part 4 - Keyboard Navigation


Just one thing. You said Twitter is the best place to feed back? Not here? That’s the first I’ve heard of that.


Since this isn’t specific to Cantabile, more about development in general and more technical than what the typical Cantabile user would be interested in I’m posting it to Topten Software channel/blog/twitter instead of the Cantabile ones.

(ie: the target audience for this is wider than just Cantabile)


Ah, OK. Thanks! :+1:


Nice videos Brad!
Good to see some real life code and not just examples.


Well my initial takeaway is that @brad wasn’t kidding when he explained to me why this would be a major undertaking that was not initially in the plan but with all the injection of ideas over the past time this large scale addition to C♪3 is happening! I am not sure if my question is relevant but I was wondering if the number of Scroll index points for Notes will be the same or if it can be enhanced and if your plans for the SongBook extension inclusion will have that apps scroll timer and pause features in it?

Thanks again for the videos Brad :smile:



Hi Dave,

The initial plans with show notes is to get the existing functionality matched with the new implementation. Obviously the bulk of the work there is just getting the editor working and support for RichText.

As mentioned in the videos I am planning for embeddable content like ChordPro blocks, images, perhaps PDF pages.

Not sure I remember what you mean by “SongBook extensions”.

Once I get the functionality matched I’ll be in a better place to look at extended functionality like auto-scrolling and other embeddable content types. Whether that happens immediately as part of the re-write or later as an improvement I’m not sure yet.