Allow alternative processing options¶
Sometimes, two different processors (implemented as two different classes) can
perform the same operation. The choice between such alternative processors is
made depending on a given user-provided (or default) request parameter value.
This is the case for example for the auditory filterbank, which can be performed
by either a Gammatone filterbank (gammatoneProc.m
) or a dual-resonance non-
linear filterbank (drnlProc.m
).
As can be seen when browsing parameterHelper
, the two processors should be
listed under the same request name, and one of the parameters ('fb_type'
in
the example above) should allow to switch between the two (or more)
alternatives. When the manager instantiates the processors and notices that a
given representation has alternative ways of being computed, it will call the
methods isSuitableForRequest
of each alternatives to know which one should
be used.
Therefore, if your processor represents an alternative way of carrying out a
given operation, you should implement its isSuitableForRequest
method, as
well as for its alternative, if it was not already existing.
This method takes as unique input an instance of a processor and will look into
its parameters
property to determine if it is the suitable alternative. It
will return a boolean indicating if it is suitable (true
) or not
(false
). Note that this method is called internally, not from an actual
processor instance that would be used afterwards, but from a dummy, empty
processor generated using the user-provided request and parameters.
See as examples gammatoneProc.isSuitableForRequest
and
drnlProc.isSuitableForRequest
.