diff --git a/vop/cmVectOpsTemplateCode.h b/vop/cmVectOpsTemplateCode.h
index a0a1a5c..13dcec7 100644
--- a/vop/cmVectOpsTemplateCode.h
+++ b/vop/cmVectOpsTemplateCode.h
@@ -310,6 +310,29 @@ unsigned  VECT_OP_FUNC(NormToMax)(    VECT_OP_TYPE* dp, unsigned dn )
   return i;
 }
 
+unsigned VECT_OP_FUNC(NormToAbsMax)(   VECT_OP_TYPE* dp, unsigned dn, VECT_OP_TYPE fact )
+{
+  if( dn == 0 )
+    return cmInvalidIdx;
+
+  unsigned     i  = 0;
+  unsigned     mi = 0;
+  VECT_OP_TYPE mx = fabs(dp[0]);
+
+  for(i=1; i<dn; ++i)
+    if( fabs(dp[i])>mx )
+    {
+      mi = i;
+      mx = fabs(dp[i]);
+    }
+
+  VECT_OP_FUNC(MultVS)(dp,dn,fact/mx);
+  
+  return mi;
+  
+}
+
+
 VECT_OP_TYPE  VECT_OP_FUNC(AlphaNorm)(const VECT_OP_TYPE* sp, unsigned sn, VECT_OP_TYPE alpha )
 {
   double sum = 0;
@@ -1903,6 +1926,15 @@ VECT_OP_TYPE VECT_OP_FUNC(SynthPinkNoise)( VECT_OP_TYPE* dbp, unsigned n, VECT_O
   return *sp;
 }
 
+VECT_OP_TYPE*  VECT_OP_FUNC(LinSpace)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE base, VECT_OP_TYPE limit )
+{
+  unsigned i = 0;
+  for(; i<dn; ++i)
+    dbp[i] = base + i*(limit-base)/(dn-1);
+  return dbp;
+}
+
+
 VECT_OP_TYPE* VECT_OP_FUNC(LinearToDb)( VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult )
 {
   const VECT_OP_TYPE* dep = dbp + dn;
diff --git a/vop/cmVectOpsTemplateHdr.h b/vop/cmVectOpsTemplateHdr.h
index 885211e..a3568a4 100644
--- a/vop/cmVectOpsTemplateHdr.h
+++ b/vop/cmVectOpsTemplateHdr.h
@@ -55,6 +55,9 @@ VECT_OP_TYPE*  VECT_OP_FUNC(VarianceM)(VECT_OP_TYPE* dp,  const VECT_OP_TYPE* sp
 // dp[] ./= max(dp). Returns the index of the max value.
 unsigned  VECT_OP_FUNC(NormToMax)(    VECT_OP_TYPE* dp, unsigned dn );
 
+// db[] .*= fact / abs(max(dp));
+unsigned VECT_OP_FUNC(NormToAbsMax)(   VECT_OP_TYPE* dp, unsigned dn, VECT_OP_TYPE fact );
+
 
 VECT_OP_TYPE  VECT_OP_FUNC(AlphaNorm)(const VECT_OP_TYPE* sp, unsigned sn, VECT_OP_TYPE alpha );
 
@@ -383,6 +386,9 @@ unsigned      VECT_OP_FUNC(SynthPhasor)(    VECT_OP_TYPE* dbp, unsigned dn, unsi
 /// Return value should be passed back via delaySmp on the next call.
 VECT_OP_TYPE  VECT_OP_FUNC(SynthPinkNoise)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE delaySmp );
 
+/// Same as Matlab linspace() v[i] = i * (limit-1)/n
+VECT_OP_TYPE*  VECT_OP_FUNC(LinSpace)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE base, VECT_OP_TYPE limit );
+
 VECT_OP_TYPE* VECT_OP_FUNC(LinearToDb)(    VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult );
 VECT_OP_TYPE* VECT_OP_FUNC(dBToLinear)(    VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult );
 VECT_OP_TYPE* VECT_OP_FUNC(AmplitudeToDb)( VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp );