VVSDK  1.0
The VVAmbisonic Library
ParameterConversions.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 David McGriffy, all rights reserved
3  */
4 
5 #ifndef __PARAMETERCONVERSIONS_H_INCLUDED
6 #define __PARAMETERCONVERSIONS_H_INCLUDED
7 
8 //---------------------------------------
9 // utility routines
10 
11 #define _USE_MATH_DEFINES
12 #include <math.h>
13 
14 #define deg2level (1.0f / 360.0f)
15 #define halfDeg2level (1.0f / 180.0f)
16 #define level2deg (360.0f)
17 
18 #define parmTrue 1.0f
19 #define parmFalse 0.0f
20 
21 #define parmDirOmni 0.0f
22 #define parmDirCard 0.5f
23 #define parmDir8 1.0f
24 #define parmDirHyper 0.7f
25 
26 #define parmFmtFuMa 0.0f
27 #define parmFmtACNSN3D 1.0f
28 
29 float inline db2level(float db)
30 {
31  return (float)exp(M_LN10 * ((double)db / 20.0));
32 }
33 
34 float inline level2db(float level)
35 {
36  return (float)(20.0f * log((double)level) / M_LN10);
37 }
38 
39 float inline degree360Convert (float value)
40 {
41  return (360.0f * value);
42 }
43 
44 float inline deg3602Parm (float x)
45 {
46  return (x * deg2level);
47 }
48 
49 float inline degPM1802Parm (float x)
50 {
51  return (x * deg2level) + 0.5f;
52 }
53 
54 float inline degPM902Parm (float x)
55 {
56  return (x * halfDeg2level) + 0.5f;
57 }
58 
59 float inline parm2Deg360(float x)
60 {
61  return (x) * level2deg;
62 }
63 
64 float inline parm2degPM180 (float value)
65 {
66  return (360.0f * (value - 0.5f));
67 }
68 
69 float inline parm2degPM90 (float value)
70 {
71  return (180.0f * (value - 0.5f));
72 }
73 
74 float inline parm2Deg180(float x)
75 {
76  return (x - 0.5f) * level2deg / 2;
77 }
78 
79 float inline deg1802Parm (float x)
80 {
81  return (x * halfDeg2level) + 0.5f;
82 }
83 
84 float inline degreePM90Convert (float value)
85 {
86  return (180.0f * (value - 0.5f));
87 }
88 
89 float inline zeroTwoConvert (float value)
90 {
91  return (2.0f * value);
92 }
93 
94 float inline parm2halfpi (float x)
95 {
96  return (float)((M_PI * x) - (M_PI_2));
97 }
98 
99 float inline halfpi2Parm (float x)
100 {
101  return (float)((x + (M_PI_2)) / M_PI);
102 }
103 
104 float inline pi2Parm (float x)
105 {
106  return (float)((x + (M_PI)) / (2 * M_PI));
107 }
108 
109 float inline parm2pi (float x)
110 {
111  return (float)((2*M_PI * x) - M_PI);
112 }
113 
114 float inline parm22pi (float x)
115 {
116  return (float)(2*M_PI * x);
117 }
118 
119 float inline parm2PlusMinus12 (float x)
120 {
121  return (24.0f * x) - 12.0f;
122 }
123 
124 float inline PlusMinus122Parm (float x)
125 {
126  x = (x > 12.0f) ? 12.0f : x;
127  x = (x < -12.0f) ? -12.0f : x;
128  return (x + 12.0f) / 24.0f;
129 }
130 
131 float inline channelGain2Parm (float x)
132 {
133  x = (x > 12.0f) ? 12.0f : x;
134  x = (x < -140.0f) ? -140.0f : x;
135  if (x >= 0)
136  return (x + 12.0f) / 24.0f;
137  else
138  return (x + 140.0f) / 280.0f;
139 }
140 
141 float inline parm2ChannelGain(float x)
142 {
143  if (x >= 0.5f)
144  return (x - 0.5f) * 24.0f;
145  else
146  return (x - 0.5f) * 280.0f;
147 }
148 
149 /*float inline parm2Minus12 (float x)
150 {
151  return (12.0f * x) - 12.0f;
152 }*/
153 
154 float inline parm2Dist (float x)
155 {
156  return (float)exp(M_LN2 * (double)x) / 4.0f;
157 }
158 
159 float inline dist2Parm(float dist)
160 {
161  dist = (dist > 4.0f) ? 4.0f : dist;
162  dist = (dist < 0.25f) ? 0.25f : dist;
163  return (float)(log((double)dist * 4.0) / M_LN2);
164 }
165 
166 float inline parm2Dir (float x)
167 {
168  return x * 2.0f;
169 }
170 
171 float inline dir2Parm(float dir)
172 {
173  return dir / 2.0f;
174 }
175 
176 bool inline parm2Bool(float x)
177 {
178  return (x > 0.5f);
179 }
180 
181 float inline bool2Parm(bool b)
182 {
183  return (b ? 1.0f : 0.0f);
184 }
185 
186 #endif
#define level2deg
Definition: ParameterConversions.h:16
float parm2pi(float x)
Definition: ParameterConversions.h:109
#define halfDeg2level
Definition: ParameterConversions.h:15
float degPM902Parm(float x)
Definition: ParameterConversions.h:54
float parm2degPM90(float value)
Definition: ParameterConversions.h:69
float deg1802Parm(float x)
Definition: ParameterConversions.h:79
float parm2Deg180(float x)
Definition: ParameterConversions.h:74
float halfpi2Parm(float x)
Definition: ParameterConversions.h:99
float pi2Parm(float x)
Definition: ParameterConversions.h:104
float bool2Parm(bool b)
Definition: ParameterConversions.h:181
#define deg2level
Definition: ParameterConversions.h:14
float channelGain2Parm(float x)
Definition: ParameterConversions.h:131
float dist2Parm(float dist)
Definition: ParameterConversions.h:159
float parm2Deg360(float x)
Definition: ParameterConversions.h:59
float db2level(float db)
Definition: ParameterConversions.h:29
float parm22pi(float x)
Definition: ParameterConversions.h:114
float parm2halfpi(float x)
Definition: ParameterConversions.h:94
float PlusMinus122Parm(float x)
Definition: ParameterConversions.h:124
float zeroTwoConvert(float value)
Definition: ParameterConversions.h:89
float parm2Dist(float x)
Definition: ParameterConversions.h:154
float degree360Convert(float value)
Definition: ParameterConversions.h:39
float level2db(float level)
Definition: ParameterConversions.h:34
float dir2Parm(float dir)
Definition: ParameterConversions.h:171
float parm2ChannelGain(float x)
Definition: ParameterConversions.h:141
float parm2PlusMinus12(float x)
Definition: ParameterConversions.h:119
float deg3602Parm(float x)
Definition: ParameterConversions.h:44
float degreePM90Convert(float value)
Definition: ParameterConversions.h:84
float degPM1802Parm(float x)
Definition: ParameterConversions.h:49
float parm2degPM180(float value)
Definition: ParameterConversions.h:64
float parm2Dir(float x)
Definition: ParameterConversions.h:166
bool parm2Bool(float x)
Definition: ParameterConversions.h:176