Is anyone using bindings to create level meters for show notes?

Hi Gabriel & Al,

Thanks for the inquiry. :slight_smile:

I do the following things to make it happen.

I first create the script for the meter. It uses the operators in Cantabile to determine which graphic characters to show based on the level of the CC message that is sent. I chose CC7 on channel 16 but it could be any CC number. The reason I use channel 16 to prevent interfering with any other Controller Bar CC7 uses. Here is an example of a linear colored meter script that covers the whole level meter range.
$(cc(7,16) < 10 ? "🟦" : cc(7,16) < 20 ? "🟦🟦" : cc(7,16) < 30 ? "🟦🟦🟩" : cc(7,16) < 40 ? "🟦🟦🟩🟩" : cc(7,16) < 50 ? "🟦🟦🟩🟩🟩" : cc(7,16) < 60 ? "🟦🟦🟩🟩🟩🟨" : cc(7,16) < 70 ? "🟦🟦🟩🟩🟩🟨🟨" : cc(7,16) < 80 ? "🟦🟦🟩🟩🟩🟨🟨🟨" : cc(7,16) < 90 ? "🟦🟦🟩🟩🟩🟨🟨🟨🟧" : cc(7,16) < 100 ? "🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧" : cc(7,16) < 110 ? "🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧" : cc(7,16) < 120 ? "🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯" : "🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯πŸŸ₯" )

Here is a centered version of the same color scheme

$(cc(7,16) < 10 ? "🟦" : cc(7,16) < 20 ? "🟦🟦🟦" : cc(7,16) < 30 ? "🟩🟦🟦🟦🟩" : cc(7,16) < 40 ? "🟩🟩🟦🟦🟦🟩🟩" : cc(7,16) < 50 ? "🟩🟩🟩🟦🟦🟦🟩🟩🟩" : cc(7,16) < 60 ? "🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨" : cc(7,16) < 70 ? "🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨" : cc(7,16) < 80 ? "🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨" : cc(7,16) < 90 ? "🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧" : cc(7,16) < 100 ? "🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧" : cc(7,16) < 110 ? "🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧" : cc(7,16) < 120 ? "πŸŸ₯🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯" : "πŸŸ₯πŸŸ₯🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯πŸŸ₯" )

These scripts can be copied to a show note field, left justified and then sized using the font size for the note.

The show notes receives it’s MIDI messages from the Onscreen Keyboard port so when you make your bindings to the meter script you need to have it as the target. Here are some example bindings.

The first one sends the expression pedal level to the meter.
The second sends a media player output level
The third sends the Cantabile Master Output levels
The last one sends the VST synth level

Here is how a linear meter would look on the basic levels





I also made some centered versions of the same script, they are like this

Centered Colored Meter

$(cc(7,16) < 10 ? "🟦" : cc(7,16) < 20 ? "🟦🟦🟦" : cc(7,16) < 30 ? "🟩🟦🟦🟦🟩" : cc(7,16) < 40 ? "🟩🟩🟦🟦🟦🟩🟩" : cc(7,16) < 50 ? "🟩🟩🟩🟦🟦🟦🟩🟩🟩" : cc(7,16) < 60 ? "🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨" : cc(7,16) < 70 ? "🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨" : cc(7,16) < 80 ? "🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨" : cc(7,16) < 90 ? "🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧" : cc(7,16) < 100 ? "🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧" : cc(7,16) < 110 ? "🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧" : cc(7,16) < 120 ? "πŸŸ₯🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯" : "πŸŸ₯πŸŸ₯🟧🟧🟧🟨🟨🟨🟩🟩🟩🟦🟦🟦🟩🟩🟩🟨🟨🟨🟧🟧🟧πŸŸ₯πŸŸ₯" )

Black and White Centered Meter

