Skip to content

Commit

Permalink
tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
porres committed Mar 13, 2021
1 parent 6331eec commit 58fe899
Show file tree
Hide file tree
Showing 14 changed files with 621 additions and 406 deletions.
Binary file modified Live-Electronics-Tutorial/README.pdf
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
#N canvas 637 48 594 636 12;
#X declare -path else;
#X obj 397 340 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#X obj 358 341 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-228856 -1 -1 0 256;
#X obj 364 484 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
#X obj 360 492 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-228856 -1 -1 0 256;
#X obj 125 453 delwrite~ \$0-del 3000;
#X obj 397 370 delread~ \$0-del 500;
#X obj 364 514 delread~ \$0-del 1500;
#X obj 104 488 out~;
#X obj 397 406 out~;
#X obj 364 550 out~;
#X text 104 124 The native [delwrite~] object creates a "ring buffer"
\, which is a buffer to continuously record to. You can think of a
magnetic tape in a loop \, so when you record the whole length of the
tape you start recording again from the beggining. This was how the
first delays were designed \, by the way. One head was used to write
and another to read at different length points (the further back \,
the bigger the delay)., f 55;
#X text 104 245 The native [delread~] object \, when named with the
same delay line \, can access the buffer at different length points
(set in ms with the second argument or inlet). Multiple [delread~]
objects can read from the same line defined in [delwrite~]., f 55
;
#X obj 380 15 declare -path else;
#X obj 104 408 play.file~ bubul.wav 1 1;
#X text 104 55 The "delay" is the basis of many processes and FX as
#X obj 123 476 delwrite~ \$0-del 3000;
#X obj 358 371 delread~ \$0-del 500;
#X obj 360 522 delread~ \$0-del 1500;
#X obj 102 511 out~;
#X obj 358 407 out~;
#X obj 360 558 out~;
#X obj 409 18 declare -path else;
#X obj 102 431 play.file~ bubul.wav 1 1;
#X text 41 56 The "delay" is the basis of many processes and FX as
we'll see throughout this tutorial \, such as flanger \, chorus \,
echo/reverberation effects and pitch shifters. And we'll also see how
they are the basis of filters., f 55;
they are the basis of filters., f 73;
#X text 41 105 The native [delwrite~] object creates a "ring buffer"
\, which is a buffer to continuously record to. Let's take the analog
example of a magnetic tape delay \, which has the in a closed loop.
This way \, when you record one cycle of the whole length of the tape
you start recording again from the beggining. Then \, one head was
used to write and another to read at a different length point (the
further back \, the bigger the delay)., f 73;
#X text 41 198 In the digital world it's the same. It records into
a buffer/array and restarts recording to the beggining of the buffer
in a loop. The [delwrite~] object is the write head and the [delread~]
is the read head that can access the buffer at different lengths behind
(set in ms with the second argument or inlet). Multiple [delread~]
objects can read from the same line defined in [delwrite~] \, they
only need to have the same delay line name. Check their help files
for more information., f 73;
#X connect 0 0 3 0;
#X connect 1 0 4 0;
#X connect 3 0 6 0;
#X connect 4 0 7 0;
#X connect 11 0 2 0;
#X connect 11 0 5 0;
#X connect 9 0 2 0;
#X connect 9 0 5 0;
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ reading speed of the tape \, hence \, pitch changes!;
there \, only the reading speed of the tape is acting \, so the original
speed is restored. Fool around with the slider below and see how that
happens.;
#X text 81 686 Up to Pd 0.50-2 \, [delread~] e [delread4~] cannot read
up to the maximum delay line \, but they go up to a block of audio
less. A workaround is to specify a buffer size a block longer than
you actually need.;
#X text 81 685 Up to Pd 0.50-4 \, [delread~] and [delread4~] cannot
read up to the maximum delay line if they have different block sizes.
A workaround is to specify a buffer size a block longer than you actually
need.;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 5 0 6 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#N canvas 559 58 532 508 12;
#N canvas 699 57 532 508 12;
#X declare -path else;
#N canvas 395 114 349 226 delwrite~ 0;
#X obj 57 40 inlet~;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#N canvas 706 23 561 682 12;
#X declare -path else;
#X obj 308 301 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-228856 -1 -1 0 256;
#X obj 326 451 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-228856 -1 -1 0 256;
#X obj 79 506 out~;
#X obj 308 367 out~;
#X obj 326 517 out~;
#X obj 378 21 declare -path else;
#X obj 79 306 play.file~ bubul.wav 1 1;
#X obj 104 471 del~ in \$0-del 3000;
#X obj 326 481 del~ out \$0-del 1500;
#X msg 104 341 size 1500;
#X msg 117 368 size 3000;
#X msg 132 431 freeze \$1;
#X obj 132 405 tgl 17 0 empty empty empty 17 7 0 10 -228856 -1 -1 0
1;
#X text 155 403 <= freeze;
#X text 32 216 Check the help file for more details. Below \, check
how you can resize the delay line and also freeze it. When frozen \,
the write head stops writing to the delay line but keeps moving.,
f 69;
#X text 84 598 Note that this object also has the order of execution
issue. But [del~ in] has a dummy signal outlet to help this \, check
the example in the help file.;
#X text 34 57 The [del~] object from ELSE basically comprises both
[delwrite~] and [dlread4~]. This object behaves like [delwrite~] if
created as [del~ in] \, and as [delred4~] if creted as [del~ out].
It also offers more functionalitites not present in the native delay
objects (at least yet) \, like being able to resize the delay line
in [del~ in] and also "freeze" the recording. We can also set the delay
time in samples instead of ms., f 69;
#X text 32 164 This object also fixes a bug present in [delwrite~]
\, [delread~] and [delread4~] when the read and write objects have
different block sizes mentioned earlier., f 69;
#X obj 308 331 del~ out -samps \$0-del 22050;
#X text 449 355 same as 500 ms, f 7;
#X connect 0 0 18 0;
#X connect 1 0 8 0;
#X connect 6 0 2 0;
#X connect 6 0 7 0;
#X connect 8 0 4 0;
#X connect 9 0 7 0;
#X connect 10 0 7 0;
#X connect 11 0 7 0;
#X connect 12 0 11 0;
#X connect 18 0 3 0;

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#N canvas 749 57 526 548 12;
#X declare -path else;
#X text 63 64 So far we're only seeing feed forward delay lines \,
where the delay output is not fed back into the delay recording.,
f 58;
#X obj 147 363 bng 17 250 50 0 empty empty empty 17 7 0 10 -228856
-1 -1;
#X obj 290 382 hsl 128 15 0 1000 0 0 empty empty empty -2 -8 0 10 -228856
-1 -1 0 1;
#X obj 287 404 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-228856 -1 -1 0 256;
#X text 295 381 delay time in ms;
#X obj 147 391 impseq~;
#X obj 234 426 ffdelay~;
#X obj 337 24 declare -path else;
#X obj 147 455 out~;
#X text 63 105 The ELSE library provides the [ffdelay~] object \, which
is a feedforward delay line. Though there are plans to allow multi
tap output in this object soon \, you can now only have one delay output.
So this is useful if you just need a single delayed output. If you
want to read from the delay line multiple times \, it's best to use
on single object to write to a buffer just once (saving memory and
computation) and then use different read objects., f 58;
#X text 63 224 For a single delay line \, this is quite convenience
as we just use one single object instead of a write/read pair. You
also don't need to bother with order of execution., f 58;
#X text 63 277 The [ffdelay~] object accepts signals to specify the
delay point and also uses the same interpolation as [delread4~]. Like
[del~] \, it can resize the delay line and freeze it. Check the help
file for more details.;
#X connect 1 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 6 1;
#X connect 5 0 6 0;
#X connect 5 0 8 0;
#X connect 6 0 8 1;
Loading

0 comments on commit 58fe899

Please sign in to comment.