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))
33 #ifndef SFIDL_SKIPDEF__SaturationType
37 SATURATE_QUADRATIC = 2,
38 SATURATE_SOFT_KNEE = 3,
41 #endif // SFIDL_SKIPDEF__SaturationType
51 BSE_CXX_DECLARE_ENUM (SaturationType,
"BseStandardSaturationType", 5,
52 *v++ = ::Bse::EnumValue (SATURATE_TANH,
"BSE_STANDARD_SATURATE_TANH", _(
"TANH") );
53 *v++ = ::Bse::EnumValue (SATURATE_ATAN,
"BSE_STANDARD_SATURATE_ATAN", _(
"ATAN") );
54 *v++ = ::Bse::EnumValue (SATURATE_QUADRATIC,
"BSE_STANDARD_SATURATE_QUADRATIC", _(
"Quadratic") );
55 *v++ = ::Bse::EnumValue (SATURATE_SOFT_KNEE,
"BSE_STANDARD_SATURATE_SOFT_KNEE", _(
"Soft Knee") );
56 *v++ = ::Bse::EnumValue (SATURATE_HARD,
"BSE_STANDARD_SATURATE_HARD", _(
"Hard") );
70 BSE_CXX_DECLARE_CLASS (Saturator);
72 template<
bool>
static inline const unsigned char* inlined_pixstream();
74 static inline const unsigned char* pixstream () {
return inlined_pixstream<true>(); }
76 static inline const char* options () {
return ""; }
77 static inline const char* category () {
static const char *c = NULL;
78 return c ? c : c = sfi_category_concat (
"/Modules",
"/Distortion/Saturate"); }
79 static inline const char* i18n_category () {
static const char *c = NULL;
80 return c ? c : c = sfi_category_concat (
"/Modules",
"/Distortion/Saturate"); }
81 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."; }
82 static inline const char* authors () {
return "Tim Janik"; }
83 static inline const char* license () {
return ""; }
84 static inline const char* type_name () {
return "BseStandardSaturator"; }
98 enum SaturatorPropertyID {
107 typedef SaturatorPropertyID IDType;
108 ::Bse::Standard::SaturationType saturation;
111 Sfi::Real output_volume;
113 saturation (p->saturation),
115 auto_output (p->auto_output),
116 output_volume (p->output_volume)
123 ::Bse::Standard::SaturationType saturation;
126 Sfi::Real output_volume;
127 guint64 last__output_volume;
129 void get_property (SaturatorPropertyID prop_id, ::
Bse::Value &value, GParamSpec *pspec)
132 case PROP_SATURATION:
133 sfi_value_set_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS2 (&value, saturation);
136 sfi_value_set_real (&value, level);
138 case PROP_AUTO_OUTPUT:
139 sfi_value_set_bool (&value, auto_output);
141 case PROP_OUTPUT_VOLUME:
142 sfi_value_set_real (&value, output_volume);
146 void set_property (SaturatorPropertyID prop_id, const ::
Bse::
Value &value, GParamSpec *pspec)
149 case PROP_SATURATION:
150 saturation = (::Bse::Standard::SaturationType) sfi_value_get_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS1 (&value);
153 level = sfi_value_get_real (&value);
155 case PROP_AUTO_OUTPUT:
156 auto_output = sfi_value_get_bool (&value);
158 case PROP_OUTPUT_VOLUME:
159 output_volume = sfi_value_get_real (&value);
162 property_changed (SaturatorPropertyID (prop_id));
168 virtual bool editable_property (SaturatorPropertyID prop_id, GParamSpec *pspec)
175 void property_updated (SaturatorPropertyID prop_id, guint64 tick_stamp,
double prop_value, GParamSpec *pspec)
177 bool seen_change =
false;
179 case PROP_OUTPUT_VOLUME:
180 if (tick_stamp >= ::
std::max (last__output_volume, module_update_tick_stamp()))
183 output_volume = prop_value;
185 last__output_volume = tick_stamp;
190 property_changed (SaturatorPropertyID (prop_id)))
194 static struct StaticData {
198 virtual bool property_changed (SaturatorPropertyID) {
return false; }
199 virtual ~SaturatorBase ()
208 SaturationType_choice_values()
212 G_N_ELEMENTS (values), values,
214 if (!values[0].choice_ident)
216 values[0].choice_ident =
"BSE_STANDARD_SATURATE_TANH";
217 values[0].choice_label = _(
"TANH");
218 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");
219 values[1].choice_ident =
"BSE_STANDARD_SATURATE_ATAN";
220 values[1].choice_label = _(
"ATAN");
221 values[1].choice_blurb = _(
"Saturation via arc tangent function which is reasonably linear in the lower 50% but develops a strong curvature above 80%");
222 values[2].choice_ident =
"BSE_STANDARD_SATURATE_QUADRATIC";
223 values[2].choice_label = _(
"Quadratic");
224 values[2].choice_blurb = _(
"Saturation via quadratic approximation which keeps a well-proportioned curvature across all levels");
225 values[3].choice_ident =
"BSE_STANDARD_SATURATE_SOFT_KNEE";
226 values[3].choice_label = _(
"Soft Knee");
227 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");
228 values[4].choice_ident =
"BSE_STANDARD_SATURATE_HARD";
229 values[4].choice_label = _(
"Hard");
230 values[4].choice_blurb = _(
"Hard saturation via clipping (prone to clicks)");
232 return choice_values;
247 klass->set_accessors (::Bse::cxx_get_property_trampoline<SaturatorBase, SaturatorPropertyID>,
248 ::Bse::cxx_set_property_trampoline<SaturatorBase, SaturatorPropertyID>,
249 ::Bse::cxx_editable_property_trampoline<SaturatorBase, SaturatorPropertyID>,
250 ::Bse::cxx_get_candidates_trampoline<SaturatorBase, SaturatorPropertyID>,
251 ::Bse::cxx_property_updated_trampoline<SaturatorBase, SaturatorPropertyID>);
252 klass->add_param (PROP_SATURATION, sfidl_pspec_GEnum (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",409,
"saturation", _ (
"Saturation Type" ) , _ (
"The type of saturation to be used" ) , SATURATE_TANH ,
":r:w:S:G:", BSE_STANDARD_TYPE_SATURATION_TYPE));
253 klass->add_param (PROP_LEVEL, sfidl_pspec_Perc (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",410,
"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:"));
254 klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",414,
"auto_output",_ (
"Auto Output" ) , _ (
"Automatically adapt the output volume according to changes in saturation level" ) , TRUE ,
":r:w:S:G:"));
255 klass->add_param (PROP_OUTPUT_VOLUME, sfidl_pspec_DBVolume (
"Saturation",
"/opt/src/beast/plugins/standardsaturator.idl",417,
"output_volume",_ (
"Output Volume" ) , _ (
"Output stage amplification in decibel" ) , 0LL , 0LL , + 42LL ,
"automate:" ":r:w:S:G:"));
256 klass->add_ichannel (
"audio_in1",
"Audio In1",
"First Audio Input", ICHANNEL_AUDIO_IN1);
257 klass->add_ichannel (
"audio_in2",
"Audio In2",
"Second Audio Input", ICHANNEL_AUDIO_IN2);
258 klass->add_ochannel (
"audio_out1",
"Audio Out1",
"First Audio Output", OCHANNEL_AUDIO_OUT1);
259 klass->add_ochannel (
"audio_out2",
"Audio Out2",
"Second Audio Output", OCHANNEL_AUDIO_OUT2);
267 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_STANDARDSATURATOR_IDL() \
268 BSE_CXX_REGISTER_ENUM (SaturationType); \
269 BSE_CXX_REGISTER_EFFECT (Saturator); \
273 template<
bool>
const unsigned char*
274 ::Bse::Standard::SaturatorBase::inlined_pixstream()
279 #pragma align 4 (local_pixstream)
282 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
284 static const guint8 local_pixstream[] =
300 "\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"
301 "\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"
302 "\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"
303 "*\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"
304 "\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"
305 "\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"
306 "\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"
307 "\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"
308 "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
309 "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
310 "\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"
311 "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
312 "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
313 "\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"
314 "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
315 "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"
316 "\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&"
317 "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
318 "\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"
319 "\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"
320 "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
321 "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"
322 "\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"
323 "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
324 "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
325 "\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"
326 "\235\374\313\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
327 "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
328 "\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,"
329 "\0\0\0L\0\0\0\377\214\226\235\374\313\202&w&\377\20e\243d\377c\242a\377"
330 "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
331 "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
332 "\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"
333 "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
334 "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
335 "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"
336 "\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"
337 "\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&"
338 "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
339 "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
340 "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"
341 "\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&"
342 "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
343 "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
344 "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
345 "\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"
346 "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
347 "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
348 "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
349 "\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"
350 "\226\235\374\313\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
351 "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
352 "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
353 "\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"
354 "\0,\0\0\0L\0\0\0\377\205\226\235\374\313\202&w&\377\27x\245u\377v\245"
355 "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
356 "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
357 "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
358 "\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"
359 "\313\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
360 "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
361 "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
362 "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"
363 "\0\0\14\0\0\0,\0\0\0K\0\0\0\377{\201\317\323\202\226\235\374\313\202"
364 "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
365 "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
366 "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
367 ">\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"
368 "\0\0\13\0\0\0+\0\0\0J\12\12\26\363RV\212\340{\201\317\323\202&w&\377"
369 "\32\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
370 "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
371 "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
372 "@\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"
373 "\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"
374 "\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"
375 "\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"
376 "\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"
377 "\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"
378 "\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"
379 "\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"
380 "\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"
381 "\0\0\0\12\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0"
382 "\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"
383 "\332=\34\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22"
384 "\353\3140\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377"
385 "\330<\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30"
386 "\377\3130\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377"
387 "\331<\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30"
388 "\377\3215\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377"
389 "\331<\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31"
390 "\377\3214\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0"
391 "\14\0\0\0\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31"
392 "\377\3204\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25"
393 "\264\0\0\0\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377"
394 "\3215\30\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0"
395 "\0\0\25\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\317"
396 "3\27\377\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0"
397 "\25\265\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311"
398 ".\25\377\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0"
399 "\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"
400 "\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"
401 "\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"
402 "\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"
403 "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"
404 "\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"
405 "\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"
406 "\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"
407 "\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"
408 "\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"
409 "\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"
410 "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
411 "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"
412 "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
413 "\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"
414 "=\0\0\0\377\226\377\377\377\177\2\366\370\367\202\272\317\305\230\202"
415 "\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"
416 "\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"
417 "\372\260y\223\301\317U{\242\353Iq\233\367En\232\374Cl\232\377Eo\234\377"
418 "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"
419 "\0\2\0\0\0\26\0\0\0=\0\0\0\377\220\226\235\374\313\17\201\220\342\327"
420 "h\202\307\347Us\272\367Om\271\377Rp\276\377Wt\302\377Yw\304\377Zx\305"
421 "\377Yx\304\377Xy\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
422 "\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"
423 "\220\340\327Wu\272\365Om\271\377Qo\274\377Ur\300\377Zv\305\377]y\307"
424 "\377[y\306\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0"
425 "\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"
426 "\0\377\215\226\235\374\313\6`|\300\355Nm\271\376Ro\274\377[v\305\377"
427 "_y\311\377^y\310\377\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Z"
428 "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"
429 "\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"
430 "\367Om\271\377Xt\303\377`y\312\377\202_y\311\377\2^y\310\377]y\310\377"
431 "\202\\y\307\377\11[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377"
432 "\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"
433 "=\0\0\0\377\213\226\235\374\313\5Rq\271\372Om\271\377]v\310\377ay\313"
434 "\377`y\313\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377[y\306\377"
435 "[y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0"
436 "\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"
437 "\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"
438 "\0\0\377\211\226\235\374\313\202Om\271\377\2cz\315\377by\314\377\202"
439 "ay\313\377\1`y\312\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377"
440 "[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377\0\0\0L\0"
441 "\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"
442 "\210\226\235\374\313\202Om\271\377\6cz\316\377cz\315\377bz\314\377az"
443 "\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377"
444 "\12[y\307\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0\0"
445 "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"
446 "\377\207\226\235\374\313\202Om\271\377\4ez\316\377dz\316\377cz\315\377"
447 "by\314\377\202ay\313\377\1`y\313\377\202_y\311\377\1^y\310\377\202]y"
448 "\307\377\12[y\307\377[y\305\377Zy\305\377Zx\304\377Xx\303\377\0\0\0\377"
449 "\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"
450 "=\0\0\0\377\206\226\235\374\313\202Om\271\377\5fz\320\377ez\316\377d"
451 "z\316\377cz\315\377cz\314\377\202ay\313\377\1`y\312\377\202_y\311\377"
452 "\1^y\310\377\202]y\307\377\12[y\307\377[y\305\377Zx\305\377Yy\304\377"
453 "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"
454 "\0\2\0\0\0\26\0\0\0=\0\0\0\377\205\226\235\374\313\202Om\271\377\202"
455 "fz\320\377\7ez\316\377cz\316\377cz\315\377bz\315\377az\313\377ay\313"
456 "\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377\12[y\306\377["
457 "y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0"
458 "\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"
459 "\374\313\202Om\271\377\1g{\321\377\202fz\320\377\4ez\316\377cz\316\377"
460 "cy\315\377by\315\377\202ay\313\377\1`y\313\377\202_y\311\377\15^y\310"
461 "\377]y\310\377]y\307\377[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303"
462 "\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"
463 "\0\0\26\0\0\0<\0\0\0\377{\201\317\323\202\226\235\374\313\202Om\271\377"
464 "\13h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377dz\316\377cz\315"
465 "\377bz\315\377ay\313\377az\313\377`y\313\377\202_y\311\377\15^y\310\377"
466 "]y\310\377\\y\307\377[y\307\377[y\305\377Zy\305\377Yy\304\377Kf\246\377"
467 "\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"
468 "\24\0\0\0:\12\13\26\363RV\212\340{\201\317\323\202Om\271\377\14h{\322"
469 "\377h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377cz\316\377cz\315"
470 "\377by\315\377az\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377"
471 "\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Lf\247\3775Hu\377\14\21"
472 "\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"
473 "\0\0\0""8\36\40B\341\12\12\26\363\230\0\0\0\377\6\14\21\34\377\"/L\377"
474 "\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"
475 ".\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"
476 "\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"
477 "\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"
478 "\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"
479 "\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"};
483 return local_pixstream;
The Bse namespace contains all functions of the synthesis engine.
Definition: bstbseutils.cc:88
Definition: bsecxxmodule.hh:76
Definition: bsecxxvalue.hh:13
Definition: sfiparams.hh:63
Definition: sfiparams.hh:71
Definition: standardsaturator.genidl.hh:71
Definition: sficxx.hh:169
Definition: bsecxxmodule.hh:92
Definition: standardsaturator.genidl.hh:106
Definition: bsecxxbase.hh:14