308 lines
14 KiB
HTML
308 lines
14 KiB
HTML
|
||
<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
|
||
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||
|
||
<meta name="generator" content="Adobe RoboHelp 9">
|
||
<title>Parameter Range Scaling</title>
|
||
<link rel="StyleSheet" href="HtmlHelp.css" type="text/css">
|
||
<style title="hcp" type="text/css">
|
||
<!--
|
||
p.hcp1 { margin-bottom:0; }
|
||
-->
|
||
</style>
|
||
</head>
|
||
|
||
<body class="ns-0 ltr">
|
||
<div id="globalWrapper">
|
||
<div id="column-content">
|
||
<div id="content">
|
||
<p><a name="top" id="top"></a></p>
|
||
<h1 class="firstHeading">Parameter Range Scaling</h1>
|
||
<div id="bodyContent">
|
||
<div id="jump-to-nav">
|
||
<p>Since Soundweb London third-party control messages
|
||
always use a signed 32-bit integer for the data value,
|
||
conversions are required from human-readable floating-point
|
||
values to 32-bit fixed-point values. These conversions
|
||
are designed to increase control precision and improve
|
||
the feel of user interfaces. Formulas are given below
|
||
for converting human-readable values to and from device
|
||
values.</p>
|
||
<p> <br>
|
||
<script type="text/javascript" language="JavaScript1.2">//<![CDATA[
|
||
if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }
|
||
//]]></script></p>
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Binary" id="Binary"></a></p>
|
||
<h2>Binary</h2>
|
||
<p>Binary values are either 0 or 1, where 0 means false,
|
||
off, or disabled, and 1 means true, on, or enabled.</p>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Delay" id="Delay"></a></p>
|
||
<h2>Delay</h2>
|
||
<p>Delay times are specified in samples at 96kHz. The delay
|
||
processing object uses this data type, as do the delays
|
||
within a crossover object.</p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_to_Device" id="Conversion_to_Device"></a></p>
|
||
<h3>Conversion to Device</h3>
|
||
<pre>
|
||
ValueToSend = (milliseconds * 96000) / 1000<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p> </p>
|
||
<h3>Conversion from Device</h3>
|
||
<pre>
|
||
milliseconds = (ReceivedValue * 1000) / 96000<br>
|
||
|
||
                                </pre>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Discrete" id="Discrete"></a></p>
|
||
<h2>Discrete</h2>
|
||
<p>Discrete values are integer values sent to the device
|
||
without any scaling.</p>
|
||
<p>Examples:</p>
|
||
<ul>
|
||
<li class="p"><p class="hcp1">Input card
|
||
gain<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Crossover
|
||
filter type<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Parametric
|
||
filter slope<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Parametric
|
||
filter type<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Gain
|
||
object phase<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Expander
|
||
ratio<br>
|
||
</p></li>
|
||
<li class="mvd-P">High pass filter type</li>
|
||
</ul>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Gain" id="Gain"></a></p>
|
||
<h2>Gain</h2>
|
||
<p>This scale is used for gains. It is designed to give
|
||
a natural feel to graphical faders linearly mapped to
|
||
the scale's range. A linear range between -10dB and +10dB
|
||
gives added detail around 0dB, while a logarithmic range
|
||
from -80dB to -10dB gives a pleasing falloff toward silence.
|
||
The following graph illustrates this nicely. The X axis
|
||
is the value sent to the device. The Y axis is the corresponding
|
||
level in dB.</p>
|
||
<p><img src="Gain_graph_small.jpg" alt="Image:gain graph small.png" title="Image:gain graph small.png" style="border-width: 2px;
|
||
border-style: solid; margin-top: 0px; margin-bottom: 0px;
|
||
margin-left: 0px; margin-right: 0px;" border="2"></p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_to_Device_2" id="Conversion_to_Device_2"></a></p>
|
||
<h3>Conversion to Device</h3>
|
||
<p>Conversion from dB to device:</p>
|
||
<p>If the value is greater than or equal to -10dB:</p>
|
||
<pre>
|
||
ValueToSend = dBValue * 10000<br>
|
||
|
||
                                </pre>
|
||
<p>If the value is less than -10dB, then the formula is:</p>
|
||
<pre>
|
||
ValueToSend = -Log10(-dBValue / 10)) * 200000 <20>€“ 100000<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_from_device" id="Conversion_from_device"></a></p>
|
||
<h3>Conversion from device</h3>
|
||
<p>Conversion from device to dB:</p>
|
||
<p>If the value is greater than or equal to -100000:</p>
|
||
<pre>
|
||
dBValue = ReceivedValue / 10000<br>
|
||
|
||
                                </pre>
|
||
<p>If the value is less than -100000:</p>
|
||
<pre>
|
||
dBValue = -10 * (10 ^ ((ReceivedValue + 100000) / -200000))<br>
|
||
|
||
                                </pre>
