Python program to render wave files into oscilloscope views, featuring advanced correlation-based triggering algorithm
Go to file
nyanpasu64 8a23e50dfc Improve FPS computation, avoid zero-division error 2019-05-08 01:07:12 -07:00
.appveyor Clear Appveyor caches 2019-01-11 20:41:02 -08:00
.idea pycharm: Disable noisy warnings for naming convention violations 2019-03-05 05:39:24 -08:00
corrscope Improve FPS computation, avoid zero-division error 2019-05-08 01:07:12 -07:00
docs Rewrite pitch tracking based on buffer, not history 2019-04-13 12:01:52 -07:00
tests Improve GUI dialog path defaults (#277) 2019-04-18 12:20:42 -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 Move scipy-imported files to scipy/ subdir (#153) 2019-01-25 19:27:46 -08:00
CHANGELOG.md Terminate FFmpeg when closing project (#280) 2019-04-25 14:38:00 -07:00
LICENSE Add 2-clause BSD license 2018-10-12 03:56:25 -07:00
README.md Add screenshot to README 2019-03-22 04:13:17 -07:00
appveyor.yml 0.4.0 2019-03-25 23:08:08 -07:00
build_pyinstaller.py Remove DEBUG-level (spammy) Appveyor output 2019-01-29 00:24:43 -08:00
corrscope.spec Don't try to bundle nonexistent .ui files in PyInstaller 2019-03-08 05:24:25 -08:00
poetry.lock Switch to bugfix fork of pyinstaller, fix Appveyor builds (#249) 2019-04-01 02:52:01 -07:00
pyproject.toml 0.6.0-pre 2019-04-17 22:28:16 -07:00
scripts.py Use Mypy checking (#154) 2019-01-25 22:50:19 -08:00
setup.cfg Always run pytest --tb=native (less bloated stack traces) (#198) 2019-02-15 02:02:17 -08:00

README.md

Corrscope

Build status codecov Latest pre-release

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/channel/UCIjb87rjJZxtNsHUdKXMsww/videos.

Screenshot of Corrscope and video preview

Dependencies

  • FFmpeg

Installation

Running from Source Code (cross-platform)

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

# Install Poetry (only do this once)
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
# Install corrscope
cd path/to/corrscope
poetry install --develop corrscope
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