Wykres commitów

1054 Commity (master)

Autor SHA1 Wiadomość Data
nyanpasu64 aaa9105801 0.11.1-pre 2025-05-21 21:40:44 -07:00
nyanpasu64 f56b0e9129 0.11.0 2025-05-21 21:38:37 -07:00
nyanpasu64 baf9be3420
Merge pull request #510 from corrscope/fix-float-master-audio
Fix using floating-point WAVs as master audio
2025-05-20 16:28:15 -07:00
nyanpasu64 04d1916133 Detect mono master audio through probing WAV file only
This fixes compatibility with 24-bit integer WAVs.
2025-05-20 16:10:40 -07:00
nyanpasu64 f27ad667f2 Fix using floating-point WAVs as master audio
#488 made corrscope check master audio for mono, then upmix it to stereo
to prevent ffmpeg/video players from playing it at reduced volume. It
used Python's wave module, which unfortunately does not support
floating-point WAV files. This has been reported upstream at
https://github.com/python/cpython/issues/60729, but unfortunately there
appears to be no interest in fixing it.

This commit switches to using my vendored wavfile library. This doesn't
support 24-bit integer samples, but we already reject those for
channels.

If necessary I could introduce a cut-down WAV-probing library that
*only* parses the "fmt " chunk and counts channels.
2025-05-20 04:47:06 -07:00
nyanpasu64 de823e7d59
Merge pull request #509 from corrscope/fix-preview-crash
Fix bug where previewing project files breaks them
2025-05-17 14:06:37 -07:00
nyanpasu64 0129b16955 Don't create a new object when calling __setstate__()
This makes evolve_compat() jankier, but __setstate__() slightly less
janky and avoids constructing a temporary object.
2025-05-17 01:02:13 -07:00
nyanpasu64 3f8d950f69 Fix bug where previewing project files breaks them
My code uses the __setstate__ method to load config objects from YAML
files. This method is also called by pickle.load. I deserialized data
from YAML by passing the map into new_from_state() (creating a temporary
object), then replacing __dict__ with the temporary object's.

In some Python and library configurations (eg. 3.13 on Linux), when the
temporary object is garbage-collected (and __del__() is called if
present), its __dict__ is blanked out. This also blanks out the __dict__
of the config object at a random time, causing random crashes trying to
access fields that should be present.

To fix this crash, replace the other object's __dict__ so blanking it
doesn't affect the returned object.
2025-05-17 01:02:13 -07:00
nyanpasu64 38814dd711
Merge pull request #508 from corrscope/uv2
Switch from Poetry to uv project manager
2025-05-17 00:39:47 -07:00
nyanpasu64 b5a8ef81c7 Replace uv with poetry in README.md 2025-05-16 16:37:47 -07:00
nyanpasu64 4efe971108 Port AppVeyor CI to uv
I'm going to implement GitHub Actions someday...
2025-05-15 21:02:15 -07:00
nyanpasu64 5e5ec72ecc Fix installing Qt 5 on Windows
As it turns out, uv --upgrade does *not* resolve pyqt5-qt5=5.15.2 on
Windows.
2025-05-15 21:00:50 -07:00
nyanpasu64 e291876c4b Update dependencies 2025-05-15 00:52:08 -07:00
nyanpasu64 a2a8219f54 uvx migrate-to-uv 2025-05-15 00:52:08 -07:00
nyanpasu64 4e39934b69
Merge pull request #507 from corrscope/fix-yaml-write
Unify writing config files (atomically) and global preferences (in UTF-8)
2025-05-15 00:52:00 -07:00
nyanpasu64 4fa08c4f25 Save config files atomically
Fixes #506.

