BEAST - Free Software Audio Synthesizer and Tracker  0.9.2
artscompressor.genidl.hh
Go to the documentation of this file.
1 
2 /*-------- begin ../sfi/sfidl generated code --------*/
3 
4 
5 
6 #include <bse/bse-internals.hh>
7 
8 
9 /* enum prototypes */
10 
11 
12 /* choice prototypes */
13 
14 
15 /* record prototypes */
16 
17 
18 /* sequence prototypes */
19 
20 
21 /* class prototypes */
22 namespace Bse {
23 namespace Arts {
24 class CompressorBase;
25 class Compressor;
26 #define BSE_ARTS_TYPE_COMPRESSOR BSE_CXX_DECLARED_CLASS_TYPE (Bse::Arts, Compressor)
27 #define BSE_ARTS_IS_COMPRESSOR(o) (::Bse::CxxBase::instance_is_a (o, BSE_ARTS_TYPE_COMPRESSOR))
28 
29 
30 /* enum definitions */
31 
32 
33 /* sequence definitions */
34 
35 
36 /* record definitions */
37 
38 
39 /* enum declarations */
40 
41 
42 /* sequence type declarations */
43 
44 
45 /* record type declarations */
46 
47 
48 /* procedure prototypes */
49 
50 
51 /* class definitions */
52 BSE_CXX_DECLARE_CLASS (Compressor);
53 class CompressorBase : public ::Bse::Effect {
54  template<bool> static inline const unsigned char* inlined_pixstream();
55 public:
56  static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); }
57  static void class_init (::Bse::CxxBaseClass *klass);
58  static inline const char* options () { return ""; }
59  static inline const char* category () { static const char *c = NULL;
60  return c ? c : c = sfi_category_concat ("/Modules", ("/Enhance/ArtsCompressor")); }
61  static inline const char* i18n_category () { static const char *c = NULL;
62  return c ? c : c = sfi_category_concat ("/Modules", _("/Enhance/ArtsCompressor")); }
63  static inline const char* blurb () { return _("ArtsCompressor compresses the sound.\n\nCompression is a dynamic operation that consists of two parts:\n(1) the current input volume of the signal is detected\n(2) if it exceeds a given theshold, the volume of the output signal will be reduced\n\nThe input volume detection has an attack and a release half-life time which can be specified - in milliseconds - with the corresponding properties. This envelope causes the compressor to adapt slowly to the actual input signal level.\n\nThe ratio specifies how the volume of a signal should be reduced, if it exceeds the threshold. A compression ratio of 2:1 means for instance that if the input volume is 2 dB over the threshold, the output volume will be 1 dB over the threshold. Example (threshold = -10, ratio 2:1):\ninput = -20 dB => output = -20 dB\ninput = -10 dB => output = -10 dB\ninput = 0 dB => output = -5 dB\ninput = 10 dB => output = 0 dB\ninput = 20 dB => output = 5 dB\n\nCompression is often thought off as an operation to make music \"sound louder\". To achieve this, the first step is to reduce the dynamic range like in the example above. As the loud parts of the music have been reduced in volume, we can now amplify everything, without risking distortion or clipping. This has the overall effect of the music sounding louder. In our example, an output amplification of 5 dB would be okay, if the input signal never exceeded 0 dB."); }
64  static inline const char* authors () { return "Matthias Kretz, Stefan Westerfeld"; }
65  static inline const char* license () { return _("GNU Lesser General Public License"); }
66  static inline const char* type_name () { return "BseArtsCompressor"; }
67 public:
68  enum {
69  ICHANNEL_AUDIO_IN1,
70  ICHANNEL_AUDIO_IN2,
71  N_ICHANNELS
72  };
73 public:
74  enum {
75  OCHANNEL_AUDIO_OUT1,
76  OCHANNEL_AUDIO_OUT2,
77  N_OCHANNELS
78  };
79 protected:
80  enum CompressorPropertyID {
81  PROP_ATTACK = 1,
82  PROP_RELEASE,
83  PROP_THRESHOLD_DB,
84  PROP_RATIO_TO_ONE,
85  PROP_OUTPUT_DB,
86  PROP_AUTO_OUTPUT,
87  PROP_THRESHOLD,
88  PROP_RATIO,
89  PROP_OUTPUT,
90  };
91 public:
92  /* "transport" structure to configure synthesis modules from properties */
94  typedef CompressorPropertyID IDType;
95  Sfi::Real attack;
96  Sfi::Real release;
97  Sfi::Real threshold_db;
98  Sfi::Real ratio_to_one;
99  Sfi::Real output_db;
100  bool auto_output;
101  Sfi::Real threshold;
102  Sfi::Real ratio;
103  Sfi::Real output;
104  explicit CompressorProperties (CompressorBase *p) :
105  attack (p->attack),
106  release (p->release),
107  threshold_db (p->threshold_db),
108  ratio_to_one (p->ratio_to_one),
109  output_db (p->output_db),
110  auto_output (p->auto_output),
111  threshold (p->threshold),
112  ratio (p->ratio),
113  output (p->output)
114  {
115  }
116  };
117 protected:
118  typedef void AutoUpdateCategory;
119 protected:
120  Sfi::Real attack;
121  Sfi::Real release;
122  Sfi::Real threshold_db;
123  Sfi::Real ratio_to_one;
124  Sfi::Real output_db;
125  bool auto_output;
126  Sfi::Real threshold;
127  Sfi::Real ratio;
128  Sfi::Real output;
129 public:
130  void get_property (CompressorPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec)
131  {
132  switch (prop_id) {
133  case PROP_ATTACK:
134  sfi_value_set_real (&value, attack);
135  break;
136  case PROP_RELEASE:
137  sfi_value_set_real (&value, release);
138  break;
139  case PROP_THRESHOLD_DB:
140  sfi_value_set_real (&value, threshold_db);
141  break;
142  case PROP_RATIO_TO_ONE:
143  sfi_value_set_real (&value, ratio_to_one);
144  break;
145  case PROP_OUTPUT_DB:
146  sfi_value_set_real (&value, output_db);
147  break;
148  case PROP_AUTO_OUTPUT:
149  sfi_value_set_bool (&value, auto_output);
150  break;
151  case PROP_THRESHOLD:
152  sfi_value_set_real (&value, threshold);
153  break;
154  case PROP_RATIO:
155  sfi_value_set_real (&value, ratio);
156  break;
157  case PROP_OUTPUT:
158  sfi_value_set_real (&value, output);
159  break;
160  };
161  }
162  void set_property (CompressorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
163  {
164  switch (prop_id) {
165  case PROP_ATTACK:
166  attack = sfi_value_get_real (&value);
167  break;
168  case PROP_RELEASE:
169  release = sfi_value_get_real (&value);
170  break;
171  case PROP_THRESHOLD_DB:
172  threshold_db = sfi_value_get_real (&value);
173  break;
174  case PROP_RATIO_TO_ONE:
175  ratio_to_one = sfi_value_get_real (&value);
176  break;
177  case PROP_OUTPUT_DB:
178  output_db = sfi_value_get_real (&value);
179  break;
180  case PROP_AUTO_OUTPUT:
181  auto_output = sfi_value_get_bool (&value);
182  break;
183  case PROP_THRESHOLD:
184  threshold = sfi_value_get_real (&value);
185  break;
186  case PROP_RATIO:
187  ratio = sfi_value_get_real (&value);
188  break;
189  case PROP_OUTPUT:
190  output = sfi_value_get_real (&value);
191  break;
192  };
193  property_changed (CompressorPropertyID (prop_id));
194  update_modules();
195  switch (prop_id) {
196  default: ;
197  };
198  }
199  virtual bool editable_property (CompressorPropertyID prop_id, GParamSpec *pspec)
200  {
201  return true;
202  }
203  virtual void get_candidates (CompressorPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec)
204  {
205  }
206  void property_updated (CompressorPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec)
207  {
208  bool seen_change = false;
209  switch (prop_id) {
210  default: ;
211  };
212  if (seen_change &&
213  property_changed (CompressorPropertyID (prop_id)))
214  update_modules();
215  }
216 private:
217  static struct StaticData {
218  int dummy;
219  } static_data;
220 protected:
221  virtual bool property_changed (CompressorPropertyID) { return false; }
222  virtual ~CompressorBase ()
223  {
224  }
225 public:
226 };
227 
228 
229 /* choice implementations */
230 
231 
232 /* record implementations */
233 
234 
235 /* sequence implementations */
236 
237 
238 /* class implementations */
239 void
240 CompressorBase::class_init (::Bse::CxxBaseClass *klass)
241 {
242  klass->set_accessors (::Bse::cxx_get_property_trampoline<CompressorBase, CompressorPropertyID>,
243  ::Bse::cxx_set_property_trampoline<CompressorBase, CompressorPropertyID>,
244  ::Bse::cxx_editable_property_trampoline<CompressorBase, CompressorPropertyID>,
245  ::Bse::cxx_get_candidates_trampoline<CompressorBase, CompressorPropertyID>,
246  NULL);
247  klass->add_param (PROP_ATTACK, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",533,"attack",_ ( "Attack [ms]" ) , _ ( "Set the attack time in milliseconds" ) , 1.00000000000000000e+01 , 1.00000000000000006e-01 , 2.50000000000000000e+02 , 1.00000000000000000e+01 , ":r:w:S:G:" ":scale"));
248  klass->add_param (PROP_RELEASE, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",534,"release",_ ( "Release [ms]" ) , _ ( "Set the release time in milliseconds" ) , 1.00000000000000000e+01 , 1.00000000000000006e-01 , 2.50000000000000000e+02 , 1.00000000000000000e+01 , ":r:w:S:G:" ":scale"));
249  klass->add_param (PROP_THRESHOLD_DB, sfidl_pspec_Gain (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",535,"threshold_db",_ ( "Threshold [dB]" ) , _ ( "Only parts louder than threshold are compressed" ) , 0LL , - 100LL , 0LL , 1LL , ":r:w:S:G:" ":scale"));
250  klass->add_param (PROP_RATIO_TO_ONE, sfidl_pspec_SfiReal (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",536,"ratio_to_one",_ ( "Ratio [x:1]" ) , _ ( "Set the compression ratio to x:1" ) , 2LL , 1.00000000000000000e+00 , 2.00000000000000000e+01 , 1LL , ":r:w:S:G:" ":scale"));
251  klass->add_param (PROP_OUTPUT_DB, sfidl_pspec_Gain (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",537,"output_db",_ ( "Output [dB]" ) , _ ( "Set the output amplification" ) , 0LL , - 20LL , 20LL , 1LL , ":r:w:S:G:" ":scale"));
252  klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool (_("Parameters"),"/opt/src/beast/plugins/artscompressor.idl",538,"auto_output",_ ( "Auto Output" ) , _ ( "Adjust the output amplification automatically according to threshold and ratio" ) , FALSE , ":r:w:G:"));
253  klass->add_param (PROP_THRESHOLD, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",541,"threshold","" , "" , 1LL , 1.00000000000000008e-05 , 1LL , 1.00000000000000002e-02 , "w"));
254  klass->add_param (PROP_RATIO, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",542,"ratio","" , "" , 8.00000000000000044e-01 , 0.00000000000000000e+00 , 1.00000000000000000e+00 , 1.00000000000000006e-01 , "w"));
255  klass->add_param (PROP_OUTPUT, sfidl_pspec_SfiReal ("compat","/opt/src/beast/plugins/artscompressor.idl",543,"output","" , "" , 1LL , 1.00000000000000006e-01 , 1.00000000000000000e+01 , 1LL , "w"));
256  klass->add_ichannel ("audio_in1", _("Audio In1"), _("Audio input 1"), ICHANNEL_AUDIO_IN1);
257  klass->add_ichannel ("audio_in2", _("Audio In2"), _("Audio input 2"), ICHANNEL_AUDIO_IN2);
258  klass->add_ochannel ("audio_out1", _("Audio Out1"), _("Compressed audio output 1"), OCHANNEL_AUDIO_OUT1);
259  klass->add_ochannel ("audio_out2", _("Audio Out2"), _("Compressed audio output 2"), OCHANNEL_AUDIO_OUT2);
260 }
261 
262 
263 /* procedure implementations */
264 
265 
266 /* artscompressor.idl type registrations */
267 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_ARTSCOMPRESSOR_IDL() \
268  BSE_CXX_REGISTER_EFFECT (Compressor); \
269  /* artscompressor.idl type registrations done */
270 } // Arts
271 } // Bse
272 template<bool> const unsigned char*
273 ::Bse::Arts::CompressorBase::inlined_pixstream()
274 {
275  /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
276 
277 #ifdef __SUNPRO_C
278 #pragma align 4 (local_pixstream)
279 #endif
280 #ifdef __GNUC__
281 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
282 #else
283 static const guint8 local_pixstream[] =
284 #endif
285 { ""
286  /* Pixbuf magic (0x47646b50) */
287  "GdkP"
288  /* length: header (24) + pixel_data (5128) */
289  "\0\0\24\40"
290  /* pixdata_type (0x2010002) */
291  "\2\1\0\2"
292  /* rowstride (256) */
293  "\0\0\1\0"
294  /* width (64) */
295  "\0\0\0@"
296  /* height (64) */
297  "\0\0\0@"
298  /* pixel_data: */
299  "\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"
300  "\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"
301  "\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"
302  "*\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"
303  "\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"
304  "\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"
305  "\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"
306  "\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"
307  "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
308  "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
309  "\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"
310  "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
311  "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
312  "\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"
313  "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
314  "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"
315  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\220\377\377\377\177\202&w&"
316  "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
317  "\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"
318  "\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\217\377\377\377\177\202&w&\377"
319  "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
320  "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"
321  "\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\216\377\377\377\177\202"
322  "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
323  "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
324  "\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\377"
325  "\377\377\177\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
326  "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
327  "\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,"
328  "\0\0\0L\0\0\0\377\214\377\377\377\177\202&w&\377\20e\243d\377c\242a\377"
329  "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
330  "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
331  "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\213\377\377\377\177"
332  "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
333  "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
334  "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"
335  "\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"
336  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\211\377\377\377\177\202&w&"
337  "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
338  "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
339  "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"
340  "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\210\377\377\377\177\202&w&"
341  "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
342  "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
343  "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
344  "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\207\377\377\377\177"
345  "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
346  "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
347  "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
348  "\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"
349  "\377\377\377\177\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
350  "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
351  "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
352  "\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"
353  "\0,\0\0\0L\0\0\0\377\205\377\377\377\177\202&w&\377\27x\245u\377v\245"
354  "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
355  "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
356  "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
357  "\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\377\377\377"
358  "\177\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
359  "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
360  "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
361  "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"
362  "\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276\276\222\202\377\377\377\177\202"
363  "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
364  "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
365  "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
366  ">\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"
367  "\0\0\13\0\0\0+\0\0\0J\0\0\0\343nnn\262\276\276\276\222\202&w&\377\32"
368  "\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
369  "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
370  "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
371  "@\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"
372  "\1\0\0\0\12\0\0\0&\0\0\0E\0\0\0\266\0\0\0\342\230\0\0\0\377\5\12\27\12"
373  "\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\1\0\0"
374  "\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\0>\0\0"
375  "\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\0\0\0\5"
376  "\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\0\0\0\27"
377  "\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\0\7\0\0\0"
378  "\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\0\6\0\0\0"
379  "\10\0\0\0\12\3173\27\367\307+\23\364\0\0\0\27\0\0\0\5\272\0\0\0\0\12"
380  "\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0\0\34\0\0"
381  "\0\3\302&\21\377\0\0\0\16\0\0\0\3\266\0\0\0\0\12\3173\27\344\332=\34"
382  "\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22\353\314"
383  "0\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377\330<"
384  "\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30\377\313"
385  "0\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377\331<"
386  "\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30\377\321"
387  "5\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377\331<"
388  "\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31\377\321"
389  "4\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\0\0\0"
390  "\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31\377\3204"
391  "\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25\264\0\0\0"
392  "\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377\3215\30"
393  "\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0\0\0\25"
394  "\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\3173\27\377"
395  "\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0\25\265"
396  "\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311.\25\377"
397  "\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0\25\265"
398  "\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\0Y\0\0"
399  "\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\0\0\0"
400  "!\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\3\225"
401  "\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""7\0"
402  "\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\0"
403  "\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"
404  "\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"
405  "\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"
406  "\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"
407  "\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"
408  "\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"
409  "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
410  "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"
411  "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
412  "\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"
413  "=\0\0\0\377\232\377\377\377\177\5\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0"
414  "\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\227\377\377\377"
415  "\177\10c\235c\306*y*\372&w&\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0"
416  "\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\224\377\377\377"
417  "\177\2c\235c\306*y*\372\202&w&\377\7G\226F\377O\237O\377\0\0\0\377\0"
418  "\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"
419  "\0\0\377\221\377\377\377\177\2\310\334\310\2226\2016\354\202&w&\377\12"
420  "G\226F\377O\237O\377N\241M\377K\240J\377H\240I\377\0\0\0\377\0\0\0L\0"
421  "\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"
422  "\217\377\377\377\177\1>\206>\344\202&w&\377\15:\2079\377T\235S\377V\241"
423  "U\377T\241R\377Q\241P\377N\241M\377L\241K\377I\240I\377\0\0\0\377\0\0"
424  "\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"
425  "\0\377\214\377\377\377\177\2\246\307\246\240-{-\366\202&w&\377\17X\235"
426  "V\377^\242\\\377[\242Z\377Y\241W\377V\241U\377S\241R\377Q\241P\377N\240"
427  "M\377L\240K\377H\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
428  "\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\213\377\377\377\177\202"
429  "&w&\377\22F\214F\377b\240a\377c\242a\377`\242_\377^\242\\\377[\242Z\377"
430  "Y\241X\377V\241U\377S\241R\377P\241P\377N\241M\377K\240K\377I\240H\377"
431  "\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\3\0\0\0\2\0\0\0"
432  "\26\0\0\0=\234\0\0\0\377\4\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0"
433  "\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\211\377\377\377\177\202&w&\377\24"
434  "n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^\243\\\377"
435  "\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377K\240K\377"
436  "H\240I\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"
437  "\0\2\0\0\0\26\0\0\0=\0\0\0\377\210\377\377\377\177\202&w&\377\25p\245"
438  "n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a\243_\377^\243"
439  "]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377N\241M\377L\241"
440  "K\377I\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0"
441  "\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\207\377\377\377\177\202&w&\377\26"
442  "s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243d\377d\243b\377"
443  "a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241S\377Q\241P\377"
444  "N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0"
445  "\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\206\377\377\377\177"
446  "\202&w&\377\27v\245s\377s\244p\377q\244n\377n\244k\377l\244h\377i\243"
447  "f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377Y\241W\377V\242"
448  "U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377\0\0\0\377\0\0"
449  "\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"
450  "\0\377\205\377\377\377\177\202&w&\377\30x\245u\377v\245s\377t\245p\377"
451  "p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243a\377a\242_\377"
452  "]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241P\377N\241N\377"
453  "K\241K\377I\240I\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0"
454  "\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\204\377\377\377\177\202&w&\377"
455  "\31{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377n\243k\377k\243"
456  "i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377[\242Z\377Y\242"
457  "X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377I\240H\377\0\0"
458  "\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\0\0\26"
459  "\0\0\0<\0\0\0\377\276\276\276\222\202\377\377\377\177\202&w&\377\32~"
460  "\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377n\244k\377"
461  "k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377[\242Z\377"
462  "X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377>\210>\377"
463  "\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"
464  "\24\0\0\0:\0\0\0\342nnn\262\276\276\276\222\202&w&\377\33\201\246|\377"
465  "~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244n\377n\244k\377"
466  "k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242]\377[\242Z\377"
467  "X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210@\377,`+\377\12"
468  "\27\12\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"
469  "\22\0\0\0""8\0\0\0\266\0\0\0\342\230\0\0\0\377\6\12\27\12\377\33\77\33"
470  "\377\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"
471  "\0\0.\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"
472  "\0\0\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"
473  "\0&\0\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"
474  "\0\0\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"
475  "\0\0\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"
476  "\0\0"};
477 
478 
479 
480  return local_pixstream;
481 }
482 
483 /*-------- end ../sfi/sfidl generated code --------*/
484 
485 
The Bse namespace contains all functions of the synthesis engine.
Definition: bstbseutils.cc:67
Definition: bsecxxvalue.hh:13
Definition: artscompressor.genidl.hh:53
Definition: sficxx.hh:169
Definition: artscompressor.genidl.hh:93
Definition: bsecxxmodule.hh:92
Definition: bsecxxbase.hh:14