Mackie C4 Project and Novation A-Station remote panel

First thank you so much Steve (again) :smiling_face: ,
i am still not sure if i did understand everything what you wrote here. I mean it seems that i organized everything ok so far, judging by your tutorial and what you wrote here. BUT i am not at a point, where i actually really need to deactivate and activate presets, i only prepared the project so far, that i can use these scenarios in the future, where they will become handy for sure.

So currently i dont deactivate or activate any presets by the outgoing ‘activate preset’ action and also dont use any of your mentioned checkmark boxes so far. Only used presets are active currently, but not set to ‘Always Active’.

So in theory a outgoing action with ‘Activate preset…’ should do nothing currently, because it points to a preset that already is active. However it does more then this, like i wrote previously, it stops processing further in the current preset and continues processing wherever the ‘Activate preset’ points to, much like a Goto ‘Label’ command. I just want to be sure now, if this is correct/true.

It would be a very nice feature for me, if i can use ‘Activate preset’ this way.

You might think ‘what is this guy doing’ :slight_smile: , but i am still learning. Everything would be a lot easier, if i would not need to take care of so much things, like to store and print the value and to reflect the value with the LED rings. I would say its triple the afford vs. a ‘standard’ midi-controller that has no displays and no rings :wink: . On the other hand, if everything works, the outcome was so much worth the work. Current state is, that page one seems to work like it should. There is just one thing that annoys me a lot and i want to get rid of. I will first try to hopefully solve this problem on my own.

I would like to see an example as this is not the designed behavior unless you have ‘stop processing’ in the current translator.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Ok Steve, false alert :smiling_face:, my mistake. Indeed there was a ‘stop processing’ checked, for a translator prior the last translator (which was just a log translator, showing different variables at the end of the preset). I just forgot about it and since i did not see the ‘logged’ variables in the event window, i assumed it worked that way . I am sorry :frowning: .

Will post a newer, better version of the project later on. Feeling so dumb again. I wish i would have more time for this, but no matter what, i will finish this thing.

As I suspected.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Steve and Bome fans :slight_smile: ,

i could not spend much time for the project, but i made some progress. I think i figured out how the level-metering on a C4 is working. Initially i thought i could only show 16 channels of level metering, but it turns out that you can have level metering for each Vpot, so in case for the C4, there are 32 level meters possible :open_mouth: . I also found out, how to use the meters for things that are not decaying over time, i.e. a modulation wheel (unlike aftertouch, velocity etc.).

I would like to use these level meters, to express the influence of the controllers for the given parameters. This would be my last page for the panel and then i hopefully can finish the project. So my problem is how to interpret the values. The controllers and the associated influenced parameters are discussed on page 44 of the A-station manual in my first post.

There are five controllers that can be used:

Velocity, Aftertouch, Pitch-Wheel, Mod-Wheel and Breath Controller.

In case of Aftertouch, Mod-Wheel and Breath Controller, you can setup up to five parameters with pos/neg values ranging from -63 to +64:

Pitch, Pitch Modulation, Frequency, Frequency Modulation and Amp. Envelope.

And here comes the part i do not understand: All these parameters can be setup, even if no controller is used. Do these controller parameters just add up to the existing values? or do they “overwrite” the existing values you might setup before. Because of this, I simply do not exactly know, what to show with the level meters.

Example: lets say we use the mod. wheel for cutoff and set this parameter to +32. What happens with the initial Cutoff setting that is lets say +80 ?
Using the example and to my understanding, i would show a level meter that fills up (starting at zero), the further i move the mod wheel. If the end is reached, the level meter should show a half-filled bar, but is this correct?

Thats all for now :slight_smile:

1 Like

I’m not sure I understand the question here. Are you looking to using the C-4 to display these amounts? I don’t see any paramter values that would be send by the A-Station via MIDI.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Yes, i want to display these amounts and instead of using a static numeric value, i want to use moving vertical bars, displaying the “influence” of the controller. If you press a key or move a wheel, you should see a moving bar. The send values are coming from a keyboard. To my understanding of the manual, the values you set for the controllers, are endpoints for a min/max range.

The MIDI coming from it’s source will need to be converted to that that the C4 wants to see for it’s LED rings. So Pitch bend, for instance will have to be scaled and converted from 0-16383 to to values of 0-12 for a Mackie LED ring.

image


Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Steve,

first thanks for looking into this. I should have explained it better and i will try to keep it simple.

I want to show keyboard expressions / touch dynamics and modulation wheel on the display, not on the rings. This conversion is already working. I move the wheel, i see a level meter/bar move on the display according to the movement of the wheel. So far so good, but we have five parameters that can be attached to the modulation wheel movement. If the five parameters use the same value, then we see five level meters that move synchronized. If the value is set to zero, then there is no movement of the level meters at all, even if i move the wheel. So basically we set a min/max range here, where min is always zero and max a pos/neg value that can be set.