In PR #377 (save GlobalPrefs atomically), I created a new codepath by
passing a file into yaml.dump. Unfortunately I forgot to mark it as
UTF-8 (regressing #311). This breaks saving settings after opening a
config in a Unicode folder.

To prevent this from recurring, I restructured the code to always pass a
Path into yaml.dump(), and write the file atomically.
2025-05-15 00:39:23 -07:00
nyanpasu64 6a504c51db Fix saving global settings after opening config in Unicode folder
PR #377 (save GlobalPrefs atomically) regressed PR #311, which saved
settings as UTF-8.
2025-05-15 00:39:23 -07:00
nyanpasu64 40f08d86ba
Fix doubled file extension when saving as .yaml file (#500) 2025-03-15 00:01:33 -07:00
nyanpasu64 8c4e604db7
When opening missing file via CLI, show dialog rather than crashing (#499) 2025-03-13 23:16:57 -07:00
demize a3cff4cd91
Restrict appnope dependency to darwin (#497)
This helps linux distro packagers, as distro
packaging needs to include -all- dependencies.
Restricting appnope to only be required on darwin
means that downstream packagers no longer have to
patch out the dependency and calls to appnope.

This should have no effect on macOS, and should be
basically unnoticeable to anyone who isn't doing
distro packaging.
2025-02-28 19:36:23 -08:00
nyanpasu64 b71bc120ed Improve README and docs 2025-01-01 22:44:47 -08:00
nyanpasu64 6803fa1a11
Remember most recently selected filetype in Render dialog (#493)
* Remember most recently selected filetype in Render dialog

Some users prefer to always render their files as .mkv or another
filetype. This commit changes corrscope's render dialog to remember the
most recently selected filetype, and default to it on next render.

* Don't move render filetype dropdown if user types a different extension

The render dialog has a selected filetype ("filter") dropdown to pick
what format to save to by default. This PR changes the code to remember
the selected filetype between renders.

Previously we changed the selected filetype if the user types an
extension belonging to a different type in the list, even if they didn't
pick an extension in the list. This can be confusing, so I removed the
code responsible (instead only remembering the most recently selected
list item).
2024-12-20 14:41:12 -08:00
nyanpasu64 6243148685
Add "Reload Font List" menu item to fix missing fonts (#492)
Matplotlib stores a cache of installed fonts, and does not reload it
when the user installs a new font and tries to use it. We workaround
this by adding a menu item which clears the font cache
(causing Matplotlib to reload its font list). This is easier than
telling users to find and delete a folder on their system.

Also change Trigger tab accelerator so users can use Alt+T to access
Tools -> Reload Font List.
2024-12-13 13:12:33 -08:00
nyanpasu64 9eca6510a8
Merge pull request #491 from corrscope/split-stereo-bars
Implement split stereo bar colors
2024-12-01 21:22:33 -08:00
nyanpasu64 b0d95658fb Add default stereo right color to GUI 2024-11-27 14:49:40 -08:00
nyanpasu64 c7b9c8a64b Move "Color Lines By Pitch" to the right 2024-11-27 14:49:40 -08:00
nyanpasu64 4509e9b69d Implement split stereo bar colors 2024-11-27 14:49:40 -08:00
nyanpasu64 cecd875278
Fix loss of volume when using a mono track as master audio (#488)
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.
2024-11-25 13:49:07 -08:00
nyanpasu64 310d014b2e
Upgrade dependencies to fix compatibility with outside libraries (#490) 2024-11-24 17:13:58 -08:00
nyanpasu64 4c52cee81c
Encode audio using libopus instead of aac (#487)
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)
2024-11-10 19:46:45 -08:00
nyanpasu64 458442f7c1 Update CLI message 2024-11-08 23:19:03 -08:00
nyanpasu64 0d1d0303ba Update dependencies to avoid yanked Matplotlib 3.9.1 2024-09-22 18:52:50 -07:00
nyanpasu64 0f53885afa 0.11.0-pre 2024-09-22 18:52:39 -07:00
nyanpasu64 c19dad152f Merge remote-tracking branch 'origin/master' 2024-09-22 18:34:54 -07:00
nyanpasu64 017003c97e fix 0.10.1 version 2024-09-14 01:12:58 -07:00
nyanpasu64 769e2ed64f
Fix YouTube channel link 2024-07-21 01:56:51 -07:00
nyanpasu64 b9ad8c3773 0.10.1 2024-07-14 23:01:28 -07:00
nyanpasu64 d89afdf99e
Merge pull request #480 from corrscope/update-python-numpy
Raise minimum Python version to 3.10, fix NumPy 2.0 support
2024-07-13 20:54:59 -07:00
nyanpasu64 6bddb53054 Workaround compatibility issue with NumPy 2.0
This patches a vendored dependency. Eventually we should pull upstream
changes instead.
2024-07-13 15:38:27 -07:00
nyanpasu64 b8283f42de Allow installing with NumPy 2.x
This allows testing for compatibility with the library version now
installed on Arch Linux.
2024-07-13 15:38:27 -07:00
nyanpasu64 cb9ffc10b9 Raise minimum Python version to 3.10
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.
2024-07-13 15:38:27 -07:00
nyanpasu64 892688e6ed 0.10.1-pre 2024-07-08 23:31:11 -07:00
nyanpasu64 e83493d44b 0.10.0 2024-07-08 23:29:55 -07:00
nyanpasu64 6e0c3f9815
Add warning when rendering partial video (#478)
This prevents accidentally rendering part of a video when you expected
to render and encode the full project.
2024-06-22 23:41:19 -07:00
nyanpasu64 05070c006d
Switch default track orientation to horizontal (#477)
This may make the resulting oscilloscope views less confusing (adjacent
tracks are horizontally nearby rather than vertically).
2024-06-17 21:02:25 -07:00
nyanpasu64 9b20d05f4a
Add external triggering support (#476) 2024-06-17 00:26:27 -07:00
nyanpasu64 8dbba65c9c
Merge pull request #475 from corrscope/plot-stereo-bars
Add support for showing stereo balance as bars
2024-06-10 17:07:20 -07:00
nyanpasu64 47be5452f5 Add partial tests for renderer color bars 2024-06-06 00:02:49 -07:00
nyanpasu64 aefe040f90 Add GUI for stereo bars
Currently does not allow toggling them per-channel. (I don't think it's
worth the added horizontal width.)
2024-06-06 00:02:49 -07:00
nyanpasu64 2a4f0f6c49 Implement stereo bars 2024-06-06 00:02:49 -07:00