|
||
<p>where ^ is the exponentiation operator.</p>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Log" id="Log"></a></p>
|
||
<h2>Log</h2>
|
||
<p>Frequency and time controls on filters and dynamics
|
||
processors use a logarithmic scale.</p>
|
||
<p> <br>
|
||
Frequency values are specified in Hz.</p>
|
||
<p>Examples:</p>
|
||
<ul>
|
||
<li class="p"><p class="hcp1">High and
|
||
low pass filter frequencies<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Parametric
|
||
EQ filter frequencies<br>
|
||
</p></li>
|
||
<li class="mvd-P">Crossover frequency</li>
|
||
</ul>
|
||
<p> <br>
|
||
Speed is specified in milliseconds.</p>
|
||
<p>Examples:</p>
|
||
<ul>
|
||
<li class="p"><p class="hcp1">Compressor
|
||
attack<br>
|
||
</p></li>
|
||
<li class="mvd-P">Compressor release</li>
|
||
</ul>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_to_Device_3" id="Conversion_to_Device_3"></a></p>
|
||
<h3>Conversion to Device</h3>
|
||
<pre>
|
||
ValueToSend = Log10( Value ) * 1000000<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_from_Device_2" id="Conversion_from_Device_2"></a></p>
|
||
<h3>Conversion from Device</h3>
|
||
<pre>
|
||
Value = 10 ^ (ReceivedValue / 1000000)<br>
|
||
|
||
                                </pre>
|
||
<p>where ^ is the exponentiation operator.</p>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Scalar" id="Scalar"></a></p>
|
||
<h2>Scalar</h2>
|
||
<p>The Scalar data type uses a decimal fixed-point encoding.
|
||
Floating-point values are multiplied by 10000 to allow
|
||
detailed control.</p>
|
||
<p>Examples:</p>
|
||
<ul>
|
||
<li class="p"><p class="hcp1">Meter reference<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Leveller
|
||
threshold<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Parametric
|
||
filter boost/cut<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Compressor
|
||
threshold<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Automixer
|
||
slope<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Parametric
|
||
filter width<br>
|
||
</p></li>
|
||
<li class="mvd-P"><p class="hcp1">Mixer
|
||
pan<br>
|
||
</p></li>
|
||
<li class="mvd-P">Graphic EQ selectivity</li>
|
||
</ul>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_to_Device_4" id="Conversion_to_Device_4"></a></p>
|
||
<h3>Conversion to Device</h3>
|
||
<pre>
|
||
ValueToSend = Value * 10000<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_from_Device_3" id="Conversion_from_Device_3"></a></p>
|
||
<h3>Conversion from Device</h3>
|
||
<pre>
|
||
Value = ReceivedValue / 10000<br>
|
||
|
||
                                </pre>
|
||
<p> </p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="DI_SETSVPERCENT_and_DI_BUMPSVPERCENT" id="DI_SETSVPERCENT_and_DI_BUMPSVPERCENT"></a></p>
|
||
<h2>DI_SETSVPERCENT and DI_BUMPSVPERCENT</h2>
|
||
<p>The <b>DI_SETSVPERCENT</b> and <b>DI_BUMPSVPERCENT</b>
|
||
messages use a 16.16 fixed-point format. The value of
|
||
the control as a percentage of its total range (i.e. 0
|
||
to 100) is multiplied by 65536 to allow for fractions
|
||
of a percent. The accepted range of values is 0 to 6553600
|
||
for <b>DI_SETSVPERCENT</b>, -6553600 to 6553600 for <b>DI_BUMPSVPERCENT</b>.</p>
|
||
<p><b style="font-weight: bold;">DI_SUBSCRUBESVPERCENT</b>,
|
||
<b>DI_SETSVPERCENT</b>, <b>DI_BUMPSVPERCENT</b>, and <b>DI_UNSUBSCRIBESVPERCENT</b>
|
||
can be used on any control.</p>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_to_Device_5" id="Conversion_to_Device_5"></a></p>
|
||
<h3>Conversion to Device</h3>
|
||
<pre>
|
||
ValueToSend = PercentageValue * 65536<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Conversion_from_Device_4" id="Conversion_from_Device_4"></a></p>
|
||
<h3>Conversion from Device</h3>
|
||
<pre>
|
||
PercentageValue = ValueReceived / 65536<br>
|
||
|
||
                                </pre>
|
||
<div class="editsection" style="float: right; margin-left: 5px;">
|
||
<p> </p>
|
||
</div>
|
||
<p><a name="Example_Values" id="Example_Values"></a></p>
|
||
<h3>Example Values</h3>
|
||
<pre>
|
||
10% = 655360 ( 0x00 0x0A 0x00 0x00 )<br>
|
||
|
||
                                12.5%= 819200 ( 0x00 0x0C 0x80 0x00 )<br>
|
||
|
||
                                50% = 3276800 ( 0x00 0x32 0x00 0x00 )<br>
|
||
|
||
                                100%= 6553600( 0x00 0x64 0x00 0x00 )<br>
|
||
|
||
                                -10%= -655360( 0xFF 0xF6 0x00 0x00 )<br>
|
||
|
||
                                -12.5%= -819200( 0xFF 0xF3 0x80 0x00 )<br>
|
||
|
||
                                </pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p><!-- Served by hproukweb01.hprouk.ad.harman.com in 0.59 secs. --></p>
|
||
</body>
|
||
</html>
|