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))
52 BSE_CXX_DECLARE_CLASS (Compressor);
54 template<
bool>
static inline const unsigned char* inlined_pixstream();
56 static inline const unsigned char* pixstream () {
return inlined_pixstream<true>(); }
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"; }
80 enum CompressorPropertyID {
94 typedef CompressorPropertyID IDType;
97 Sfi::Real threshold_db;
98 Sfi::Real ratio_to_one;
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),
118 typedef void AutoUpdateCategory;
122 Sfi::Real threshold_db;
123 Sfi::Real ratio_to_one;
130 void get_property (CompressorPropertyID prop_id, ::
Bse::Value &value, GParamSpec *pspec)
134 sfi_value_set_real (&value, attack);
137 sfi_value_set_real (&value, release);
139 case PROP_THRESHOLD_DB:
140 sfi_value_set_real (&value, threshold_db);
142 case PROP_RATIO_TO_ONE:
143 sfi_value_set_real (&value, ratio_to_one);
146 sfi_value_set_real (&value, output_db);
148 case PROP_AUTO_OUTPUT:
149 sfi_value_set_bool (&value, auto_output);
152 sfi_value_set_real (&value, threshold);
155 sfi_value_set_real (&value, ratio);
158 sfi_value_set_real (&value, output);
162 void set_property (CompressorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
166 attack = sfi_value_get_real (&value);
169 release = sfi_value_get_real (&value);
171 case PROP_THRESHOLD_DB:
172 threshold_db = sfi_value_get_real (&value);
174 case PROP_RATIO_TO_ONE:
175 ratio_to_one = sfi_value_get_real (&value);
178 output_db = sfi_value_get_real (&value);
180 case PROP_AUTO_OUTPUT:
181 auto_output = sfi_value_get_bool (&value);
184 threshold = sfi_value_get_real (&value);
187 ratio = sfi_value_get_real (&value);
190 output = sfi_value_get_real (&value);
193 property_changed (CompressorPropertyID (prop_id));
199 virtual bool editable_property (CompressorPropertyID prop_id, GParamSpec *pspec)
206 void property_updated (CompressorPropertyID prop_id, guint64 tick_stamp,
double prop_value, GParamSpec *pspec)
208 bool seen_change =
false;
213 property_changed (CompressorPropertyID (prop_id)))
217 static struct StaticData {
221 virtual bool property_changed (CompressorPropertyID) {
return false; }
222 virtual ~CompressorBase ()
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>,
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);
267 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_ARTSCOMPRESSOR_IDL() \
268 BSE_CXX_REGISTER_EFFECT (Compressor); \
272 template<
bool>
const unsigned char*
273 ::Bse::Arts::CompressorBase::inlined_pixstream()
278 #pragma align 4 (local_pixstream)
281 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) =
283 static const guint8 local_pixstream[] =
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"
480 return local_pixstream;
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