Now lets take a closer look to one parameter, i.e. Cutoff. There is a standalone parameter Cutoff that is not attached to the modulation wheel that can be set and there is the Cutoff parameter that is attached to the modulation wheel (this is true for all five attached parameters, but lets keep focused on Cutoff).
My question is, are these two Cutoff parameters tight together or does the Cutoff parameter attached to the modulation wheel “overwrite/ignore” the setting of the standalone Cutoff parameter?

If they have a relationship, then the min setting should be the value set for the standalone Cutoff parameter and the range would be +/- 64 from that point. Is this correct?

How this is handled, is not clear in the manual.

What display, a computer display, your keyboard display , a scribble strip, or something else?

I hear that you wan the modulation wheel attach to several parameters. The modulation wheel of course will only output one value (CC1). Are you lookint to take that CC1 value and attach various values of the CC1 value to multiple parameters? If so, then you would need a translator for each parameter and possibily different rules in each translator to output a different value based on the incoming value of CC1.

You are sending value to the level meters? Is this on a DAW, your A-Station, or your C4 controller? For Mackie MCU, level meters are momentary, so to keep them showing at the value you want, you need to have a timer periodically update them or the always drop to zero.

Sorry, which manual are you referring to?

I think I’m still lost on what you are really trying to do.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Sorry if it was not clear, i meant the display of the C-4.
Here is a gif animation, where i move the mod-wheel up and down, with a +64 value setting for Pitch Modulation and Reverb Level.

Sequenz 01_1

The A-Station delivers these parameters that can be attached to the mod-wheel.

My setup is a Master-Keyboard, the A-Station and the C-4. Everything routed through Bome MTP.
What you describe is one option how to use the level meters. I admit it is the most common, but you can also use the level meters to show static bars, like in my gif animation above. The “decaying” level meters you describe, are expecting incoming aftertouch values to get them working.
With Bome i am able to use the meters without the decay and i dont need a timer for that. It only needs one Sysex-message to show the bar and one translator in Bome. The input can be anything.

I am referring to the A-Station manual (starting on page 44). I just want to be sure that i am showing the correct values with the level meter bars. The goal is to have a gimmick that visually shows the impact of a moving mod-wheel, based on the parameter you set with the A-Station (or remotely with the C-4).

I am really sorry if i am annoying you, i just thought you are more familiar with the “manual language” and know what they describe there.

Thanks for your patience.

You are not annoying me, it is just I wasn’t sure what you were asking.

You will need to look at the SysEx messages coming from your A-Station to determine how to update various bars. I assume these are Scribble strip messages but am not sure, whether you would be able to take several scribble strip messages, store them and them manipulate to what you want your display to show. I’ve actually never seen bars in in Mackie MCU display scribble strips, just text. Maybe the C4 handles these messages uniquely that a normal MCU would not.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Steve,

Thats the crux with not having any documentation for the C-4. The only one, is the one for the MCU, but this documentation is tailored to that product of the MCU family. Since the MCU is intended to be a remote-mixer, it seems it was not important to describe the level meters in detail. Because of this circumstance, the documentation tend to mislead of what is really happening and how to interpret things. I am very sure, you can do the same on a real MCU or any MCU based device, that supports metering.

In my first post here, on the last picture is the character sheet, of all chars you can scribble. Basically the level meters are just special chars and they are listed on that sheet too. they are located from Hex 00 to Hex 0F. Unfortunately these special chars can have two states, depending what kind of “global” metering setting is activated (horizontal or vertical) and by default, they are set to horizontal. Now if you print these values (Hex 00 to Hex 0F) they will look like garbage, someone could even think he broke the unit :smiley: .

But if you switch to vertical mode, the chars change. Thankfully these special chars are layered/ordered in a numerical way. If you now translate lets say a 0-127 CC range to the first eight chars and then scribble these chars, you will be rewarded with a moving bar :wink: . This bar can be placed anywhere on the two rows of the C4-display by using the offset feature of the scribbling. You do all of this with a sysex scribble text message. Just like printing number values, going from 0-7. Really simple.

The “decaying” level meters have a fixed place. One for each Vpot/Cell. The vertical meters are always placed after the fifth char of a Vpot/Cell. The horizontal meters occupy all six chars of a Vpot/Cell and are placed at the bottom row of a Vpot/Cell on the display of the C4.

If you are interested in this, i would prioritize the documentation for the level meters. So you can check for yourself (if you have a MCU based remote at your hands of course). Definitely no problem doing this for you. Sadly i need to go now and maybe i will post later on.

Happy weekend Steve :slight_smile:

Metering on the MCU is usually not done on scribble strips and is on separate meters. Maybe that is how the C4 is using it and just encorporating it in the existing scribble strips.

Interesting. So it looks like you may have found a way, however you would have to modify or create a SysEX based on the paramter that the A-Station sends.

If you could capture a SysEx string the includes the meter, I would be interesting in testing in on my X-touch (which is MCU compatible). I don’t have an actual Mackie MCU.

Take care!

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hi Steve :slight_smile: ,

