glados.no/_files/sound/bss/london/manual/MAIN/Parameter Range Scaling.html

308 lines
14 KiB
HTML
Raw Blame History

<!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>&#160;<br>
<script type="text/javascript" language="JavaScript1.2">//<![CDATA[
if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }
//]]></script></p>
<p>&#160;</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>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</p>
</div>
<p>&#160;</p>
<h3>Conversion from Device</h3>
<pre>
milliseconds = (ReceivedValue * 1000) / 96000<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>If the value is less than -10dB, then the formula is:</p>
<pre>
ValueToSend = -Log10(-dBValue / 10)) * 200000 <20>&#128;&#147; 100000<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>If the value is less than -100000:</p>
<pre>
dBValue = -10 * (10 ^ ((ReceivedValue + 100000) / -200000))<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>where ^ is the exponentiation operator.</p>
<p>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;<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>&#160;<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>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>where ^ is the exponentiation operator.</p>
<p>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<p>&#160;</p>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</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>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
<div class="editsection" style="float: right; margin-left: 5px;">
<p>&#160;</p>
</div>
<p><a name="Example_Values" id="Example_Values"></a></p>
<h3>Example Values</h3>
<pre>
10% = 655360 ( 0x00 0x0A 0x00 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;12.5%= 819200 ( 0x00 0x0C 0x80 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;50% = 3276800 ( 0x00 0x32 0x00 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100%= 6553600( 0x00 0x64 0x00 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-10%= -655360( 0xFF 0xF6 0x00 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;-12.5%= -819200( 0xFF 0xF3 0x80 0x00 )<br>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</pre>
</div>
</div>
</div>
</div>
<p><!-- Served by hproukweb01.hprouk.ad.harman.com in 0.59 secs. --></p>
</body>
</html>