12 #define BSE_STANDARD_TYPE_SATURATION_TYPE BSE_CXX_DECLARED_ENUM_TYPE (Bse::Standard, SaturationType)
28 #define BSE_STANDARD_TYPE_SATURATOR BSE_CXX_DECLARED_CLASS_TYPE (Bse::Standard, Saturator)
29 #define BSE_STANDARD_IS_SATURATOR(o) (::Bse::CxxBase::instance_is_a (o, BSE_STANDARD_TYPE_SATURATOR))
36 SATURATE_QUADRATIC = 2,
37 SATURATE_SOFT_KNEE = 3,
49 BSE_CXX_DECLARE_ENUM (SaturationType,
"BseStandardSaturationType", 5,
50 *v++ = ::Bse::EnumValue (SATURATE_TANH,
"BSE_STANDARD_SATURATE_TANH", _(
"TANH") );
51 *v++ = ::Bse::EnumValue (SATURATE_ATAN,
"BSE_STANDARD_SATURATE_ATAN", _(
"ATAN") );
52 *v++ = ::Bse::EnumValue (SATURATE_QUADRATIC,
"BSE_STANDARD_SATURATE_QUADRATIC", _(
"Quadratic") );
53 *v++ = ::Bse::EnumValue (SATURATE_SOFT_KNEE,
"BSE_STANDARD_SATURATE_SOFT_KNEE", _(
"Soft Knee") );
54 *v++ = ::Bse::EnumValue (SATURATE_HARD,
"BSE_STANDARD_SATURATE_HARD", _(
"Hard") );
68 BSE_CXX_DECLARE_CLASS (Saturator);
70 template<
bool>
static inline const unsigned char* inlined_pixstream();
72 static inline const unsigned char* pixstream () {
return inlined_pixstream<true>(); }
74 static inline const char* options () {
return ""; }
75 static inline const char* category () {
static const char *c = NULL;
76 return c ? c : c = sfi_category_concat (
"/Modules",
"/Distortion/Saturate"); }
77 static inline const char* i18n_category () {
static const char *c = NULL;
78 return c ? c : c = sfi_category_concat (
"/Modules",
"/Distortion/Saturate"); }
79 static inline const char* blurb () {
return "This is 2-channel saturation module. Various saturation types are supported. The 'Level' parameter adjusts the maximum saturation stage output for a normalized input signal. Some saturartion types simply clip signals beyond this threshold, while others (notably TANH and ATAN) allow overdrive signals to pass through the saturation stage up to a certain amount. The output volume allows for extra amplification after the saturation stage. For saturation types that allow overdrive signals past the saturation stage, an output volume greater than 0dB may result in overdrive signals as output of this module."; }
80 static inline const char* authors () {
return "Tim Janik"; }
81 static inline const char* license () {
return ""; }
82 static inline const char* type_name () {
return "BseStandardSaturator"; }
96 enum SaturatorPropertyID {
105 typedef SaturatorPropertyID IDType;
106 ::Bse::Standard::SaturationType saturation;
109 Sfi::Real output_volume;
111 saturation (p->saturation),
113 auto_output (p->auto_output),
114 output_volume (p->output_volume)
121 ::Bse::Standard::SaturationType saturation;
124 Sfi::Real output_volume;
125 guint64 last__output_volume;
127 void get_property (SaturatorPropertyID prop_id, ::
Bse::Value &value, GParamSpec *pspec)
130 case PROP_SATURATION:
131 sfi_value_set_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS2 (&value, saturation);
134 sfi_value_set_real (&value, level);
136 case PROP_AUTO_OUTPUT:
137 sfi_value_set_bool (&value, auto_output);
139 case PROP_OUTPUT_VOLUME:
140 sfi_value_set_real (&value, output_volume);
144 void set_property (SaturatorPropertyID prop_id, const ::Bse::
Value &value, GParamSpec *pspec)
147 case PROP_SATURATION:
148 saturation = (::Bse::Standard::SaturationType) sfi_value_get_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS1 (&value);
151 level = sfi_value_get_real (&value);
153 case PROP_AUTO_OUTPUT:
154 auto_output = sfi_value_get_bool (&value);
156 case PROP_OUTPUT_VOLUME:
157 output_volume = sfi_value_get_real (&value);
160 property_changed (SaturatorPropertyID (prop_id));
166 virtual bool editable_property (SaturatorPropertyID prop_id, GParamSpec *pspec)
173 void property_updated (SaturatorPropertyID prop_id, guint64 tick_stamp,
double prop_value, GParamSpec *pspec)
175 bool seen_change =
false;
177 case PROP_OUTPUT_VOLUME:
178 if (tick_stamp >= ::std::max (last__output_volume, module_update_tick_stamp()))
181 output_volume = prop_value;
183 last__output_volume = tick_stamp;
188 property_changed (SaturatorPropertyID (prop_id)))
192 static struct StaticData {
196 virtual bool property_changed (SaturatorPropertyID) {
return false; }
197 virtual ~SaturatorBase ()
206 SaturationType_choice_values()
210 G_N_ELEMENTS (values), values,
212 if (!values[0].choice_ident)
214 values[0].choice_ident =
"BSE_STANDARD_SATURATE_TANH";
215 values[0].choice_label = _(
"TANH");
216 values[0].choice_blurb = _(
"Saturation via hyperbolic tangent function which is mostly linear for small levels while providing a soft curvature for high volume signals");
217 values[1].choice_ident =
"BSE_STANDARD_SATURATE_ATAN";
218 values[1].choice_label = _(
"ATAN");
219 values[1].choice_blurb = _(
"Saturation via arc tangent function which is reasonably linear in the lower 50% but develops a strong curvature above 80%");
220 values[2].choice_ident =
"BSE_STANDARD_SATURATE_QUADRATIC";
221 values[2].choice_label = _(
"Quadratic");
222 values[2].choice_blurb = _(
"Saturation via quadratic approximation which keeps a well-proportioned curvature across all levels");
223 values[3].choice_ident =
"BSE_STANDARD_SATURATE_SOFT_KNEE";
224 values[3].choice_label = _(
"Soft Knee");
225 values[3].choice_blurb = _(
"Linear saturation with a soft knee transit into the clipping range (equals hard clipping at 100%) which approaches quadratic curvature for small levels");
226 values[4].choice_ident =
"BSE_STANDARD_SATURATE_HARD";
227 values[4].choice_label = _(
"Hard");
228 values[4].choice_blurb = _(
"Hard saturation via clipping (prone to clicks)");
230 return choice_values;
245 klass->set_accessors (::Bse::cxx_get_property_trampoline<SaturatorBase, SaturatorPropertyID>,
246 ::Bse::cxx_set_property_trampoline<SaturatorBase, SaturatorPropertyID>,
247 ::Bse::cxx_editable_property_trampoline<SaturatorBase, SaturatorPropertyID>,
248 ::Bse::cxx_get_candidates_trampoline<SaturatorBase, SaturatorPropertyID>,
249 ::Bse::cxx_property_updated_trampoline<SaturatorBase, SaturatorPropertyID>);
250 klass->add_param (PROP_SATURATION, sfidl_pspec_GEnum (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",770,
"saturation", _ (
"Saturation Type" ) , _ (
"The type of saturation to be used" ) , SATURATE_TANH ,
":r:w:S:G:", BSE_STANDARD_TYPE_SATURATION_TYPE));
251 klass->add_param (PROP_LEVEL, sfidl_pspec_Perc (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",771,
"level",_ (
"Level" ) , _ (
"Normalization level of the saturation curve in percent, some saturation types still " "allow overdrive signals beyond this level" ) , 50LL ,
"scale:" ":r:w:S:G:"));
252 klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",775,
"auto_output",_ (
"Auto Output" ) , _ (
"Automatically adapt the output volume according to changes in saturation level" ) , TRUE ,
":r:w:S:G:"));
253 klass->add_param (PROP_OUTPUT_VOLUME, sfidl_pspec_DBVolume (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",778,
"output_volume",_ (
"Output Volume" ) , _ (
"Output stage amplification in decibel" ) , 0LL , 0LL , + 42LL ,
"automate:" ":r:w:S:G:"));
254 klass->add_ichannel (
"audio_in1",
"Audio In1",
"First Audio Input", ICHANNEL_AUDIO_IN1);
255 klass->add_ichannel (
"audio_in2",
"Audio In2",
"Second Audio Input", ICHANNEL_AUDIO_IN2);
256 klass->add_ochannel (
"audio_out1",
"Audio Out1",
"First Audio Output", OCHANNEL_AUDIO_OUT1);
257 klass->add_ochannel (
"audio_out2",
"Audio Out2",
"Second Audio Output", OCHANNEL_AUDIO_OUT2);
265 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_STANDARDSATURATOR_IDL() \
266 BSE_CXX_REGISTER_ENUM (SaturationType); \
267 BSE_CXX_REGISTER_EFFECT (Saturator); \
271 template<
bool>
const unsigned char*
272 ::Bse::Standard::SaturatorBase::inlined_pixstream()
277 #pragma align 4 (local_pixstream)
280 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
282 static const guint8 local_pixstream[] =
298 "\206\0\0\0\0\230\0\0\0\1\243\0\0\0\0\3\0\0\0\1\0\0\0\4\0\0\0\10\202\0"
299 "\0\0\13\230\0\0\0\14\5\0\0\0\13\0\0\0\12\0\0\0\10\0\0\0\3\0\0\0\1\236"
300 "\0\0\0\0\5\0\0\0\4\0\0\0\17\0\0\0\36\0\0\0(\0\0\0*\230\0\0\0,\5\0\0\0"
301 "*\0\0\0&\0\0\0\32\0\0\0\12\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\10\0\0"
302 "\0\37\0\0\0;\0\0\0I\0\0\0J\0\0\0K\226\0\0\0L\6\0\0\0K\0\0\0I\0\0\0D\0"
303 "\0\0.\0\0\0\20\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\13\0\0\0(\0\0\0I\0"
304 "\0\0\270\0\0\0\343\230\0\0\0\377\5\12\27\12\377\33\77\33\377\0\0\0""8"
305 "\0\0\0\23\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\14\0\0\0+\0\0\0J\0\0\0"
306 "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
307 "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
308 "\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276"
309 "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
310 "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
311 "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\221\377\377\377"
312 "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
313 "L\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
314 "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\220\262\267\375\257\202&w&"
315 "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
316 "\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0"
317 "\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\217\226\235\374\313\202&w&\377"
318 "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
319 "N\377K\240K\377I\241H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0"
320 "\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\216\226\235\374\313\202"
321 "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
322 "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
323 "\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\215\226"
324 "\235\374\313\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
325 "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
326 "\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,"
327 "\0\0\0L\0\0\0\377\214\226\235\374\313\202&w&\377\20e\243d\377c\242a\377"
328 "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
329 "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
330 "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\213\226\235\374\313"
331 "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
332 "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
333 "H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\4\0\0\0\1\0\0\0\14"
334 "\0\0\0,\0\0\0L\234\0\0\0\377\3\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
335 "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\211\226\235\374\313\202&w&"
336 "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
337 "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
338 "K\240K\377H\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
339 "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\210\226\235\374\313\202&w&"
340 "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
341 "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
342 "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
343 "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\207\226\235\374\313"
344 "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
345 "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
346 "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
347 "\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\206"
348 "\226\235\374\313\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
349 "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
350 "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
351 "\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0"
352 "\0,\0\0\0L\0\0\0\377\205\226\235\374\313\202&w&\377\27x\245u\377v\245"
353 "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
354 "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
355 "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
356 "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\204\226\235\374"
357 "\313\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
358 "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
359 "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
360 "I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0"
361 "\0\0\14\0\0\0,\0\0\0K\0\0\0\377{\201\317\323\202\226\235\374\313\202"
362 "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
363 "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
364 "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
365 ">\210>\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0"
366 "\0\0\13\0\0\0+\0\0\0J\12\12\26\363RV\212\340{\201\317\323\202&w&\377"
367 "\32\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
368 "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
369 "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
370 "@\377,`+\377\12\27\12\377\0\0\0:\0\0\0\24\0\0\0\2\235\0\0\0\0\6\0\0\0"
371 "\1\0\0\0\12\0\0\0&\0\0\0E\36\40B\341\12\13\26\363\230\0\0\0\377\5\12"
372 "\27\12\377\33\77\33\377\0\0\0""7\0\0\0\21\0\0\0\2\235\0\0\0\0\7\0\0\0"
373 "\1\0\0\0\10\0\0\0\33\0\0\0.\0\0\0""8\0\0\0;\0\0\0<\223\0\0\0=\11\0\0"
374 "\0>\0\0\0@\0\0\0D\0\0\0F\0\0\0G\0\0\0B\0\0\0+\0\0\0\14\0\0\0\1\236\0"
375 "\0\0\0\5\0\0\0\3\0\0\0\12\0\0\0\20\0\0\0\23\0\0\0\24\223\0\0\0\26\12"
376 "\0\0\0\27\0\0\0\31\0\0\0\34\0\0\0!\0\0\0&\0\0\0'\0\0\0$\0\0\0\26\0\0"
377 "\0\7\0\0\0\1\236\0\0\0\0\1\0\0\0\1\227\0\0\0\2\11\0\0\0\3\0\0\0\4\0\0"
378 "\0\6\0\0\0\10\0\0\0\12\3173\27\367\307+\23\364\0\0\0\27\0\0\0\5\272\0"
379 "\0\0\0\12\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0"
380 "\0\34\0\0\0\3\302&\21\377\0\0\0\16\0\0\0\3\266\0\0\0\0\12\3173\27\344"
381 "\332=\34\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22"
382 "\353\3140\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377"
383 "\330<\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30"
384 "\377\3130\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377"
385 "\331<\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30"
386 "\377\3215\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377"
387 "\331<\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31"
388 "\377\3214\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0"
389 "\14\0\0\0\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31"
390 "\377\3204\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25"
391 "\264\0\0\0\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377"
392 "\3215\30\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0"
393 "\0\0\25\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\317"
394 "3\27\377\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0"
395 "\25\265\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311"
396 ".\25\377\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0"
397 "\25\265\0\0\0\0\3\0\0\0\15\0\0\0G\0\0\0d\202\0\0\0i\204\0\0\0j\2\0\0"
398 "\0Y\0\0\0\22\265\0\0\0\0\6\0\0\0\3\0\0\0\20\0\0\0\25\0\0\0\30\0\0\0\36"
399 "\0\0\0!\202\0\0\0#\6\0\0\0\"\0\0\0\34\0\0\0\14\0\0\0\6\0\0\0\4\0\0\0"
400 "\3\225\0\0\0\2\1\0\0\0\1\236\0\0\0\0\14\0\0\0\3\0\0\0\20\0\0\0'\0\0\0"
401 "7\0\0\0:\0\0\0;\0\0\0""9\0\0\0""3\0\0\0*\0\0\0!\0\0\0\32\0\0\0\27\221"
402 "\0\0\0\26\5\0\0\0\24\0\0\0\22\0\0\0\20\0\0\0\12\0\0\0\3\236\0\0\0\0\14"
403 "\0\0\0\5\0\0\0\32\0\0\0C\0\0\0\\\0\0\0_\0\0\0^\0\0\0]\0\0\0W\0\0\0N\0"
404 "\0\0F\0\0\0@\0\0\0>\220\0\0\0=\7\0\0\0<\0\0\0;\0\0\0""8\0\0\0.\0\0\0"
405 "\32\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\4\0\0\0\31\0\0\0D\0\0\0\272"
406 "\0\0\0\344\230\0\0\0\377\6\0\0\0\342\0\0\0\266\0\0\0D\0\0\0&\0\0\0\12"
407 "\0\0\0\1\235\0\0\0\0\6\0\0\0\3\0\0\0\27\0\0\0>\0\0\0\343nnn\262\276\276"
408 "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
409 "I\0\0\0+\0\0\0\13\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\26\0\0\0<\0\0\0"
410 "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
411 "\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
412 "=\0\0\0\377\226\377\377\377\177\2\366\370\367\202\272\317\305\230\202"
413 "\246\302\265\241\5\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0"
414 "\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\222\262\267\375\257\15\257\265"
415 "\372\260y\223\301\317U{\242\353Iq\233\367En\232\374Cl\232\377Eo\234\377"
416 "Fo\235\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
417 "\0\2\0\0\0\26\0\0\0=\0\0\0\377\220\226\235\374\313\17\201\220\342\327"
418 "h\202\307\347Us\272\367Om\271\377Rp\276\377Wt\302\377Yw\304\377Zx\305"
419 "\377Yx\304\377Xy\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
420 "\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\216\226\235\374\313\21\177"
421 "\220\340\327Wu\272\365Om\271\377Qo\274\377Ur\300\377Zv\305\377]y\307"
422 "\377[y\306\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0"
423 "\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0"
424 "\0\377\215\226\235\374\313\6`|\300\355Nm\271\376Ro\274\377[v\305\377"
425 "_y\311\377^y\310\377\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Z"
426 "x\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0"
427 "\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\214\226\235\374\313\4Vt\272"
428 "\367Om\271\377Xt\303\377`y\312\377\202_y\311\377\2^y\310\377]y\310\377"
429 "\202\\y\307\377\11[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377"
430 "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
431 "=\0\0\0\377\213\226\235\374\313\5Rq\271\372Om\271\377]v\310\377ay\313"
432 "\377`y\313\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377[y\306\377"
433 "[y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0"
434 "\0\14\0\0\0\1\235\0\0\0\0\3\0\0\0\2\0\0\0\26\0\0\0=\234\0\0\0\377\4\0"
435 "\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0"
436 "\0\0\377\211\226\235\374\313\202Om\271\377\2cz\315\377by\314\377\202"
437 "ay\313\377\1`y\312\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377"
438 "[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377\0\0\0L\0"
439 "\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377"
440 "\210\226\235\374\313\202Om\271\377\6cz\316\377cz\315\377bz\314\377az"
441 "\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377"
442 "\12[y\307\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0\0"
443 "L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0"
444 "\377\207\226\235\374\313\202Om\271\377\4ez\316\377dz\316\377cz\315\377"
445 "by\314\377\202ay\313\377\1`y\313\377\202_y\311\377\1^y\310\377\202]y"
446 "\307\377\12[y\307\377[y\305\377Zy\305\377Zx\304\377Xx\303\377\0\0\0\377"
447 "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
448 "=\0\0\0\377\206\226\235\374\313\202Om\271\377\5fz\320\377ez\316\377d"
449 "z\316\377cz\315\377cz\314\377\202ay\313\377\1`y\312\377\202_y\311\377"
450 "\1^y\310\377\202]y\307\377\12[y\307\377[y\305\377Zx\305\377Yy\304\377"
451 "Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
452 "\0\2\0\0\0\26\0\0\0=\0\0\0\377\205\226\235\374\313\202Om\271\377\202"
453 "fz\320\377\7ez\316\377cz\316\377cz\315\377bz\315\377az\313\377ay\313"
454 "\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377\12[y\306\377["
455 "y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0"
456 "\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\204\226\235"
457 "\374\313\202Om\271\377\1g{\321\377\202fz\320\377\4ez\316\377cz\316\377"
458 "cy\315\377by\315\377\202ay\313\377\1`y\313\377\202_y\311\377\15^y\310"
459 "\377]y\310\377]y\307\377[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303"
460 "\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0"
461 "\0\0\26\0\0\0<\0\0\0\377{\201\317\323\202\226\235\374\313\202Om\271\377"
462 "\13h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377dz\316\377cz\315"
463 "\377bz\315\377ay\313\377az\313\377`y\313\377\202_y\311\377\15^y\310\377"
464 "]y\310\377\\y\307\377[y\307\377[y\305\377Zy\305\377Yy\304\377Kf\246\377"
465 "\0\0\0\377\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0"
466 "\24\0\0\0:\12\13\26\363RV\212\340{\201\317\323\202Om\271\377\14h{\322"
467 "\377h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377cz\316\377cz\315"
468 "\377by\315\377az\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377"
469 "\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Lf\247\3775Hu\377\14\21"
470 "\34\377\0\0\0J\0\0\0+\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\22"
471 "\0\0\0""8\36\40B\341\12\12\26\363\230\0\0\0\377\6\14\21\34\377\"/L\377"
472 "\0\0\0H\0\0\0(\0\0\0\13\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0\20\0\0\0"
473 ".\0\0\0D\0\0\0I\0\0\0K\226\0\0\0L\7\0\0\0K\0\0\0J\0\0\0I\0\0\0;\0\0\0"
474 "\37\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\12\0\0\0\32\0\0\0&\0"
475 "\0\0*\230\0\0\0,\5\0\0\0*\0\0\0(\0\0\0\36\0\0\0\17\0\0\0\4\236\0\0\0"
476 "\0\5\0\0\0\1\0\0\0\3\0\0\0\10\0\0\0\12\0\0\0\13\230\0\0\0\14\202\0\0"
477 "\0\13\3\0\0\0\10\0\0\0\4\0\0\0\1\243\0\0\0\0\230\0\0\0\1\206\0\0\0\0"};
481 return local_pixstream;
Definition: bsecxxmodule.hh:76
Definition: bsecxxvalue.hh:13
Definition: sfiparams.hh:63
Definition: sfiparams.hh:68
Definition: standardsaturator.genidl.hh:69
Definition: sficxx.hh:168
Definition: bsecxxmodule.hh:92
Definition: standardsaturator.genidl.hh:104
Definition: bsecxxbase.hh:14