Imported Upstream version 0.1

parents
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#N canvas 207 7 763 647 10;
#X text 370 378 * Width : graphical x size;
#X text 371 393 * Height : graphical y size;
#X text 358 456 bugs and comments @ ydegoyon@free.fr [-_-];
#X obj 91 492 *~ 1;
#X obj 177 491 *~ 1;
#X obj 134 458 / 100;
#X floatatom 134 428 5 0 0;
#X floatatom 174 129 5 0 0;
#X floatatom 254 128 5 0 0;
#X floatatom 332 128 5 0 0;
#X floatatom 405 128 5 0 0;
#X text 332 210 audience~ is a moving audience simulation;
#X text 334 236 within a 2d space;
#X text 332 223 Each sound input and each listener can be moved;
#X text 371 407 * Nb Listeners : number of listeners;
#X obj 129 523 dac~;
#X msg 42 89 attenuation 0;
#X msg 42 64 attenuation 0.1;
#X msg 42 40 attenuation 1;
#X obj 406 153 osc~ 10000;
#X text 8 14 Sound attenuation per meter ( default = 0.01 );
#X text 338 306 Example : audience~ 200 200 4 1 0.01 0;
#X text 339 349 (invoke with <right mouse>Properties );
#X text 342 339 You can set the following properties :;
#X text 341 527 Note : the number of inputs + outputs is limited to
10;
#X text 341 540 ( can be easily changed in the code );
#X obj 254 154 osc~ 500;
#X obj 331 154 osc~ 3000;
#X text 337 278 Constructor : audience~ <width> <height> <nbinputs>
<nblisteners> <attenuation> <apply delay flag> | audience~;
#X obj 175 155 osc~ 50;
#X obj 70 196 audience~ 200 200 4 2 0.01 0 0 0 193 188 126 118 145
72 20 182 10 0;
#X msg 165 66 delay 0;
#X msg 165 91 delay 1;
#X text 296 41 ( due to the distance between speaker and listener )
;
#X text 163 40 Apply delay option;
#X connect 3 0 15 0;
#X connect 4 0 15 1;
#X connect 5 0 3 1;
#X connect 5 0 4 1;
#X connect 6 0 5 0;
#X connect 7 0 29 0;
#X connect 8 0 26 0;
#X connect 9 0 27 0;
#X connect 10 0 19 0;
#X connect 16 0 30 0;
#X connect 17 0 30 0;
#X connect 18 0 30 0;
#X connect 19 0 30 4;
#X connect 26 0 30 2;
#X connect 27 0 30 3;
#X connect 29 0 30 1;
#X connect 30 0 3 0;
#X connect 30 1 4 0;
#X connect 31 0 30 0;
#X connect 32 0 30 0;
This diff is collapsed.
/* Copyright (c) 2002 Yves Degoyon
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
/* a header for 2d_space which enables to spatialize
* several sound inputs with the mouse
*/
#ifndef __G_2D_SPACE_H
#define __G_2D_SPACE_H
#define AUDIENCE_NONE 0
#define AUDIENCE_INPUT 1
#define AUDIENCE_OUTPUT 2
typedef struct _audience_tilde
{
t_object x_obj;
t_glist *x_glist;
t_int x_nbinputs;
t_int x_nboutputs;
t_int *x_inputs_x;
t_int *x_inputs_y;
t_int *x_outputs_x;
t_int *x_outputs_y;
t_inlet **x_inputs;
t_outlet **x_outputs;
t_int x_allocate; /* indicates that audio buffer is */
/* beeing reallocated */
t_int x_audiobuffersize; /* audio buffer size */
t_int x_audiowritepos; /* audio writing position */
t_float **x_audiobuffer; /* audio buffer */
t_int x_type_selected; /* type of selected object */
/* e.g. inpout or output or none */
t_int x_nselected; /* index of item selected */
t_int x_height; /* height of the 2d_space object */
t_int x_width; /* width of the 2d_space object */
t_int x_selected; /* stores selected state */
t_float x_attenuation; /* sound attenuation per meter */
t_int x_applydelay; /* optional delay due to the distance */
t_float x_f; /* classical float for signal input */
} t_audience_tilde;
#endif
############ audience procedures -- ydegoyon@free.fr #########
proc audience_apply {id} {
# strip "." from the TK id to make a variable name suffix
set vid [string trimleft $id .]
# for each variable, make a local variable to hold its name...
set var_graph_width [concat graph_width_$vid]
global $var_graph_width
set var_graph_height [concat graph_height_$vid]
global $var_graph_height
set var_graph_nboutputs [concat graph_nboutputs_$vid]
global $var_graph_nboutputs
set cmd [concat $id dialog \
[eval concat $$var_graph_width] \
[eval concat $$var_graph_height] \
[eval concat $$var_graph_nboutputs] \
\;]
#puts stderr $cmd
pdsend $cmd
}
proc audience_cancel {id} {
set cmd [concat $id cancel \;]
#puts stderr $cmd
pdsend $cmd
}
proc audience_ok {id} {
audience_apply $id
audience_cancel $id
}
proc pdtk_audience_dialog {id width height nboutputs} {
set vid [string trimleft $id .]
set var_graph_width [concat graph_width_$vid]
global $var_graph_width
set var_graph_height [concat graph_height_$vid]
global $var_graph_height
set var_graph_nboutputs [concat graph_nboutputs_$vid]
global $var_graph_nboutputs
set $var_graph_width $width
set $var_graph_height $height
set $var_graph_nboutputs $nboutputs
toplevel $id
wm title $id {audience}
wm protocol $id WM_DELETE_WINDOW [concat audience_cancel $id]
label $id.label -text {2$ SPACE PROPERTIES}
pack $id.label -side top
frame $id.buttonframe
pack $id.buttonframe -side bottom -fill x -pady 2m
button $id.buttonframe.cancel -text {Cancel}\
-command "audience_cancel $id"
button $id.buttonframe.apply -text {Apply}\
-command "audience_apply $id"
button $id.buttonframe.ok -text {OK}\
-command "audience_ok $id"
pack $id.buttonframe.cancel -side left -expand 1
pack $id.buttonframe.apply -side left -expand 1
pack $id.buttonframe.ok -side left -expand 1
frame $id.1rangef
pack $id.1rangef -side top
label $id.1rangef.lwidth -text "Width :"
entry $id.1rangef.width -textvariable $var_graph_width -width 7
pack $id.1rangef.lwidth $id.1rangef.width -side left
frame $id.2rangef
pack $id.2rangef -side top
label $id.2rangef.lheight -text "Height :"
entry $id.2rangef.height -textvariable $var_graph_height -width 7
pack $id.2rangef.lheight $id.2rangef.height -side left
frame $id.3rangef
pack $id.3rangef -side top
label $id.3rangef.lnboutputs -text "Nb Listeners :"
entry $id.3rangef.nboutputs -textvariable $var_graph_nboutputs -width 7
pack $id.3rangef.lnboutputs $id.3rangef.nboutputs -side left
bind $id.1rangef.width <KeyPress-Return> [concat audience_ok $id]
bind $id.2rangef.height <KeyPress-Return> [concat audience_ok $id]
bind $id.3rangef.nboutputs <KeyPress-Return> [concat audience_ok $id]
focus $id.1rangef.width
}
############ audience procedures END -- ydegoyon@free.fr #########
#N canvas 45 57 695 405 10;
#X obj 86 268 dac~;
#X text 288 313 comments & bugs @ ydegoyon.free.fr;
#X floatatom 143 104 5 -100 500;
#X text 244 42 musiscript \, an excellent sound generation tool;
#X text 245 53 by David Piott ( http://musicscript.sourceforge.net
);
#X text 243 32 The idea was borrowed from;
#X floatatom 171 129 5 -100 500;
#X floatatom 194 156 5 -100 500;
#X floatatom 210 183 5 0 0;
#X floatatom 277 211 5 -100 500;
#X obj 233 213 / 100;
#X obj 108 41 osc~ 400;
#X text 268 273 Note : the default values are tuned for the osc~ input
;
#X text 268 286 You might need to set other values for your source
;
#X text 188 103 attack [ min=1.0 \, default= 10 ];
#X text 215 128 sustain [ min=0.0 \, default=2.0 ];
#X text 238 155 decay [ min=1.0 \, default = 50 ];
#X text 254 182 size [ min=1.0 \, default = 700 ];
#X text 321 210 global amplitude [ min=0.0 \, max=1.0 \, default=0.5]
;
#X obj 107 237 beatify~ -------------;
#X text 244 19 Beatify~ : an audio amplitude modulator [ ADSR + loop
size ];
#X connect 2 0 19 1;
#X connect 6 0 19 2;
#X connect 7 0 19 3;
#X connect 8 0 19 4;
#X connect 9 0 10 0;
#X connect 10 0 19 5;
#X connect 11 0 19 0;
#X connect 19 0 0 0;
#X connect 19 0 0 1;
/* Copyright (c) 2002 Yves Degoyon. */
/* For information on usage and redistribution, and for a DISCLAIMER OF ALL */
/* WARRANTIES, see the file, "COPYING" in this distribution. */
/* */
/* beatify~ -- modulates an audio signal amplitude, */
/* making it sounding like drums (sometimes) */
/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version 2 */
/* of the License, or (at your option) any later version. */
/* */
/* See file LICENSE for further informations on licensing terms. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* */
/* Based on PureData by Miller Puckette and others. */
/* */
/* Made while listening to : */
/* */
/* "We wanted succes" */
/* "We got lost into the night" */
/* "Take life as it comes" */
/* PJ Harvey -- We Float */
/* ---------------------------------------------------------------------------- */
#include "m_pd.h"
#include <stdlib.h>
#include <math.h>
static char *beatify_version = "beatify~: an audio beatify, version 0.1 (ydegoyon@free.fr)";
typedef struct _beatify
{
t_object x_obj;
t_float x_attack;
t_float x_sustain;
t_float x_decay;
t_float x_size;
t_float x_gamplitude;
t_float x_vol;
t_int x_current;
t_float x_f;
} t_beatify;
static t_class *beatify_class;
static void beatify_attack(t_beatify *x, t_floatarg fattack )
{
if (fattack < 1.0)
{
x->x_attack = 1.0;
}
else
{
x->x_attack = fattack;
}
}
static void beatify_sustain(t_beatify *x, t_floatarg fsustain )
{
if (fsustain < 0.0)
{
x->x_sustain = 0.0;
}
else
{
x->x_sustain = fsustain;
}
}
static void beatify_decay(t_beatify *x, t_floatarg fdecay )
{
if (fdecay < 1.0)
{
x->x_decay = 1.0;
}
else
{
x->x_decay = fdecay;
}
}
static void beatify_size(t_beatify *x, t_floatarg fsize )
{
if (fsize < 100.0)
{
x->x_size = 100.0;
}
else
{
x->x_size = fsize;
}
}
static void beatify_gamplitude(t_beatify *x, t_floatarg fgamplitude )
{
if (fgamplitude < 0.0)
{
x->x_gamplitude = 0.0;
}
else if (fgamplitude > 1.0)
{
x->x_gamplitude = 1.0;
}
else
{
x->x_gamplitude = fgamplitude;
}
}
static void *beatify_new(void)
{
t_beatify *x = (t_beatify *)pd_new(beatify_class);
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("attack"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("sustain"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("decay"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("size"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("gamplitude"));
x->x_attack = 10;
x->x_decay = 50;
x->x_sustain = 2;
x->x_size = 700;
x->x_gamplitude = 0.5;
x->x_current = x->x_size;
outlet_new(&x->x_obj, &s_signal);
return (x);
}
static t_int *beatify_perform(t_int *w)
{
t_float *in = (t_float *)(w[1]);
t_float *out = (t_float *)(w[2]);
t_int n = (int)(w[3]);
t_beatify *x = (t_beatify*)(w[4]);
t_float adelta = 0., ddelta = 0.;
while (n--)
{
if ( x->x_current>=x->x_size )
{
adelta = (x->x_gamplitude-x->x_vol)/x->x_attack;
ddelta = x->x_gamplitude/x->x_decay;
x->x_current = 0;
}
if ( x->x_current<x->x_attack ) x->x_vol+= adelta;
if ( x->x_current>x->x_attack+x->x_sustain && x->x_current<x->x_attack+x->x_sustain+x->x_decay )
{
x->x_vol-= ddelta;
}
x->x_current++;
*(out) = *(in)*x->x_vol;
out++;
in++;
}
return (w+5);
}
static void beatify_dsp(t_beatify *x, t_signal **sp)
{
dsp_add(beatify_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
}
void beatify_tilde_setup(void)
{
logpost(NULL, 4, beatify_version );
beatify_class = class_new(gensym("beatify~"), (t_newmethod)beatify_new, 0,
sizeof(t_beatify), 0, 0);
CLASS_MAINSIGNALIN( beatify_class, t_beatify, x_f );
class_addmethod(beatify_class, (t_method)beatify_dsp, gensym("dsp"), 0);
class_addmethod(beatify_class, (t_method)beatify_attack, gensym("attack"), A_FLOAT, 0);
class_addmethod(beatify_class, (t_method)beatify_sustain, gensym("sustain"), A_FLOAT, 0);
class_addmethod(beatify_class, (t_method)beatify_decay, gensym("decay"), A_FLOAT, 0);
class_addmethod(beatify_class, (t_method)beatify_size, gensym("size"), A_FLOAT, 0);
class_addmethod(beatify_class, (t_method)beatify_gamplitude, gensym("gamplitude"), A_FLOAT, 0);
}
#N canvas 484 81 885 735 10;
#X text 334 640 Part of unauthorized PD;
#X text 480 570 blinkenlights is a blinkenlights movies player;
#X text 480 584 but it's also a pixel grid than you can use for ASCII
art...;
#X text 480 600 Constructor : blinkenlights <width> <height> <x pixel
size> <y pixel size>;
#X msg 125 10 create;
#X msg 182 10 destroy;
#X text 274 11 Create/destroy the window;
#X msg 125 129 background 78 34 12;
#X text 275 131 Set the background color [RGB];
#X text 275 154 Set the foreground color [RGB];
#X msg 121 223 pixon \$1 \$2;
#X msg 284 222 bang;
#X msg 285 266 bang;
#X msg 122 267 pixoff \$1 \$2;
#X obj 87 618 blinkenlights 18 8 32 32;
#X msg 125 152 foreground 124 78 89;
#X obj 347 277 hsl 32 8 1 32 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X obj 336 250 vsl 8 32 1 32 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X text 355 257 Set a pixel off;
#X text 352 213 Set a pixel on;
#X obj 346 232 hsl 32 8 1 32 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 1600 1;
#X obj 335 205 vsl 8 32 1 32 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 1400 1;
#X msg 338 309 bang;
#X obj 400 320 hsl 32 8 1 32 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X obj 389 293 vsl 8 32 1 32 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X text 410 303 Set a pixel in a particular color;
#X msg 118 310 pixel \$1 \$2 34 23 109;
#X obj 120 338 + 1;
#X obj 217 338 + 1;
#X obj 316 338 random 255;
#X obj 395 338 random 255;
#X obj 470 338 random 255;
#X msg 118 360 pixel \$1 \$2 \$3 \$4 \$5;
#X obj 267 359 pack f f f f f;
#X obj 464 360 t b b b b b;
#X msg 593 339 stop;
#X text 634 342 Random drawing;
#X msg 547 339 bang;
#X obj 548 360 metro 10;
#X obj 146 338 random 32;
#X obj 246 337 random 32;
#X msg 125 107 clear;
#X text 274 105 Clear the area;
#X text 122 187 ============================================ Pixel
Functions;
#X text 552 187 ========================================;
#X text 550 -6 ========================================;
#X text 539 472 ========================================;
#X text 112 472 =========================================== Movies
Functions;
#X text 122 -6 =========================================== Grid Actions
;
#X obj 214 222 pack f f;
#X obj 215 266 pack f f;
#X obj 275 310 pack f f;
#X msg 125 81 xsize 32;
#X msg 192 81 ysize 32;
#X text 274 79 Set the pixel x & y size;
#X msg 127 33 width 24;
#X msg 125 58 height 24;
#X text 275 37 Set the width ( number of pixels );
#X text 275 56 Set the height ( number of pixels );
#X msg 127 495 open ./blm/ascii_people.blm;
#X msg 335 495 play;
#X msg 377 495 stop;
#X msg 127 522 open \$1;
#X msg 418 495 next;
#X obj 458 494 metro 100;
#X msg 531 495 bang;
#X msg 571 494 stop;
#X obj 188 521 openpanel;
#X obj 261 522 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 615 495 5 0 0 0 - - -;
#X text 534 401 ========================================;
#X text 116 400 =============================================== VJ
function;
#X msg 132 444 vj \$1;
#X msg 363 444 goto \$1;
#X obj 366 423 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 5600 1;
#X obj 132 424 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X text 507 420 <- look! you can also scratch the film!;
#X text 530 434 be sure the window is created first....;
#X text 154 420 <- switch to the scratch mode;
#X text 333 654 Comments and bugs @ ydegoyon@free.fr and chun@goto10.org
;
#X connect 4 0 14 0;
#X connect 5 0 14 0;
#X connect 7 0 14 0;
#X connect 10 0 14 0;
#X connect 11 0 49 0;
#X connect 12 0 50 0;
#X connect 13 0 14 0;
#X connect 15 0 14 0;
#X connect 16 0 50 0;
#X connect 17 0 12 0;
#X connect 17 0 50 1;
#X connect 20 0 49 0;
#X connect 21 0 11 0;
#X connect 21 0 49 1;
#X connect 22 0 51 0;
#X connect 23 0 51 0;
#X connect 24 0 22 0;
#X connect 24 0 51 1;
#X connect 26 0 14 0;
#X connect 27 0 33 0;
#X connect 28 0 33 1;
#X connect 29 0 33 2;
#X connect 30 0 33 3;
#X connect 31 0 33 4;
#X connect 32 0 14 0;
#X connect 33 0 32 0;
#X connect 34 0 39 0;
#X connect 34 1 40 0;
#X connect 34 2 29 0;
#X connect 34 3 30 0;
#X connect 34 4 31 0;
#X connect 35 0 38 0;
#X connect 37 0 38 0;
#X connect 38 0 34 0;
#X connect 39 0 27 0;
#X connect 40 0 28 0;
#X connect 41 0 14 0;
#X connect 49 0 10 0;
#X connect 50 0 13 0;
#X connect 51 0 26 0;
#X connect 52 0 14 0;
#X connect 53 0 14 0;
#X connect 55 0 14 0;
#X connect 56 0 14 0;
#X connect 59 0 14 0;
#X connect 60 0 14 0;
#X connect 61 0 14 0;
#X connect 62 0 14 0;
#X connect 63 0 14 0;
#X connect 64 0 63 0;
#X connect 65 0 64 0;
#X connect 66 0 64 0;
#X connect 67 0 62 0;
#X connect 68 0 67 0;
#X connect 69 0 64 1;
#X connect 72 0 14 0;
#X connect 73 0 14 0;
#X connect 74 0 73 0;
#X connect 75 0 72 0;
This diff is collapsed.
#N canvas 251 75 572 506 10;
#X obj 149 202 dac~;
#X obj 150 128 compressor~;
#X text 290 253 comments & bugs @ ydegoyon.free.fr;
#X text 243 19 Compressor~ : an audio compressor;
#X floatatom 259 86 5 -100 500;
#X obj 108 41 osc~ 250;
#X text 305 83 strength [ min : -1 \; max = 5 \; default = 0 ];
#X obj 215 88 / 100;
#X connect 1 0 0 0;
#X connect 1 0 0 1;
#X connect 4 0 7 0;
#X connect 5 0 1 0;
#X connect 7 0 1 1;
/* Copyright (c) 2002 Yves Degoyon. */
/* For information on usage and redistribution, and for a DISCLAIMER OF ALL */
/* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
/* */
/* compressor~ -- compresses audio signal according to a factor */
/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License */
/* as published by the Free Software Foundation; either version 2 */
/* of the License, or (at your option) any later version. */
/* */
/* See file LICENSE for further informations on licensing terms. */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program; if not, write to the Free Software */
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* */
/* Based on PureData by Miller Puckette and others. */
/* */
/* Made while listening to : */
/* */
/* "I can't get you out of my head" */
/* "Na, na, na, na, na, na, na, na, na, ...." */
/* Kylie Minogue ( without Nick Cave ) */
/* ---------------------------------------------------------------------------- */
#include "m_pd.h"
#include <stdlib.h>
#include <math.h>
static char *compressor_version = "compressor~: an audio compressor, version 0.1 (ydegoyon@free.fr)";
typedef struct _compressor
{
t_object x_obj;
t_float x_strength;
t_float x_pifactor;
t_float x_f;
} t_compressor;
static t_class *compressor_class;
static void compressor_strength(t_compressor *x, t_floatarg fstrength )
{
if (fstrength < -1.0)
{
x->x_strength = -1.0;
}
else if (fstrength > 5)
{
x->x_strength = 5;
}
else
{
x->x_strength = fstrength;
}
x->x_pifactor = pow( M_PI, x->x_strength );
}
static void *compressor_new(void)
{
t_compressor *x = (t_compressor *)pd_new(compressor_class);
inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("strength"));
x->x_strength = 0.;
x->x_pifactor = pow( M_PI, x->x_strength );
outlet_new(&x->x_obj, &s_signal);
return (x);
}
static t_int *compressor_perform(t_int *w)
{
t_float *in = (t_float *)(w[1]);
t_float *out = (t_float *)(w[2]);
int n = (int)(w[3]);
t_compressor *x = (t_compressor*)(w[4]);
t_float isample_fact = x->x_pifactor;
t_float osample_fact = 2.0 / M_PI;
while (n--)
{
*out = atan (*in * isample_fact) * osample_fact;
out++;
in++;
}
return (w+5);
}
static void compressor_dsp(t_compressor *x, t_signal **sp)
{
dsp_add(compressor_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
}
void compressor_tilde_setup(void)
{
logpost(NULL, 4, compressor_version );
compressor_class = class_new(gensym("compressor~"), (t_newmethod)compressor_new, 0,
sizeof(t_compressor), 0, 0);
CLASS_MAINSIGNALIN( compressor_class, t_compressor, x_f );
class_addmethod(compressor_class, (t_method)compressor_dsp, gensym("dsp"), 0);
class_addmethod(compressor_class, (t_method)compressor_strength, gensym("strength"), A_FLOAT, 0);
}
#N canvas 29 25 986 675 10;
#X msg 30 628 \; pd dsp 1;
#X msg 104 629 \; pd dsp 0;
#X obj 122 567 dac~;
#X obj 29 599 loadbang;
#X obj 115 531 *~ 1;
#X obj 156 530 *~ 1;
#X floatatom 204 531 5 0 0;
#X text 557 36 Cooled~ : a micro sound editor;
#X text 555 48 it supports selection and cut/paste modifications;
#X text 686 645 Comments and bugs @ ydegoyon@noos.fr;
#X obj 277 506 print recend;
#X obj 362 540 print playend;
#X msg 28 31 bang;
#X obj 27 53 openpanel;
#X msg 62 226 resize \$1;
#X obj 27 73 t s b;
#X obj 76 73 float \$0;
#X text 27 6 Step 1 : Load a sound file;
#X obj 27 96 route float;
#X text 95 25 ( a small one );