This is true, because the MCU uses only the “decaying” levelmeters and this special function needs to be enabled with a different sysex-message. Let me explain this by using the docs for this:

First is the receiving part. It expects Aftertouch-values on midi-channel 1 of the MCU. The whole incoming aftertouch value range, is divided by 8, so that each Vpot/Cell can be adressed with a value range of 1-16 (out from the aftertouch range). Example: 0-15 of the aftertouch range is reserved for Vpot1, 16-31 is reserved for Vpot2 and so on.

You can test this feature with Bome by using a translator that translates whatever into the (reserved) aftertouch values, or just by sending aftertouch values from i.e. a keyboard (which can be tricky if you need to play in a certain aftertouch range).

Next is the “Channel meter mode” sysex message: << Hdr >>, 20, ii, mm, F7
<< Hdr >> refers to “header” of the sysex message.
For a MCU it is: F0 00 00 66 14
For the C4 it is: F0 00 00 66 17
This might differ for your X-Touch. You may need to check the manual.
The “20” equals to the function you want to use, in this case, the “decaying” level meters.
Initially i thought that “channels” are midi-channels, but they meant the Vpots.
So “ii” is the Vpot ID and with that, also the placement of the individual meter on the display.
MCU has eight Vpots, so the range is 00-07. On a C4 this range extends to 00-31.
mm” turns the “decaying” level metering for the choosen Vpot, on or off.
A value of “00” turns it off and value “04” turns it on.
Example: F0 00 00 66 14 20 07 04 F7 activates a “decaying” level meter for Vpot 8 on a MCU.

The last part is the Global LCD meter mode. This sysex-message sets a global setting for horizontal or vertical level-metering. You cant mix these modes. You use either horizontal or vertical bars, but not both. The reason for this is, that the “special” characters used to scribble/print the level metering on the display will change, depending on what global mode is set. This takes processing time, thats why they recommend using a 600ms delay, while switching from horizontal to vertical mode or vise versa.

Example: F0 00 00 66 14 21 01 F7 activates vertical level meter characters as a global setting.

Now if you want to print your own level meters that are not “decaying”, here are the rules I wrote for a single translator in Bome, to display a vertical bar for Vpot 7, that goes from bottom to top row of the display:

if qq>=64 then of=47
if qq>127 then qq=127
if qq>64 then oo=qq/8
if qq>=64 then pp=oo-8

if qq==64 then pp=32

if qq<64 then of=103
if qq<64 then oo=qq/8
if qq<64 then pp=oo

// qq = incoming value range
// of = Offset/placement for the level meter, also needed
// to switch from bottom row to top row of the display and vice versa.
// pp = the character that is to print

and this would be your outgoing message: F0 00 00 66 14 12 of pp F7
You only need to be sure, that the global setting is set to vertical meters, otherwise you will see the horizontal level meters and these need to be spread across six characters on the bottom row of the display. Vertical meters occupy just one character on each row of the display to show up properly. From here on, many things are possible. You can split the bar to show positive and negative values (a bit tricky, but possible), or you just use half of the meter and showing it only on top or bottom etc.

OK thanks, I’ll play around with this on my X-touch when I get some downtime for my other priorities.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thank you Steve, please report your find outs here. I am curious how other hardware will react to this.

Meanwhile i experimented a bit more with the level meters. It turns out, doing more then four level meters, will lead to slowdowns on fast movements, which makes them not accurate anymore. This happens mainly because the translators are reacting to every incoming value (from the mod. wheel). So i need to reduce the traffic a bit :slight_smile: .

My idea is to only execute the translators, if the incoming message is outside of a certain range. I would need to store the incoming value to a global variable and use that global to compare it with the next incoming message. If the new incoming value is in the range of the stored global variable (i.e. global variable ± 8) it should exit rules and skip outgoing action. So i can avoid a lot more sysex messages, that are basically the same, as the previous ones. Since we have only 7 bars/pixels per level meter, but a range of 64 values. I hope you get the idea. So my translator is working, but not efficiently :slight_smile: .

Yes or you could use a watchdog timer that only updates the display when you stop moving the control a given period of time.

For instance you move a control really fast, and you give watchdog timer a delay of 20ms. You only send the value after the time trips instead all of the interim values.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

This sounds great. If i could manage to use both methods (this one and my initial idea), it would be perfect. How would you setup the trigger for “really fast” and the timer?

In my worst case scenario, the mod-wheel will affect nine level meters. I hope i can get it to work :slight_smile: . The whole situation made me think a lot about bi-directional feedback. How much automation feedback from parameters is even possible to show. Lets say i record movements for seven Vpots, will the feedback show up properly while playing them back… it makes me worry a bit.

If you are monitoring multiple VPOTs, each one that you are monitoring would need to start the watchdog timer. That way all VPOTs would need to stop moving before the timer triggers, otherwise the timer would be restarted every time any VPOT is still moving thereby not allowing the timer to trigger.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz