Browse Source

gia si ragiona

boyska 6 years ago
commit
be487f1cb4
1 changed files with 54 additions and 0 deletions
  1. 54 0
      filtroam.inc.liq

+ 54 - 0
filtroam.inc.liq

@@ -0,0 +1,54 @@
+# questo file e' pensato per essere incluso
+# definisce alcune variabili (quindi dovete toglierle dal file di conf, ma le potete comunque usare)
+# e la funzione filtroAM che include tutte le smanipolazioni varie
+# taglio
+banda = interactive.float("banda", 4500.)
+centrobanda = interactive.float("centrobanda", 2350.)
+# compressione
+attack = interactive.float("attack", 100.)
+gain = interactive.float("gain", -0.1)
+knee = interactive.float("knee", 1.)
+ratio = 4.
+release = interactive.float("release", 50.)
+rms_window =  0.1
+threshold = interactive.float("threshold", -10.)
+# queste variabili booleane permettono di disabilitare alcuni step in tempo reale
+# in questo modo si puo' testare l'effetto che fa ogni componente.
+# non e' pero' possibile riordinare i componenti
+phaser = interactive.bool("phaser", true)
+tagliabanda = interactive.bool("tagliabanda", true)
+eq = interactive.bool("eq", true)
+vlevel = interactive.bool("vlevel", true)
+comp = interactive.bool("comp", true)
+bassi = interactive.float("bassi", -3.)
+
+def ifelse(cond, s1, s2)
+switch(track_sensitive=false, [(cond, s1), ({true}, s2)])
+end
+
+def bandaAM(in) =
+	# facciamo molti stages per rendere il taglio passabanda piu "netto". Se facciamo meno stages ci troviamo
+	# con i 5000Hz ad una intensita' paragonabile, cosa non buona in modulazione.
+    #
+    # sperimentalmente, dando noise() in pasto a questo filtro si ottiene che la 5000 sta a -6dB rispetto alla
+    # banda desiderata
+	ladspa.bandpass_iir(id="passabanda", bandwidth=banda, center_frequency=centrobanda, stages=6, in)
+end
+
+def filtroAM(in) =
+	a = mean(in)  # mono
+    a = ifelse (tagliabanda, bandaAM(a), a)
+# il phaser rimette in fase (la voce, tipicamente) così poi quando la comprimi viene piu' forte
+	a = ifelse(phaser, ladspa.autophaser(a), a)
+# la normalizzazione avviene dopo le operazioni piu' invasive (taglio e phaser) in modo che il volume sia
+# normalizzato su qualcosa di simile  al volume percepito
+    a = ifelse( vlevel, ladspa.vlevel_mono(a), a)
+# caliamo un po' di bassi
+    a = ifelse(eq,
+            ladspa.mbeq(id="eq", _100hz_gain=bassi, _156hz_gain=bassi, _220hz_gain=bassi, a),
+            a)
+	ifelse(comp,
+            compress(id="comprimo", attack=attack, gain=gain, knee=knee, ratio=ratio, release=release,
+                rms_window=rms_window, threshold=threshold, a),
+            a)
+end