$(cc(7,16) < 10 ? "β–ͺ" : cc(7,16) < 20 ? "β–«β–ͺβ–«" : cc(7,16) < 30 ? "β–«β–«β–ͺβ–«β–«" : cc(7,16) < 40 ? "β—Ύβ–«β–«β–ͺβ–«β–«β—Ύ" : cc(7,16) < 50 ? "β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύ" : cc(7,16) < 60 ? "β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½" : cc(7,16) < 70 ? "β—½β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½β—½" : cc(7,16) < 80 ? "β—Όβ—½β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½β—½β—Ό" : cc(7,16) < 90 ? "β—Όβ—Όβ—½β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½β—½β—Όβ—Ό" : cc(7,16) < 100 ? "β—»β—»β—Όβ—Όβ—½β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½β—½β—Όβ—Όβ—»β—»" : cc(7,16) < 110 ? "⬛◻◻◼◼◽◽◾◾▫▫β–ͺ▫▫◾◾◽◽◼◼◻◻⬛" : cc(7,16) < 120 ? "⬛⬛◻◻◼◼◽◽◾◾▫▫β–ͺ▫▫◾◾◽◽◼◼◻◻⬛⬛" : "β¬œβ¬›β¬›β—»β—»β—Όβ—Όβ—½β—½β—Ύβ—Ύβ–«β–«β–ͺβ–«β–«β—Ύβ—Ύβ—½β—½β—Όβ—Όβ—»β—»β¬›β¬›β¬œ" )

Since the default justification for the Control Bar is Centered I made these Centered versions and they are quite effective.





Anyway that’s how I got there, hope it was helpful.

Dave

9 Likes

Wow! They look great!
A clever use of nested ternary operators!
Thanks!
Gabriel

1 Like

Oh my!

1 Like

Shameless stealing for vertical, too.

$(cc(7,16) >120 ? β€œ:red_square:” : " " )
$(cc(7,16) >110 ? β€œ:red_square:” : " " )
$(cc(7,16) >100 ? β€œ:orange_square:” : " " )
$(cc(7,16) >90 ? β€œ:orange_square:” : " " )
$(cc(7,16) >80 ? β€œ:orange_square:” : " " )
$(cc(7,16) >70 ? β€œ:yellow_square:” : " " )
$(cc(7,16) >60 ? β€œ:yellow_square:” : " " )
$(cc(7,16) >50 ? β€œ:yellow_square:” : " " )
$(cc(7,16) >40 ? β€œ:green_square:” : " " )
$(cc(7,16) >30 ? β€œ:green_square:” : " " )
$(cc(7,16) >20 ? β€œ:green_square:” : " " )
$(cc(7,16) >10 ? β€œ:blue_square:” : " " )
$(cc(7,16) >0 ? β€œ:blue_square:” : " " )

$(cc(7,16))

image

Where do you find these colored blocks and other characters to insert into the Show Notes?

1 Like

Windows Key + β€œ.” (a period) calls up the windows emoticons

I was late to that party… Now I can bind the output levels to a CC on the Onscreen Keyboard Output and give myself the finger >-1 dBFS,

This concept really opens up some visual cue possibilities! Thanks!

This is cool and all but definitely pushing the limits of what it was designed for. Also, I’m getting reports it crashes the WebUI - which I’ll look into, but not right away. Use with caution and definitely double test before going live with it.

1 Like

I was curious if it was out of bounds, which is why I posted asking for input. Thanks for the warnings, I’ll be careful with it till you have time to see about it. I haven’t had crashes but I imagine that the level meters create a lot of processing to handle. It doesn’t amount to a lot of resource drain but requires a lot of comparisons. I created it as an indicator for my auto fader rack that I could put in the Controller Bar and it ballooned from there. I never used the WebUI so I guess that’s why I didn’t see any crashes.

1 Like

I did take a look at the Web UI and noticed right away that it wasn’t as accurate and responsive as the native show notes views were so the traffic is more than the Web UI can keep up or the redraw speed of the browser is lagging or maybe something else. When running audio meter style the Web UI lags by a bit but gives the overall RMS value reliably. My guess is that if that the repeated screen updates are the possible issue. I think that for control value indicators it would be OK because those events are less numerous and spaced out. Anyway more observations about it.

I was fooling with a BPM monitor (different thread) that showed a blinking dot on a floor video screen (WebUI): On for 1/2 a beat then off for 1/2 a beat. At about 120 BPM, the Web UI started skipping blinks. Native screen never misses a beat (ha! ha!).

Would be cool to have something like widgets where it would be possible to put tiles on a canvas and add various elements to a tile. I am normally showing the UI of the plugins to be able to see the status of the knobs and drawbars, but the UIs contains a lot of unecessary information - a small tile/widget with just the essential would make it possible to see a lot more on the screen.

Just dreaming, I know :-).

