On 11/25, Oleg Nesterov wrote:
>
> Thanks for looking at this!
Yes, and this reminds me another discussion on discord ;)
To remind, ma.zc() is wrong in that it can't detect the crossing if the input
is zero in between.
So how about the patch below?
This change is not compatible too, but I guess we can treat it as a bugfix?
I think the new ba.tAndH() makes sense regardless, for example we can do
zc_threshold(t) = ba.tAndH(abs >= t) <: *(mem) < 0;
which reports the "significant" changes from -t to +t or vice versa.
Oleg.
---
diff --git a/basics.lib b/basics.lib
index ed3e9c5..d150872 100644
--- a/basics.lib
+++ b/basics.lib
@@ -1777,8 +1777,22 @@ latch(trig, x) = x * s : + ~ *(1-s) with { s = (trig' <=
0) & (trig > 0); };
//----------------------------------------------------------------
declare sAndH author "Romain Michon";
-sAndH(trig) = select2(trig,_,_) ~ _;
+sAndH(trig) = select2(trig) ~ _;
+//--------------------------`(ba.)tAndH`-------------------------------
+// Test And Hold: "records" the input when pred(input) is true, outputs a
frozen value otherwise.
+//
+// #### Usage
+//
+// ```
+// _ : tAndH(pred) : _
+// ```
+//
+// Where:
+//
+// * `pred`: predicate to test the input
+//----------------------------------------------------------------
+tAndH(pred) = _ <: pred,_ : sAndH;
//--------------------------`(ba.)downSample`-------------------------------
// Down sample a signal. WARNING: this function doesn't change the
diff --git a/maths.lib b/maths.lib
index aa92b11..9f04037 100644
--- a/maths.lib
+++ b/maths.lib
@@ -50,6 +50,7 @@ closed source license or any other license if you decide so.
************************************************************************/
// This library contains platform specific constants
+ba = library("basics.lib");
pl = library("platform.lib");
ma = library("maths.lib"); // for compatible copy/paste out of this file
@@ -794,5 +795,4 @@ nextpow2(x) = ceil(log(x)/log(2.0));
// _ : zc : _
// ```
//-----------------------------------------------------------------------------
-zc(x) = x * x' < 0;
-
+zc = ba.tAndH(!=(0)) <: *(mem) < 0;
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users