Python program to render wave files into oscilloscope views, featuring advanced correlation-based triggering algorithm
Go to file
nyanpasu64 c62e5d7351 Construct new YAML serializer object on every load/save operation
Not sure if this is a good idea worth keeping.
It may or may not fix a bug I've seen months ago.
In return, it introduces complexity and brittleness into my code,
and could stop working in a future ruamel.yaml update.
Also `pip install` doesn't pin the exact ruamel.yaml version
(accepting higher versions that could break my code),
only `poetry install` pins an exact version.
2021-06-14 17:48:34 -07:00
.appveyor Clear Appveyor caches 2019-01-11 20:41:02 -08:00
.github Add GitHub issue templates (#361) 2020-11-10 20:30:47 -08:00
.idea pycharm: Disable noisy warnings for naming convention violations 2019-03-05 05:39:24 -08:00
corrscope Construct new YAML serializer object on every load/save operation 2021-06-14 17:48:34 -07:00
docs new username uwu 2020-03-20 07:44:07 -07:00
tests Update dependencies, fix unit tests on Python 3.9 2021-06-14 15:12:08 -07:00
.coveragerc Move scipy-imported files to scipy/ subdir (#153) 2019-01-25 19:27:46 -08:00
.gitattributes .gitattributes: Force eol=LF on Windows 2018-11-20 18:05:28 -08:00
.gitignore Use Mypy checking (#154) 2019-01-25 22:50:19 -08:00
.pre-commit-config.yaml Switch to new Black version (21.6b0), reformat project (#374) 2021-06-14 15:09:24 -07:00
CHANGELOG.md Construct new YAML serializer object on every load/save operation 2021-06-14 17:48:34 -07:00
LICENSE new username uwu 2020-03-20 07:44:07 -07:00
README.md Add GitHub issue templates (#361) 2020-11-10 20:30:47 -08:00
appveyor.yml Install black as dev-dependency, run black --check in CI (#305) 2019-08-10 15:10:21 -07:00
build_pyinstaller.py Remove DEBUG-level (spammy) Appveyor output 2019-01-29 00:24:43 -08:00
corrscope.spec Fix bug where matplotlib would crash on unrecognized fonts 2019-09-11 01:30:23 -07:00
poetry.lock Atomically save prefs.yaml to prevent file corruption 2021-06-14 15:45:41 -07:00
pyproject.toml Merge pull request #377 from corrscope/fix-config-crash 2021-06-14 17:42:03 -07:00
scripts.py Switch to new Black version (21.6b0), reformat project (#374) 2021-06-14 15:09:24 -07:00
setup.cfg Improve output tests (#285) 2019-05-08 04:57:17 -07:00

README.md

Corrscope

Appveyor build status Latest release PyPI release codecov

Corrscope renders oscilloscope views of WAV files recorded from chiptune (game music from retro sound chips).

Corrscope uses "waveform correlation" to track complex waves (including SNES and Sega Genesis/FM synthesis) which jump around on other oscilloscope programs.

Sample results can be found on my Youtube channel at https://www.youtube.com/nyanpasu64/videos.

Documentation is available at https://corrscope.github.io/corrscope/.

Screenshot of Corrscope and video preview

Status

Corrscope is currently in maintenance mode until further notice. The program basically works, but I may not respond to issues. For technical support, contact me at Discord (https://discord.gg/CCJZCjc), or alternatively in the issue tracker (using the "Support/feedback" template). Pull requests may be accepted if they're clean.

Dependencies

  • FFmpeg

Installation

Instructions:

  • Download Windows binary releases (zip files), then double-click corrscope.exe or run corrscope (args) via CLI.
  • Download cross-platform Python packages (whl), then install Python 3.6+ and run pip install *.whl.

Installing from PyPI via Pip (cross-platform, releases)

Install Python 3.6 or above (3.5 will not work).

# Installs into per-user Python environment.
pip3 install --user corrscope
corr (args)

Running from Source Code (cross-platform, dev master)

Install Python 3.6 or above (3.5 will not work), and Poetry.

# Installs into an isolated environment.
# Install Poetry (only do this once)
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
cd path/to/corrscope
poetry install corrscope  # --develop is implied
poetry run corr (args)

GUI Tutorial

  1. Open GUI:
    • corrscope.exe to create new project
    • corrscope.exe file.yaml to open existing project
  2. Add audio to play back
    • On the right side of the window, click "Browse" to pick a master audio file.
  3. Add oscilloscope channels
    • On the right side of the window, click "Add" to add WAV files to be viewed.
  4. Edit settings
    • Global settings on the left side of the window
    • Per-channel on the right side
  5. Play or render to MP4/etc. video (requires ffmpeg)
    • Via toolbar or menu

Command-line Tutorial

  1. Create YAML:

    • corrscope split*.wav --audio master.wav -w
    • Specify all channels on the command line.
    • -a or --audio specifies master audio track.
    • Creates file master.yaml.
  2. Edit master.yaml to change settings.

  3. Play (requires ffmpeg):

    • corrscope master.yaml -p/--play
  4. Render and encode MP4 video (requires ffmpeg)

    • corrscope master.yaml -r/--render

Contributing

Issues, feature requests, and pull requests are accepted.

This project uses Black code formatting. Either pull request authors can reformat code before creating a PR, or maintainers can reformat code before merging.

You can install a Git pre-commit hook to apply Black formatting before each commit. Open a terminal/cmd in this repository and run:

pip install --user pre-commit
pre-commit install