AZ Controller plug-in for Cakewalk SONAR > Tutorials

Strip level monitoring

(1/2) > >>

In case you have some light coming from your controller, for example from LEDs or colored pads, it is possible to indicate current volume level of some strip. In this tutorial I am going to show how it works. I will explain 3 different cases:

* You just what to see either something is in "red" area
* Your pad can have several colors and you want it change the color based on the level
* You have several LEDs and you want to use them as one VU meter
We start from scratch, so in the Options Tab select from "Tweak current configuration..." "Reset configuration".

* Define Software Set "tmpMeter" with states from "0" to "6". The number of states should be greater or equal to the number of levels you want to indicate. But even for just clipping we need many because the whole range (-inf up to 0dB) will be split into that number of states. In case you want more or less precisely -3dB, you will need like 10 states
* Define Software Set "Meter" with number of states equal to final indication variations. For clipping it is 2 (let say "ok" and "clip"), for 3 color pad it is 3 ("black", "green", "red" for example) and for 4 separate LEDs it is 4 ("1", "2", "3", "4")
* Next define System Hardware Control "Strip Level".
* Switch to the Hardware Tab and "Attach" context to "Strip Level" hardware control.
* Switch to the Logic Tab, you should see "((None)) Strip Level:" Logic Control selected
* Press "New" 3 times to get 3 "Updefined" Actions, configure them from top to the buttom as:
* Monitor, Monitor State,  Meter, priority 1. States monitors should be at the beginning (when possible) for performance reason.
* Strip, Track, <Current>, +0, Volume. By that we define the strip to monitor. It is going to be currently selected Track.
* Monitor, Monitor Level, Fast, priority 0. It should be executed before Meter State monitor, that is why it should have "0" as priority. Note that it does not matter that is stay later in the list!
* It is time to define our Monitors. Switch to the Feedback Tab. You should see "Strip Level : : Level Monitor" selected.
* The number of actions you need there depends from target goal, the number of states in "tmpMonitor" and levels (in dB) you want to indicate:
* The first (from top) Action should be in any case configured as: Set state, tmpMeter, <Map MIDI value> (do NOT mark "Set engine state" there !)
* For Clipping indication we need just 2-3 actions after (so lower in the list):
* (Action Conditions: tmpMeter:6, or whatever is the last state in the tmpMeter), Final, Set state, Meter, clip, Set engine state
* Set state, Meter, ok, Set engine state. This action has no conditions.If later you find out that it indicate clipping "too late", so you want lower the clipping region, insert a copy of "Set state, Meter, clip" action with condition tmpMeter:5. If still "too hi", add another copy with tmpMeter:4 and so on. Note, all that actions should be marked as Final and placed before "Meter, ok" one
* For other indication we need at least number of Meter states additional Actions (up to number of tmpMeter states)
* (Action Conditions: tmpMeter:6, or whatever is the last state in the tmpMeter), Final, Set state, Meter, red (or "4" for LED variation), Set engine state
* (Action Conditions: tmpMeter:5), Final, Set state, Meter, red (or "3" for LED variation), Set engine state
* (Action Conditions: tmpMeter:4), Final, Set state, Meter, greed (or "2" for LED variation), Set engine state
* (Action Conditions: tmpMeter:0, or whatever is the first state in the tmpMeter), Final, Set state, Meter, black (or "1" for LED variation), Set engine state
* Set state, Meter, greed (or "2" for LED variation), Set engine state. This action has no conditions (it is "default" action in case tmpMeter has some value we have not mentioned explicitly)In fact we have just "saved" 2 actions there, since we want "green" on tmpMeter:1..3.
The goal of this Monitor is to set Meter Set correctly for measured level. You can adjust which Meter you set on which tmpMeter later in case the level is indicated not the way you want.
Please check that you marked "Set engine state" in all actions which set "Meter" (but not tmpMeter!). And also "Final" flag for all such actions (except the last "default" one, setting it here does not change anything since it is the last).
Note that in case the level is still as before from Meter state perspective, Meter Monitor will not be triggered (as it was not changed). So there will be no (well... in LED case just less) redundant MIDI sends to your controller.
* Now switch "Feedback event" to "Strip Level : : State Monitor". Here we are going to define how to send each Meter level to your controller. For each possible Meter state we need one action, for example:
* (Condition: Meter:clip) MIDI/SysEx,  whatever you have to send to indicate clippingFor "4 LEDs case", we have to write 4 Actions for each Meter level. We need one action per LED per level, so there will be 4x4=16 actions in total (like Off/Off/Off/Off, On/Off/Off/Off, On/On/Off/Off, On/On/On/Off and finally On/On/On/On)
Additional explanation for proposed design:

