My coding skills are not great, but I think I should be able to figure my way around enough to make this work. I'm going to make my way through the Development Guide as well in case I want to add things like scrolling pages to give me more layout options, but this definitely gets me on the right track.
Original Message:
Sent: 08-25-2023 14:16
From: James Peltzer
Subject: Carbonite Proc Amp selection & control from Ultritouch (Dashboard Custom Panel)
Hi Garrett
I can try to point you in the right direction here. Carbonite uses numeric OIDs for each of its parameters so there is no automatic method to guess at the OIDs for each of the Proc Amp settings. The easiest thing to do is to build a list of the OIDs you're interested in by using the openGear Parameter Inspector:

When you click the "Toggle Parameter Inspector Mode" you will see a blue overlay on the open tab in DashBoard and, as you move your mouse over the sliders, you will see a red outline. When you click on a slider, you will see information about the parameter it is showing including, most importantly, its OID:

You will want to record the OIDs for each setting you care about. The OIDs will be different for each output on the Carbonite. In my example panel (below), I made an array of JSON objects to hold the list of OIDs for each of the settings.
Once you have the OIDs, you can create a new custom panel, set the Carbonite as its data source, and add the ProcAmp parameters to it. Since you are adding the parameters directly (instead of through the drag/drop of Carbonite's widgets), you will be able to override their widget hints and change the slider from vertical to horizontal:

Lastly, if you give each parameter display an ID, you can update it through ogScript to move from one OID to another - you can use this to quickly use the same UI for the ProcAmps for output 1, 2, etc:

Here is an example panel where I have done the first 5 Proc Amp settings for the first 4 outputs:
<abs contexttype="opengear" gridaspect="false" gridheight="203" gridwidth="1304" keepalive="false" objectid="Carbonite 00:0F:9B:03:61:DA<br>Slot 0<br>Carbonite" objecttype="Carbonite" subscriptions="false" touch="true" virtualheight="203" virtualwidth="1304"> <meta> <api immediate="true">var outputOIDs = [{ "chroma": 0x4309, "luma": 0x430A, "hue": 0x430D, "black": 0x430E, "gamma": 0x4311},{ "chroma": 0x4337, "luma": 0x4338, "hue": 0x433B, "black": 0x433C, "gamma": 0x433F},{ "chroma": 0x4365, "luma": 0x4366, "hue": 0x4369, "black": 0x436A, "gamma": 0x436B},{ "chroma": 0x4393, "luma": 0x4394, "hue": 0x4397, "black": 0x4398, "gamma": 0x439B}]function updateSelectedOutput(src){ if (src < outputOIDs.length) { params.updateParamView('chroma-view', outputOIDs[src]['chroma'], 0, null); params.updateParamView('luma-view', outputOIDs[src]['luma'], 0, null); params.updateParamView('hue-view', outputOIDs[src]['hue'], 0, null); params.updateParamView('black-view', outputOIDs[src]['black'], 0, null); params.updateParamView('gamma-view', outputOIDs[src]['gamma'], 0, null); }}</api> <params> <param access="1" constrainttype="INT_CHOICE" name="Output" oid="Output" precision="0" type="INT32" value="0" widget="radio-toggle"> <constraint key="0">1</constraint> <constraint key="1">2</constraint> <constraint key="2">3</constraint> <constraint key="3">4</constraint> <constraint key="4">5</constraint> <constraint key="5">6</constraint> <constraint key="6">7</constraint> <constraint key="7">8</constraint> <constraint key="8">9</constraint> <constraint key="9">10</constraint> <constraint key="10">11</constraint> <constraint key="11">12</constraint> <constraint key="12">13</constraint> <constraint key="13">14</constraint> <constraint key="14">15</constraint> <constraint key="15">16</constraint> <constraint key="16">17</constraint> <constraint key="17">18</constraint> <constraint key="18">19</constraint> <constraint key="19">20</constraint> </param> </params> </meta> <simplegrid bottom="2" cols="5" hspace="2" left="3" top="5" vspace="2" width="356"> <param expand="true" oid="Output" runtasksonload="true" style="style:toggleButton;"> <task tasktype="ogscript">updateSelectedOutput(params.getValue('Output', 0));</task> </param> </simplegrid> <table bottom="5" right="5" top="5" width="939"> <tr> <label colspan="1" fill="both" name="Chroma Gain" pheight="64" pwidth="76" rowspan="1" style="txt-align:east;"/> <param colspan="1" expand="true" fill="both" id="chroma-view" oid="0x4309" pheight="64" pwidth="241" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"> <config key="w.nospinner">true</config> </param> <label colspan="1" fill="both" name="Luma Gain" pheight="64" pwidth="63" rowspan="1" style="txt-align:east;"/> <param colspan="1" expand="true" fill="both" id="luma-view" oid="0x4309" pheight="64" pwidth="241" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"> <config key="w.nospinner">true</config> </param> <label colspan="1" fill="both" name="Hue Rotation" pheight="64" pwidth="75" rowspan="1" style="txt-align:east"/> <param colspan="1" expand="true" fill="both" id="hue-view" oid="0x4309" pheight="64" pwidth="241" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"> <config key="w.nospinner">true</config> </param> </tr> <tr> <label colspan="1" fill="both" name="Black Level" pheight="64" pwidth="76" rowspan="1" style="txt-align:east"/> <param colspan="1" expand="true" fill="both" id="black-view" oid="0x4309" pheight="64" pwidth="241" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"> <config key="w.nospinner">true</config> </param> <label colspan="1" fill="both" name="Gamma" pheight="64" pwidth="63" rowspan="1" style="txt-align:west"/> <param colspan="1" expand="true" fill="both" id="gamma-view" oid="0x4309" pheight="64" pwidth="241" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"> <config key="w.nospinner">true</config> </param> <dropspot colspan="1" fill="both" pheight="64" pwidth="75" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="64" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> </tr> <tr> <dropspot colspan="1" fill="both" pheight="32" pwidth="76" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="63" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="75" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> </tr> <tr> <dropspot colspan="1" fill="both" pheight="32" pwidth="76" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="63" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="75" rowspan="1"/> <dropspot colspan="1" fill="both" pheight="32" pwidth="241" rowspan="1" weightx="1.0" weighty="1.0"/> </tr> </table></abs>

------------------------------
James Peltzer
Ross Video
Original Message:
Sent: 08-21-2023 23:11
From: Garrett Strudler
Subject: Carbonite Proc Amp selection & control from Ultritouch (Dashboard Custom Panel)
Is there a way to select and control different input Proc Amps / Color Correctors for a Carbonite from a single Dashboard Custom Panel (for use on an Ultritouch)? When I copied over the various required elements from the Carbonite DB panel to a new Custom Panel, the input selection doesn't work (just appears blank), and the control buttons and sliders are locked to a particular input.
I was able to work around it right now by building separate panels for each input that required control and updating the OIDs for all the sliders on each panel, but it's not flexible at all and I limited what controls I put on the panel to save some headache building them all out.
Also, any chance the sliders can be displayed horizontally, or are they locked vertically? I couldn't find any way to change their orientation and on a 2U Ultritouch there is not a lot of travel.
Edit: This is on an Ultrix Carbonite for reference.
------------------------------
Garrett Strudler
Freelancer
OR, United States
------------------------------