By default, when converting or playing mono audio tracks as stereo,
ffmpeg halves the power of the left/right audio channels. This is
undesirable since it makes mono tracks quieter than intended.
This commit makes corrscope detect mono master audio, and tell ffmpeg to
play audio at full volume in both channels. We cannot enable this for
stereo master audio, since it will discard the right input channel.
opus in mp4 is supported by modern versions of ffmpeg, as well as
YouTube upload. libopus is known to have good audio quality, while
FFmpeg's built-in AAC encoder is slow and low-quality (especially on
older ffmpeg versions)
Poetry sets the pinned NumPy version based on the minimum allowed Python
version. Previously we set the minimum Python version to 3.8 (the last
version with Windows 7 binaries), so Poetry pinned NumPy to the last
version to support 3.8, which lacks wheels for modern Python. As a
result you could not install corrscope on modern Python through Poetry.
This commit sets the minimum Python version to 3.10. This breaks Windows
7 support (unless you use a custom newer Python build or override the
minimum Python version), but fixes corrscope Poetry installation on
newer Python versions. (corrscope wheel installation does not pin the
numpy version, so is exempt.) This also enables testing corrscope on
NumPy 2.0, which has incompatible changes.
When buffer_strength = 0 and no rising edges were in range (based on the
estimated period), corrscope would erroneously return the leftmost
point in its view (based on the estimated period). This would often
result in triggering in the *middle* of a positive segment.
Instead return the center point. In NES oscilloscopes, this returns a
value past the falling edge and in a near-silent region (which is more
visually appealing).
* Update installation guides for FreeBSD
* Clarify pip installation guide
* Finalize the PR
* oops forgot to add a comma
* Atomicwrites now compiles just fine via pip on FreeBSD.
This is necessary because fixing the correlation bug makes history
comparisons weaker relative to the slope finder. This would result in
waveforms with multiple edges per cycle jumping between rising edges
mid-note even at reasonable settings (edge strength = buffer strength).
This would hurt triggering accuracy of long evolving notes by comparing
the latest wave to stale buffers.
Bug was discovered by Tachometer in the Discord server.
Raise minimum matplotlib version to 3.5 (still supported on Python 3.8
on Windows 7).
This fixes support with future Matplotlib 3.9, which removes
matplotlib.cm.get_cmap(). Newer versions of dependencies may be chosen
when installing corrscope using pip/pipx and wheels, rather than Poetry
or official binaries (which always use locked dependencies).