* We separate tmpMeter and Meter to have flexibility in mapping between them. If we use just one set, 2 level indication is always going to be like "Signal"/"No signal" since the division will be fixed around -30dB
* We do not send indication from Level Monitoring because that will send something each time Level Monitor is triggered. Even in case we have already indication we want for current level. In case we have "real" VU Meter (like Mack.. one), which drop level automatically with time, we in fact have to resend the level. But not in LEDs/Pads case. Also think about "Transport stopped" state. You do not want send "Still nothing" 6 times per second.
I hope you could follow this tutorial. In case you have comments or questions, please let me know.


I played arround with strip level monitoring with the MUTE/ARM leds on my AKAI midimix. The maximum level segments/levels that I found to be working are 13 without the 0 state. Readings I got with noise on the Sonar meters are :

Level 13   lighting from  -   3.3 dB  to  -   1.1 dB
Level 12   lighting from  -   5.5 dB  to  -   3.3 dB
Level 11   lighting from  -   7.8 dB  to  -   5.5 dB
Level 10   lighting from  - 10.3 dB  to  -   7.8 dB
Level   9   lighting from  - 12.8 dB  to  - 10.3 dB
Level   8   lighting from  - 15.6 dB  to  - 12.8 dB
Level   7   lighting from  - 18.4 dB  to  - 15.6 dB
Level   6   lighting from  - 21.5 dB  to  - 18.4 dB
Level   5   lighting from  - 24.8 dB  to  - 21.5 dB
Level   4   lighting from  - 28.5 dB  to  - 24.8 dB
Level   3   lighting from  - 32.6 dB  to  - 28.5 dB
Level   2   lighting from  - 37.3 dB  to  - 32.6 dB
Level   1   lighting from  - 43.0 dB  to  - 37.3 dB
Level   0   lighting from  -    inf dB  to  - 43.0 dB

The problem for me was to have a CLIP led being ON above -1.1 dB. Anything above - 1.1 dB falls in the OK state and turns off the LED ( according to your tutorial) . I worked arround this by turning the LED ON without a condition mapped on the CLIP state and turning the LED OFF for all other 12 levels (conditions) mapped on the OK state.

I am now moving on to banking as the midimix has bank left and bank right buttons. I also managed to get MUTE/SOLO/ARM buttons to light/go off while pressed but would like to be able to read the buttons states from within Sonar. Do you have a tutorial for these kind of tasks?

Once again thank you so much for this fine piece of software.


Hi George,

Unfortunately I do not have any good tutorial for monitoring. But I can make example preset with explanations, to show how to organize things. I will include:
* "bank switching" (really WAI movement...)
* 2 buttons/LEDs (just to keep things simple, it will be easy to extend it for 8 ) with SOLO/MUTE (per strip)/CLIP and signal for current strip.
* CLIP will light 5 seconds if detected
* "Mode" button (probably your "Solo") will switch between SOLO/MUTE (short press) or LEVEL-CLIP (long press)
(I assume MIDIMIX sends On AND Off events when you press buttons, I also assume MUTE buttons sends the same messages independent from SOLO button state, I mean all these buttons have not internal logic inside the device)
Is that sounds reasonable?

Thank you so much Alexey,

I managed to have fully synced MUTE/SOLO, ARM  buttons/LEDs with the help I got from InControl.spp preset. MUTE/SOLO have internal logic - by pressing SOLO shift button the same MUTE button sends other Note on/off. But it worked fine even when changed with mouse from Sonar, LEDs will light accordingly - you don't see any SOLO LEDs until the SOLO shift button is pressed continuously. Banking logic is not internal though - only buttons BANK LEFT and BANK RIGHT exist with LEDs.

A Mode button you suggest would be a great feature so does bank switching.

After that I will be ready to upload an AKAI MIDIMIX preset with your help.

Best  Regards


[0] Message Index

[#] Next page

Go to full version