forked from s-e-a-m/faust-libraries
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathseam.dwt.lib
102 lines (87 loc) · 2.84 KB
/
seam.dwt.lib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// ---
// description: SEAM DWT Library
// ---
//
// <!-- LICENSE: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 -->
//
// # seam.dwt.lib
//
// ```text
declare name "SEAM Discrete Wavelet Transform - Library";
declare version "0.1";
declare author "Giuseppe Silvi";
declare license "CC3";
// ```
sdw = library("seam.dwt.lib");
import("stdfaust.lib");
//=================================================== HAAR WAVELET TRANSFORM ===
//==============================================================================
// https://forum.pdpatchrepo.info/uploads/files/1565396211674-audio-manipulations-in-wavelet-domain.pdf
// https://en.wikipedia.org/wiki/Haar_wavelet
decomposer(nb) = _ <: filt(nb,nb)
with {
lp = _ <: 0.5*(_+_');
hp = _ <: 0.5*(_-lp);
ds = ba.sAndH(ba.time%(2) == 0); //----------------------- DOWNSAMPLING ---
//dslist(n) = par(i,n,(n-i)*2); //----------- CASCADING DS2 IN REVERSE ORDER ---
//dssel(s,n) = ba.take(s,dslist(n)); //------------------------- DS SELECTOR ---
filt(0,nb) = _;
filt(i,nb) = (lp <: filt(i-1,nb)), hp;
filtds(i,nb) = (lp : ds <: filt(i-1,nb)), (hp : ds);
};
//process = no.pink_noise : decomposer(4);
c(nb,d) = ba.pulsen(1,nb)@(d);
trigger(b) = c(2^(b+1), (2^(b+1)/2)-1); // b is the sample position 0 to fs-1
//process = trigger(4);
encoder(0) = _;
encoder(i) = select2(trigger(i), encoder(i-1));
//process = (4,3,2,1,0) : encoder(4);
process = no.pink_noise <: _, (decomposer(4) : encoder(4));
//
//
//
// DA FINIRE RECOMPOSER
recomposer(nb) = merging(nb)
with {
lp = _ <: 0.5*(_+_');
hp = _ <: 0.5*(_-lp);
us = _ <: it.interpolate_linear(1,_,_); //-------------------- UPSAMPLING ---
merging(nb) = seq(i,nb-1,(((us : lp), (us : hp)) :> _), si.bus(nb-(i+1))) :> (us : lp),(us : hp) :> _;
};
//prova(n) = par(i,n,select2(c(2*(i+1),2*2*(i+1)),n-i,0));
fs(nb) = pow(2,int(nb));
//triggers(nb) = par(i,nb+1, c(2^(i+1), (2^(i+1)/2)-1));
//process = triggers(8);
aa = library("aanl.lib");
sf = library("all.lib");
an = library("analyzers.lib");
ba = library("basics.lib");
co = library("compressors.lib");
de = library("delays.lib");
dm = library("demos.lib");
dx = library("dx7.lib");
en = library("envelopes.lib");
fd = library("fds.lib");
fi = library("filters.lib");
ho = library("hoa.lib");
it = library("interpolators.lib");
ma = library("maths.lib");
mi = library("mi.lib");
ef = library("misceffects.lib");
os = library("oscillators.lib");
no = library("noises.lib");
pf = library("phaflangers.lib");
pl = library("platform.lib");
pm = library("physmodels.lib");
qu = library("quantizers.lib");
rm = library("reducemaps.lib");
re = library("reverbs.lib");
ro = library("routes.lib");
sp = library("spats.lib");
si = library("signals.lib");
so = library("soundfiles.lib");
sy = library("synths.lib");
ve = library("vaeffects.lib");
vl = library("version.lib");
wa = library("webaudio.lib");
wd = library("wdmodels.lib");