Three popular pitch descriptors, all of which compute frequency and the confidence that a pitch is present.
FluidPitch returns both pitch
and confidence
values. When no pitch can be detected, a pitch of 0 Hz is returned (or -999.0 when the unit is in MIDI note mode).
For information about the pitch descriptor algorithms, see the algorithm
parameter below.
The "confidence" output is a value between 0 and 1 indicating how confident the algorithm is in the pitch that it is reporting. In effect this can be an estimation of how "noisy" (closer to 0) or "harmonic" (closer to 1) the spectrum is. The confidence may also be low when a signal contains polyphony, as the algorithms are not intended for multiple pitch streams.
The unit
argument indicates whether the pitch output should be in hertz (indicated by 0) or MIDI note numbers (indicated by 1). MIDI note numbers may be useful, not only because of their direct relationship to MIDI-based synthesis systems, but also because of the logarithmic relationship to hertz, making them perceptually evenly-spaced units (1 MIDI note = 1 semitone).
For more information visit https://learn.flucoma.org/reference/pitch/.
Read more about FluidBufPitch on the learn platform.
Processs the source Buffer on the Server. processBlocking
will execute directly in the server command FIFO, whereas process
will delegate to a separate worker thread. The latter is generally only worthwhile for longer-running jobs where you don't wish to tie up the server.
server |
The Server on which the buffers to be processed are allocated. | ||||||
source |
The buffer to use as the source material to be pitch-tracked. The different channels of multichannel buffers will be processed sequentially. | ||||||
startFrame |
Where in Constraints
| ||||||
numFrames |
How many samples to analyse. The default of -1 indicates to analyse through to the end of the buffer. | ||||||
startChan |
For multichannel Constraints
| ||||||
numChans |
For multichannel | ||||||
features |
The destination buffer for the descriptors. | ||||||
select |
An array of | ||||||
algorithm |
The algorithm to estimate the pitch. The options are:
| ||||||
minFreq |
The minimum fundamental frequency that the algorithm withh search for. This sets the lowest value that will be generated. The default is 20. Constraints
| ||||||
maxFreq |
The maximum fundamental frequency that the algorithm withh search for. This sets the highest value that will be generated. The default is 10000. Constraints
| ||||||
unit |
The unit of the estimated value. The default of 0 is in Hz. A value of 1 will convert to MIDI note values. | ||||||
windowSize |
The window size. As sinusoidal estimation relies on spectral frames, we need to decide what precision we give it spectrally and temporally. For more information visit https://learn.flucoma.org/learn/fourier-transform/ | ||||||
hopSize |
The window hop size. As sinusoidal estimation relies on spectral frames, we need to move the window forward. It can be any size, but low overlap will create audible artefacts. | ||||||
fftSize |
The inner FFT/IFFT size. It should be at least 4 samples long, at least the size of the window, and a power of 2. Making it larger allows an oversampling of the spectral precision. | ||||||
padding |
Controls the zero-padding added to either end of the source buffer or segment. Padding ensures all values are analysed. Possible values are:
| ||||||
freeWhenDone |
Free the server instance when processing complete. Default | ||||||
action |
A function to be evaluated once the offline process has finished and all Buffer's instance variables have been updated on the client side. The function will be passed |
An instance of the processor
Trigger the equivalent behaviour to processBlocking / process
from a Synth. Can be useful for expressing a sequence of buffer and data processing jobs to execute. Note that the work still executes on the server command FIFO (not the audio thread), and it is the caller's responsibility to manage the sequencing, using the done
status of the various UGens.
source |
The buffer to use as the source material to be pitch-tracked. The different channels of multichannel buffers will be processed sequentially. | ||||||
startFrame |
Where in Constraints
| ||||||
numFrames |
How many samples to analyse. The default of -1 indicates to analyse through to the end of the buffer. | ||||||
startChan |
For multichannel Constraints
| ||||||
numChans |
For multichannel | ||||||
features |
The destination buffer for the descriptors. | ||||||
select |
An array of | ||||||
algorithm |
The algorithm to estimate the pitch. The options are:
| ||||||
minFreq |
The minimum fundamental frequency that the algorithm withh search for. This sets the lowest value that will be generated. The default is 20. Constraints
| ||||||
maxFreq |
The maximum fundamental frequency that the algorithm withh search for. This sets the highest value that will be generated. The default is 10000. Constraints
| ||||||
unit |
The unit of the estimated value. The default of 0 is in Hz. A value of 1 will convert to MIDI note values. | ||||||
windowSize |
The window size. As sinusoidal estimation relies on spectral frames, we need to decide what precision we give it spectrally and temporally. For more information visit https://learn.flucoma.org/learn/fourier-transform/ | ||||||
hopSize |
The window hop size. As sinusoidal estimation relies on spectral frames, we need to move the window forward. It can be any size, but low overlap will create audible artefacts. | ||||||
fftSize |
The inner FFT/IFFT size. It should be at least 4 samples long, at least the size of the window, and a power of 2. Making it larger allows an oversampling of the spectral precision. | ||||||
padding |
Controls the zero-padding added to either end of the source buffer or segment. Padding ensures all values are analysed. Possible values are:
| ||||||
trig |
A | ||||||
blocking |
Whether to execute this process directly on the server command FIFO or delegate to a worker thread. See |
Cancels non-blocking processing
When called in the context of a Routine (it won't work otherwise), will block execution until the processor has finished. This can be convinient for writing sequences of processes more linearly than using lots of nested actions.
A stereo buffer example.