final case class Pitch(rate: Rate, in: GE, initFreq: GE = 440.0f, minFreq: GE = 60.0f, maxFreq: GE = 4000.0f, execFreq: GE = 100.0f, binsPerOct: GE = 16, median: GE = 1, ampThresh: GE = 0.01f, peakThresh: GE = 0.5f, downSample: GE = 1, clarity: GE = 0) extends MultiOut with Product with Serializable
An autocorrelation based pitch following UGen. It is more accurate than
ZeroCrossing
, but more also more CPU costly. For most purposes the default
settings can be used and only in
needs to be supplied.
The UGen has two outputs: The first output is the frequency estimate in Hertz,
the second output is a toggle hasFreq
, which tells whether a pitch was found
(1) or not (0). If the clarify
argument is used, hasFreq
has more fine
grained information.
The pitch follower executes periodically at the rate specified by execFreq
in
cps. First it detects whether the input peak to peak amplitude is above the
ampThresh
. If it is not then no pitch estimation is performed, the hasFreq
output is set to zero and the freq
output is held at its previous value.
Otherwise, the autocorrelation is calculated, and the first peak after the peak
around the lag of zero that is above peakThresh
times the amplitude of the
peak at lag zero is reported.
- in
The signal to be analyzed.
- initFreq
The initial value of the
freq
output, until the first valid pitch is found. (init-time only)- minFreq
The minimum frequency in Hertz to be considered for reporting. (init-time only)
- maxFreq
The maximum frequency in Hertz to be considered for reporting. (init-time only)
- execFreq
The frequency at which the pitch is estimated. This will be automatically clipped to be between
minFreq
andmaxFreq
. (init-time only)- binsPerOct
A value which guides the search for the peak frequency in the first coarse step. Its setting does *not* affect the final pitch resolution; setting it larger will cause the coarse search to take longer, and setting it smaller will cause the fine search to take longer. (init-time only)
- median
This specifies the length of a median filter applied to the frequency output estimation. With the default value of
1
the filter is defeated. Median filtering can help eliminating single spikes and jitter. This will however add latency to the output. (init-time only)- ampThresh
The minimum amplitude threshold above which the pitch follower operates. An input signal below this threshold is not analyzed. (init-time only)
- peakThresh
This is a threshold used to find the first peak in the autocorrelation signal which gives the reported frequency. It is a factor of the energy of the signal (autocorrelation coefficient at zero). Set this value higher (e.g. to
1
) to eliminate false frequencies corresponding to overtones. (init-time only)- downSample
An integer factor by which the input signal is down sampled to reduce CPU overhead. This will also reduce the pitch resolution. The default value of
1
means that the input signal is not down sampled. (init-time only)- clarity
If the
clarity
argument is greater than zero (it is zero by default) then thehasFreq
output is given additional detail. Rather than simply being 1 when a pitch is detected, it is a "clarity" measure in the range between zero and one. (Technically, it's the height of the autocorrelation peak normalised by the height of the zero-lag peak.) It therefore gives a kind of measure of "purity" of the pitched signal. (init-time only)
- Alphabetic
- By Inheritance
- Pitch
- Serializable
- MultiOut
- SomeOut
- Lazy
- GE
- UGenSource
- Expander
- Lazy
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Pitch(rate: Rate, in: GE, initFreq: GE = 440.0f, minFreq: GE = 60.0f, maxFreq: GE = 4000.0f, execFreq: GE = 100.0f, binsPerOct: GE = 16, median: GE = 1, ampThresh: GE = 0.01f, peakThresh: GE = 0.5f, downSample: GE = 1, clarity: GE = 0)
- in
The signal to be analyzed.
- initFreq
The initial value of the
freq
output, until the first valid pitch is found. (init-time only)- minFreq
The minimum frequency in Hertz to be considered for reporting. (init-time only)
- maxFreq
The maximum frequency in Hertz to be considered for reporting. (init-time only)
- execFreq
The frequency at which the pitch is estimated. This will be automatically clipped to be between
minFreq
andmaxFreq
. (init-time only)- binsPerOct
A value which guides the search for the peak frequency in the first coarse step. Its setting does *not* affect the final pitch resolution; setting it larger will cause the coarse search to take longer, and setting it smaller will cause the fine search to take longer. (init-time only)
- median
This specifies the length of a median filter applied to the frequency output estimation. With the default value of
1
the filter is defeated. Median filtering can help eliminating single spikes and jitter. This will however add latency to the output. (init-time only)- ampThresh
The minimum amplitude threshold above which the pitch follower operates. An input signal below this threshold is not analyzed. (init-time only)
- peakThresh
This is a threshold used to find the first peak in the autocorrelation signal which gives the reported frequency. It is a factor of the energy of the signal (autocorrelation coefficient at zero). Set this value higher (e.g. to
1
) to eliminate false frequencies corresponding to overtones. (init-time only)- downSample
An integer factor by which the input signal is down sampled to reduce CPU overhead. This will also reduce the pitch resolution. The default value of
1
means that the input signal is not down sampled. (init-time only)- clarity
If the
clarity
argument is greater than zero (it is zero by default) then thehasFreq
output is given additional detail. Rather than simply being 1 when a pitch is detected, it is a "clarity" measure in the range between zero and one. (Technically, it's the height of the autocorrelation peak normalised by the height of the zero-lag peak.) It therefore gives a kind of measure of "purity" of the pitched signal. (init-time only)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val ampThresh: GE
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- val binsPerOct: GE
- val clarity: GE
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- val downSample: GE
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- val execFreq: GE
- def freq: GE
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hasFreq: GE
- lazy val hashCode: Int
- Definition Classes
- UGenSource → AnyRef → Any
- val in: GE
- val initFreq: GE
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def makeUGen(_args: Vec[UGenIn]): UGenInLike
- Attributes
- protected
- Definition Classes
- Pitch → UGenSource
- def makeUGens: UGenInLike
Abstract method which must be implemented by creating the actual
UGen
s during expansion. - val maxFreq: GE
- val median: GE
- val minFreq: GE
- final def name: String
- Definition Classes
- UGenSource
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- val peakThresh: GE
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- val rate: Rate
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated