BEAST - Free Software Audio Synthesizer and Tracker  0.10.0
standardsaturator.genidl.hh
Go to the documentation of this file.
1 
2 /*-------- begin ../sfi/sfidl generated code --------*/
3 
4 
5 
6 #include <bse/effectbase.hh>
7 
8 
9 /* enum prototypes */
10 namespace Bse {
11 namespace Standard {
12 #define BSE_STANDARD_TYPE_SATURATION_TYPE BSE_CXX_DECLARED_ENUM_TYPE (Bse::Standard, SaturationType)
13 
14 
15 /* choice prototypes */
16 static SfiChoiceValues SaturationType_choice_values();
17 
18 
19 /* record prototypes */
20 
21 
22 /* sequence prototypes */
23 
24 
25 /* class prototypes */
26 class SaturatorBase;
27 class Saturator;
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))
30 
31 
32 /* enum definitions */
33 #ifndef SFIDL_SKIPDEF__SaturationType
34 enum SaturationType {
35  SATURATE_TANH = 0,
36  SATURATE_ATAN = 1,
37  SATURATE_QUADRATIC = 2,
38  SATURATE_SOFT_KNEE = 3,
39  SATURATE_HARD = 4,
40 };
41 #endif // SFIDL_SKIPDEF__SaturationType
42 
43 
44 /* sequence definitions */
45 
46 
47 /* record definitions */
48 
49 
50 /* enum declarations */
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") );
57 );
58 
59 
60 /* sequence type declarations */
61 
62 
63 /* record type declarations */
64 
65 
66 /* procedure prototypes */
67 
68 
69 /* class definitions */
70 BSE_CXX_DECLARE_CLASS (Saturator);
71 class SaturatorBase : public ::Bse::Effect {
72  template<bool> static inline const unsigned char* inlined_pixstream();
73 public:
74  static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); }
75  static void class_init (::Bse::CxxBaseClass *klass);
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"; }
85 public:
86  enum {
87  ICHANNEL_AUDIO_IN1,
88  ICHANNEL_AUDIO_IN2,
89  N_ICHANNELS
90  };
91 public:
92  enum {
93  OCHANNEL_AUDIO_OUT1,
94  OCHANNEL_AUDIO_OUT2,
95  N_OCHANNELS
96  };
97 protected:
98  enum SaturatorPropertyID {
99  PROP_SATURATION = 1,
100  PROP_LEVEL,
101  PROP_AUTO_OUTPUT,
102  PROP_OUTPUT_VOLUME,
103  };
104 public:
105  /* "transport" structure to configure synthesis modules from properties */
107  typedef SaturatorPropertyID IDType;
108  ::Bse::Standard::SaturationType saturation;
109  Sfi::Real level;
110  bool auto_output;
111  Sfi::Real output_volume;
112  explicit SaturatorProperties (SaturatorBase *p) :
113  saturation (p->saturation),
114  level (p->level),
115  auto_output (p->auto_output),
116  output_volume (p->output_volume)
117  {
118  }
119  };
120 protected:
121  typedef ::Bse::SynthesisModule::NeedAutoUpdateTag AutoUpdateCategory;
122 protected:
123  ::Bse::Standard::SaturationType saturation;
124  Sfi::Real level;
125  bool auto_output;
126  Sfi::Real output_volume;
127  guint64 last__output_volume;
128 public:
129  void get_property (SaturatorPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec)
130  {
131  switch (prop_id) {
132  case PROP_SATURATION:
133  sfi_value_set_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS2 (&value, saturation);
134  break;
135  case PROP_LEVEL:
136  sfi_value_set_real (&value, level);
137  break;
138  case PROP_AUTO_OUTPUT:
139  sfi_value_set_bool (&value, auto_output);
140  break;
141  case PROP_OUTPUT_VOLUME:
142  sfi_value_set_real (&value, output_volume);
143  break;
144  };
145  }
146  void set_property (SaturatorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
147  {
148  switch (prop_id) {
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);
151  break;
152  case PROP_LEVEL:
153  level = sfi_value_get_real (&value);
154  break;
155  case PROP_AUTO_OUTPUT:
156  auto_output = sfi_value_get_bool (&value);
157  break;
158  case PROP_OUTPUT_VOLUME:
159  output_volume = sfi_value_get_real (&value);
160  break;
161  };
162  property_changed (SaturatorPropertyID (prop_id));
163  update_modules();
164  switch (prop_id) {
165  default: ;
166  };
167  }
168  virtual bool editable_property (SaturatorPropertyID prop_id, GParamSpec *pspec)
169  {
170  return true;
171  }
172  virtual void get_candidates (SaturatorPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec)
173  {
174  }
175  void property_updated (SaturatorPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec)
176  {
177  bool seen_change = false;
178  switch (prop_id) {
179  case PROP_OUTPUT_VOLUME:
180  if (tick_stamp >= ::std::max (last__output_volume, module_update_tick_stamp()))
181  {
182  seen_change = true;
183  output_volume = prop_value;
184  }
185  last__output_volume = tick_stamp;
186  break;
187  default: ;
188  };
189  if (seen_change &&
190  property_changed (SaturatorPropertyID (prop_id)))
191  update_modules();
192  }
193 private:
194  static struct StaticData {
195  int dummy;
196  } static_data;
197 protected:
198  virtual bool property_changed (SaturatorPropertyID) { return false; }
199  virtual ~SaturatorBase ()
200  {
201  }
202 public:
203 };
204 
205 
206 /* choice implementations */
207 static SfiChoiceValues
208 SaturationType_choice_values()
209 {
210  static SfiChoiceValue values[5];
211  static const SfiChoiceValues choice_values = {
212  G_N_ELEMENTS (values), values,
213  };
214  if (!values[0].choice_ident)
215  {
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)");
231  }
232  return choice_values;
233 }
234 
235 
236 
237 /* record implementations */
238 
239 
240 /* sequence implementations */
241 
242 
243 /* class implementations */
244 void
245 SaturatorBase::class_init (::Bse::CxxBaseClass *klass)
246 {
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);
260 }
261 
262 
263 /* procedure implementations */
264 
265 
266 /* standardsaturator.idl type registrations */
267 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_STANDARDSATURATOR_IDL() \
268  BSE_CXX_REGISTER_ENUM (SaturationType); \
269  BSE_CXX_REGISTER_EFFECT (Saturator); \
270  /* standardsaturator.idl type registrations done */
271 } // Standard
272 } // Bse
273 template<bool> const unsigned char*
274 ::Bse::Standard::SaturatorBase::inlined_pixstream()
275 {
276  /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
277 
278 #ifdef __SUNPRO_C
279 #pragma align 4 (local_pixstream)
280 #endif
281 #ifdef __GNUC__
282 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
283 #else
284 static const guint8 local_pixstream[] =
285 #endif
286 { ""
287  /* Pixbuf magic (0x47646b50) */
288  "GdkP"
289  /* length: header (24) + pixel_data (5162) */
290  "\0\0\24B"
291  /* pixdata_type (0x2010002) */
292  "\2\1\0\2"
293  /* rowstride (256) */
294  "\0\0\1\0"
295  /* width (64) */
296  "\0\0\0@"
297  /* height (64) */
298  "\0\0\0@"
299  /* pixel_data: */
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"};
480 
481 
482 
483  return local_pixstream;
484 }
485 
486 /*-------- end ../sfi/sfidl generated code --------*/
487 
488 
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
T max(T...args)
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