#N canvas 92 74 1271 620 10;
#X obj -389 3 cnv 15 437 600 empty empty ABOUT: 17 23 0 19 -179252
-66577 0;
#X obj -361 51 cnv 15 330 25 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text -358 55 [Brane-e]: the Essential/Economic Version of [Brane~]
;
#X obj -361 124 cnv 15 106 85 empty empty empty 20 12 0 14 -224825
-66577 0;
#X text -357 124 The patch is a \; - sampler \; - harmonizer \; - Phase
Vocoder \; - Autotuner \; - Granulator;
#X obj -361 216 cnv 15 375 283 empty empty empty 20 12 0 14 -224825
-66577 0;
#X obj -232 172 cnv 15 193 24 empty empty empty 20 12 0 14 -175206
-66577 0;
#X text -226 174 Bug reports: porres@gmail.com;
#X text -241 127 (C) Copyright Alexandre Torres Porres \; released
under the GNU GPL v3;
#X obj 49 3 cnv 15 830 600 empty empty empty 20 12 0 14 -253822 -66577
0;
#N canvas 34 27 1056 357 presets 0;
#X msg 200 185 left;
#X msg 239 183 right;
#X msg 137 185 up;
#X msg 165 185 down;
#X floatatom 47 49 5 0 0 0 - - -;
#X msg 103 140 bang;
#X msg 90 117 toggle;
#X text 88 49 preset number;
#X obj 113 281 outlet;
#X msg 77 97 name \$1;
#X symbolatom 77 74 10 0 0 0 - - -;
#X text 150 87 preset name;
#X text 142 162 Navigate Preset Banks;
#X obj 300 135 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
#X obj 300 159 + 1;
#X floatatom 300 185 5 0 0 0 - - -;
#X text 347 186 preset unit (1 to 4);
#X text 136 115 store/load toggle;
#X text 137 139 store/load bang;
#X msg 300 211 radio \$1;
#X text 363 210 sets the preset radio GUI;
#X text 640 188 The presets include just about every control that's
relevant to be saved on your patch.;
#X text 640 117 LOADING AND SAVING PRESETS \; There's a presets folder
that stores a preset file whenever you save a preset. You can load
this file into any preset number afterwards. The file is stored with
the preset number and the file extension .brn;
#X connect 0 0 8 0;
#X connect 1 0 8 0;
#X connect 2 0 8 0;
#X connect 3 0 8 0;
#X connect 4 0 8 0;
#X connect 5 0 8 0;
#X connect 6 0 8 0;
#X connect 9 0 8 0;
#X connect 10 0 9 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 19 0;
#X connect 19 0 8 0;
#X restore 180 216 pd presets;
#N canvas 120 22 648 436 sampler 0;
#X msg 126 190 rec;
#X msg 133 214 pause;
#X msg 43 23 open;
#X msg 145 262 time \$1;
#X floatatom 145 239 5 0.001 60 0 - - -;
#X floatatom 148 286 5 25 900 0 - - -;
#X msg 148 308 fade \$1;
#X obj 104 390 outlet;
#X msg 157 355 autostart \$1;
#X obj 157 335 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 81 14 open command with no arguments: Choose sound file from
computer;
#X text 156 191 Records on buffer;
#X text 174 212 Pause and unpause recording;
#X text 187 284 recording fade in/out in ms;
#X text 178 335 Starts playing automatically if toggle on;
#X text 177 155 resets sample rate to Pd's;
#X msg 113 154 reset-SR;
#X text 201 241 buffer length in minutes (integer part) and seconds
(decimal part);
#X msg 65 56 open samples/sax.wav;
#X msg 88 103 open samples/sax.wav 96;
#X text 198 48 1st argument: sound file (no 2nd argument means that
sample rate is the same as Pd's);
#X text 243 85 optional 2nd argument: sound file's sample rate in Khz
- this is needed if different than the one Pd is running at \, since
a sample rate compensation is needed both for pitch and time-stretch
;
#X connect 0 0 7 0;
#X connect 1 0 7 0;
#X connect 2 0 7 0;
#X connect 3 0 7 0;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 8 0 7 0;
#X connect 9 0 8 0;
#X connect 16 0 7 0;
#X connect 18 0 7 0;
#X connect 19 0 7 0;
#X restore 266 216 pd sampler;
#N canvas 113 28 580 310 fft 0;
#X msg 68 36 lock \$1;
#X obj 68 16 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X msg 88 138 window \$1;
#X msg 99 177 <;
#X msg 139 176 >;
#X obj 88 91 expr pow(2 \, ($f1 + 9));
#X obj 88 66 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X obj 70 237 outlet;
#X floatatom 88 115 5 0 0 0 - - -;
#X text 96 13 phase-lock;
#X text 158 116 Window Size (powers of 2 from 512 to 8192);
#X text 158 133 if the number is not a power of 2 \, it rounds to the
nearest power of two below that number.;
#X text 172 175 navigates through the window options in a loop fashion
;
#X connect 0 0 7 0;
#X connect 1 0 0 0;
#X connect 2 0 7 0;
#X connect 3 0 7 0;
#X connect 4 0 7 0;
#X connect 5 0 8 0;
#X connect 6 0 5 0;
#X connect 8 0 2 0;
#X restore 610 217 pd fft;
#X text 448 546 harmony-voice;
#X text 280 546 root-voice;
#X obj 610 553 bng 15 250 50 0 empty empty empty 17 7 0 10 -191407
-1 -1;
#X text 634 523 bang whenever;
#X text 632 540 finishes playing;
#X obj 95 215 adc~ 1;
#N canvas 275 52 626 679 shifter 0;
#X msg 121 504 root \$1;
#X floatatom 112 438 5 0 0 0 - - -;
#X floatatom 121 480 5 0 0 0 - - -;
#X msg 112 457 harm \$1;
#X msg 133 560 harmonizer \$1;
#X obj 133 538 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 101 388 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 101 410 autotune \$1;
#X msg 11 115 div \$1 \$2;
#X floatatom 12 65 5 0 0 0 - - -;
#X floatatom 56 65 5 0 0 0 - - -;
#X obj 12 92 pack;
#X obj 64 628 outlet;
#X text 177 439 shiffting in cents of harmony-voice;
#X text 179 484 shiffting in cents of root-voice;
#X text 158 536 harmonizer toggle;
#X text 144 586 makes the shiffting value of harmony-voice to be in
an interval relation to the root-voice shift;
#X text 4 40 ratio;
#X text 59 41 steps;
#X text 114 21 Generates a scale that equally divides an interval ratio
in X steps;
#X text 184 403 turns on/off the automatic retuner \, according to
the loaded scale;
#X text 127 251 scale;
#X msg 78 273 0 220 440 660 880 1100;
#X msg 34 189 div 2 24;
#X text 94 187 (example of quarter-tones division of the octave);
#X msg 52 214 div 3 13;
#X text 112 212 (example of Bohlen-Pierce scale);
#X msg 86 359 print-scale;
#X text 169 358 prints the scale on terminal window;
#X text 230 242 list of numbers: scale steps in cents (needs to star
with zero). This allows ANY Kind of scale to be loaded into the patch!
The scales are also stored on the presets. It doesn't need to be equal
nor end in an octave. The highest value will be interpreted as the
new starting point of the next scale cycle. It is also the default
interval value that you can divide into equal steps;
#X text 112 59 This is something you can only specify through messages
sent to the patch. You can click on the "steps" number box in the patch
and it will generate an equal division scale based on that number of
steps \, but you can't specify which interval ratio will be divided.
So it will always divide to the ratio that was set by this message.
In the case this value wasn't set by a message \, the default interval
value loaded on the patch depends on the loaded scale on the preset
;
#X connect 0 0 12 0;
#X connect 1 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 12 0;
#X connect 4 0 12 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 7 0 12 0;
#X connect 8 0 12 0;
#X connect 9 0 11 0;
#X connect 10 0 11 1;
#X connect 11 0 8 0;
#X connect 22 0 12 0;
#X connect 23 0 12 0;
#X connect 25 0 12 0;
#X connect 27 0 12 0;
#X restore 524 211 pd shifter \; tuner;
#N canvas 9 22 854 619 player 0;
#X obj 433 -103 cnv 15 400 450 empty empty Slicer 20 12 0 14 -262144
-66577 0;
#X msg 455 -11 \$1 L;
#X msg 492 -11 \$1 C;
#X msg 530 -11 \$1 R;
#X obj 483 -48 hsl 50 8 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 495 -37 hsl 50 8 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X obj 505 -27 hsl 50 8 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X msg 455 19 slider \$2 \$1;
#X msg 491 75 slice \$1;
#X floatatom 491 52 5 0 0 0 - - -;
#X floatatom 514 106 5 0 0 0 - - -;
#X msg 514 127 min-slice \$1;
#X msg 530 168 L-bng;
#X msg 577 169 R-bng;
#X msg 531 190 L-tgl;
#X msg 578 190 R-tgl;
#X obj 584 252 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 529 312 outlet;
#X text 553 105 minimum slice size (min-size) in seconds;
#X text 624 177 Slicer Bangs and Toggles;
#X text 665 225 shuffles slice;
#X msg 581 225 shuffle-bng;
#X msg 584 274 shuffle-tgl \$1;
#X text 613 252 shuffles slice automatically;
#X obj 13 -167 cnv 15 400 600 empty empty Player 20 12 0 14 -262144
-66577 0;
#X msg 207 263 bounce;
#X msg 199 234 loop \$1;
#X obj 199 215 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
#X msg 67 -37 speed \$1;
#X obj 67 -60 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X obj 219 294 vsl 11 55 0 1 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 0 1;
#X msg 219 355 master \$1;
#X msg 133 63 location \$1;
#X obj 136 43 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X msg 183 186 rewind;
#X obj 158 393 outlet;
#X obj 26 -120 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X msg 26 -96 target \$1;
#X msg 154 119 time-ms \$1;
#X msg 108 16 play \$1;
#X obj 108 -6 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 228 119 play from time X in ms;
#X obj 154 93 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X text 211 65 location slider;
#X msg 169 162 freeze \$1;
#X obj 169 141 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 235 155 Freeze Toggle;
#X text 129 -8 Play/Stop Toggle;
#X text 231 187 rewind bang;
#X text 252 222 loop h-radio;
#X text 241 303 Master Volume;
#X text 131 -50 Speed of play in %;
#X text 569 -46 slicing-sliders;
#X text 529 50 slice dize in seconds;
#X text 103 -102 (affects speed % and vice-vera);
#X text 93 -120 Target duration of buffer in seconds;
#X text 254 256 bounce bang (this changes;
#X text 261 274 the playing direction);
#X connect 1 0 7 0;
#X connect 2 0 7 0;
#X connect 3 0 7 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 17 0;
#X connect 8 0 17 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 11 0 17 0;
#X connect 12 0 17 0;
#X connect 13 0 17 0;
#X connect 14 0 17 0;
#X connect 15 0 17 0;
#X connect 16 0 22 0;
#X connect 21 0 17 0;
#X connect 22 0 17 0;
#X connect 25 0 35 0;
#X connect 26 0 35 0;
#X connect 27 0 26 0;
#X connect 28 0 35 0;
#X connect 29 0 28 0;
#X connect 30 0 31 0;
#X connect 31 0 35 0;
#X connect 32 0 35 0;
#X connect 33 0 32 0;
#X connect 34 0 35 0;
#X connect 36 0 37 0;
#X connect 37 0 35 0;
#X connect 38 0 35 0;
#X connect 39 0 35 0;
#X connect 40 0 39 0;
#X connect 42 0 38 0;
#X connect 44 0 35 0;
#X connect 45 0 44 0;
#X restore 340 211 pd player \; slicer;
#X text 121 561 master output;
#N canvas 570 43 626 453 grainer 0;
#X obj 119 401 outlet;
#X msg 144 171 retuning \$1;
#X obj 144 147 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 151 208 hsl 60 12 0.00375 1 1 0 empty empty empty -2 -8 0 10
-262144 -1 -1 0 1;
#X msg 148 228 range \$1;
#X obj 84 38 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
;
#X msg 84 60 speed \$1;
#X obj 110 89 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 110 111 location \$1;
#X obj 192 306 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 192 328 unsteady \$1;
#X obj 176 259 hsl 60 12 0 500 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
#X msg 173 279 tempo \$1;
#X text 138 39 Random Speed;
#X text 219 155 Random Retuning;
#X text 223 216 Retuning Range;
#X text 248 266 Random Tempo;
#X text 272 318 Unsteady Tempo;
#X text 194 91 Random Location (If on when play toggle is off \, the
random shifting of the location slider will play grains of the sample)
;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 4 0 0 0;
#X connect 5 0 6 0;
#X connect 6 0 0 0;
#X connect 7 0 8 0;
#X connect 8 0 0 0;
#X connect 9 0 10 0;
#X connect 10 0 0 0;
#X connect 11 0 12 0;
#X connect 12 0 0 0;
#X restore 438 211 pd grainer \; randomizer;
#X text -357 218 A bit more \; The patch can load and store 40 presets
\, and you can switch between them to change the parameters on the
fly \; It consists of a Pure Data Patch (an abstraction) made only
of Vanilla objects. In this essential/economic version \, we basically
have a sampler and a Phase Vocoder. The Phase Vocoder allows one to
change pitch (Pitch-Shifter) and tempo (time stretch/compress) independently.
The Phase Vocoder is an equivalent implementation of Miller Puckette's
Phase Locking Vocoder \, available in Pd's examples (I07.Phase Vocoder)
\; In this patch \, the sampler records or plays mono files and runs
two Phase-Vocoders for independent Pitch Shifting. So we have a single
tempo transformation but two independent voices: a "root" and a "harmony".
The patch also allows pitch shiffting to any loaded music scale \,
and has a built in scale generator based on Equal Divisions \; Moreover
\, the playing capabilities of the sampler allows automatic looping
\, bouncing \, freeze and selection of audio slices. It also has other
features like a granulator and random playing settings.;
#X obj -366 512 cnv 15 380 70 empty empty empty 20 12 0 14 -261494
-66577 0;
#X text 624 359 <== Buffer (seconds / ms);
#X text 626 391 <== Player (seconds / ms);
#X text 627 464 <== Real Time (seconds / ms);
#X text 81 195 Audio input;
#X text 622 433 <== Target buffer size (relates to speed);
#X text 469 49 Messages sent to the inlets can change every single
control of the patch and settings of the patch. Therefore \, you can
operate it with no GUI (I guess...) \; Each group of controls has its
own inlet. Check bellow which groups they are \, and open the subpatch
to see what messages to send.;
#X text 636 558 or loops around;
#X text -348 545 Some of the GUI features don't seem to be working
on Pd 0.43 because of some bugs.;
#X text -356 517 IMPORTANT:;
#X text -344 89 ==> 1st Beta Release from october 1st of 2012 <==;
#X obj 63 24 cnv 15 380 140 empty empty Arguments: 16 19 0 14 -233017
-66577 0;
#X text 78 66 - 1st Argument: Preset Number - Default value: Preset
#1 \; - 2nd Argumemt: sound file name if symbol or buffer length in
minutes (integer part) and seconds (decimal part) if float - Default
value: 1 minute \; - 3rd Argument: sound file's sample rate in Khz
(only needed if diffetent than Pd's) - Default: Pd's sample rate;
#X obj 87 560 dac~;
#X obj 95 252 Brane-e 1 ./samples/sax.wav 96;
#X connect 10 0 38 1;
#X connect 11 0 38 2;
#X connect 12 0 38 6;
#X connect 18 0 38 0;
#X connect 19 0 38 5;
#X connect 20 0 38 3;
#X connect 20 1 38 3;
#X connect 22 0 38 4;
#X connect 38 0 37 0;
#X connect 38 0 37 1;
#X connect 38 3 15 0;