The WebUI can be edited to only show what you want, so you could pick and choose which parameters of which plugin to show. I guess you could bind any plugin parameter to a CC and send to the onscreen keyboard then it can be displayed on the WebUI. That would be just like what dave_dore did to show the VU meters. Just bind another plugin variable. I just bound a synth volume control β€œknob” to the dave_dore’s VU meter and the bars move when the knob is turned. Bindings below to send both Level and Synth Volume to Same VU meter on WebUI:

This is some help on editing the WebUI.

Some way to show pre-programmed widgets on the WebUI would be nice. When I’m running Cantabile, the laptop is behind me and there is a video screen at me feet. Anything to allow the WebUI to show more information would be appreciated.

Not necessarily, but not imminent either.

3 Likes

FWIW I create my mixer rack meters for MIDI Designer (and my X-Touch) using standard MCU meter output messages from Cantabile. These messages are basically Channel Pressure messages.

When a standard exists it’s often good to follow on, since it immediately makes it compatible with other recipients.

This is fantastic @dave_dore!! Definitely going to play with this, as it would be useful to me (bearing in mind Brad’s warnings).

It would also be nice if we could insert a VST plugin UI into show notes (for example have a new kind of β€œNote” for inserting into show notes that just hosts a VST UI). That way we could just use a VST for this kind of thing, and avoid having to have it as a floating plugin that could obscure stuff.

3 Likes

Hey Neil,

Good to hear from you! I thought of you when I made the discovery. I started out trying to make a bar meter for the Controller Bar buttons to show the condition of my auto fade rack and it led to the Show Notes uses. I think that using it for slider indicators is not taxing the Web UI but porting level meters to it may be dicey. I haven’t had crashes with it natively or with the web UI yet so I’m going to test it few weeks to see what happens. Here are some examples controller button I made with an indicator in the upper field. Since my fader rack has various trigger modes where I can stop the fade at any point it helps me stop at about the right spot level wise. I just go by the number of boxes or the color of the last dot. The lower field shows whether a fade is happening or paused and what direction it is going along with the CC numeric value of the controller number being displayed

image

image

and it has uses for warning indicators.

Great to see you out playing again!

Dave

3 Likes

Sounds like the old anchored GUI mode in Cantabile 2 but with a twist …

1 Like

@dave_dore I’ve now added some controller meters like these to my Show Notes song template and to a few existing songs I have, and it works great! Really nice clear view, I love it! Very ingenious work Dave!!!

1 Like

Hehe, couldn’t resist: I’ve serialized @dave_dore’s original formula for the linear meters. Reduces a bit of the complexity of chained ternary operators, so it might make things a bit easier to digest for Cantabile.

$(cc(7,16)>0?"🟦" : " ")$(cc(7,16)>10?"🟦" : "")$(cc(7,16)>20?"🟩" : "")$(cc(7,16)>30?"🟩" : "")$(cc(7,16)>40?"🟩" : "")$(cc(7,16)>50?"🟨" : "")$(cc(7,16)>60?"🟨" : "")$(cc(7,16)>70?"🟨" : "")$(cc(7,16)>80?"🟧" : "")$(cc(7,16)>90?"🟧" : "")$(cc(7,16)>100?"🟧" : "")$(cc(7,16)>110?"πŸŸ₯" : "")$(cc(7,16)>120?"πŸŸ₯" : "")

Not sure if that helps with the WebUI issues? If they’re mainly UI-update-driven, then this shouldn’t be much different, so I wouldn’t bet on it…

3 Likes

I did some experiments with different types of tempo indicators

top to bottom are the scripts used

circled numbers

``
$(cc(40,16) == 1 ? β€œβ‘ β€ : cc(40,16) == 2 ? " β‘‘" : cc(40,16) == 3 ? " β‘’" : cc(40,16) == 4 ? " β‘£" :β€œβ€)

``

colored dots
``
$(cc(40,16) == 1 ? β€œ:red_circle:” : cc(40,16) == 2 ? " :green_circle:" : cc(40,16) == 3 ? " :green_circle:" : cc(40,16) == 4 ? " :green_circle:" :β€œβ€)

in place serial numbers
$(cc(40,16))

``

all are fed by the same binding. You can create different value settings for higher numbers of beats here if you expand on the ternary statements. All examples are 4/4.

all examples are set to full font size = 100.

Dave

2 Likes