Paul Licameli
2017-02-15 17:28:54 UTC
I put a branch in my fork called constant-q.
The "constant Q transform" makes the horizontal bands of the spectrogram
have equal height on the logarithmic scale, rather than on the linear.
Thus each band could correspond to a semitone of the chromatic scale, that
is, whole numbered MIDI tones.
You can turn this on in Spectrogram Settings or Preferences by choosing
"Tones" for the algorithm.
There is a hard coded numer in SpectrogramSettings::GetConstantQSettings
that controls the width of the bands. You can change it and recompile. I
didn't yet do the work to put that choice in the user interface.
So you can choose a fine quarter-tone resolution, or semitone resolution,
or a resolution corresponding to the 31 equalization sliders (exactly 10
per decade, or very close to 3 per octave).
I also haven't yet done the work to tune the bands precisely, so that, say,
440 Hz is exactly at the (geometric) mean frequency of a band.
Another feature of this algorithm, which you can observe if you make a
click as with click track, is that the time resolution is finer at higher
frequencies, as the frequency resolution becomes coarser.
Now I am not yet convinced that this looks interesting and compelling
enough to put into 2.1.4, but I was very interested to learn how to
implement the mathematical method described here...
http://academics.wellesley.edu/Physics/brown/pubs/effalgV92P2698-P2701.pdf
... which is something I may also want to redo in Nyquist Lisp to improve
my DeClicker plug-in so it might work much faster.
PRL
The "constant Q transform" makes the horizontal bands of the spectrogram
have equal height on the logarithmic scale, rather than on the linear.
Thus each band could correspond to a semitone of the chromatic scale, that
is, whole numbered MIDI tones.
You can turn this on in Spectrogram Settings or Preferences by choosing
"Tones" for the algorithm.
There is a hard coded numer in SpectrogramSettings::GetConstantQSettings
that controls the width of the bands. You can change it and recompile. I
didn't yet do the work to put that choice in the user interface.
So you can choose a fine quarter-tone resolution, or semitone resolution,
or a resolution corresponding to the 31 equalization sliders (exactly 10
per decade, or very close to 3 per octave).
I also haven't yet done the work to tune the bands precisely, so that, say,
440 Hz is exactly at the (geometric) mean frequency of a band.
Another feature of this algorithm, which you can observe if you make a
click as with click track, is that the time resolution is finer at higher
frequencies, as the frequency resolution becomes coarser.
Now I am not yet convinced that this looks interesting and compelling
enough to put into 2.1.4, but I was very interested to learn how to
implement the mathematical method described here...
http://academics.wellesley.edu/Physics/brown/pubs/effalgV92P2698-P2701.pdf
... which is something I may also want to redo in Nyquist Lisp to improve
my DeClicker plug-in so it might work much faster.
PRL