mwcm / pitcher

audio pitch-shifting & re-sampling utility, based on the EMU SP-1200
https://soundcloud.com/user-320158268/sets/pitcher-examples
MIT License
28 stars 6 forks source link
music numpy python sampling scipy

Pitcher.py

Screen Shot 2022-11-14 at 8 09 32 PM

Installation

1. Use git to clone this repo, or download it as a ZIP using the "Clone or download" button & unzip
2. Open your terminal of choice
3. cd to the new pitcher directory
4. pip install -r ./requirements.txt

Usage:

python pitcher_cli.py --input-file ./input.wav --st -4 --output-file ./output.wav

You can now also run a simple gui version using the command:

python pitcher_gui.py

The releases page also has binary files for the GUI (.exe and .app).

Options:

--st                        - number of semitones to shift pitch by,                 int,    required
--input-file                - path to input file,                                    string, required
--output-file               - path to output file,                                   string, required
--log-level                 - sets logging threshold,                                string, default 'INFO'
--input-filter              - input anti aliasing low pass filter,                   flag,   default True
--quantize                  - simulate ADC quantize,                                 flag,   default True
--time-stretch              - enable or disable time_shift entirely,                 flag,   default True
--output-filter             - skip all output filtering (default and moog),          flag,   default True
--normalize-output          - normalize output volume to ,                           flag,   default False
--quantize-bits             - bit rate of quantized output,                          int,    default 12
--custom-time-stretch       - custom shift, 1.0 for device default, 0.0 for none,    float,  default 1.0
--output-filter-type        - 'lp1', 'lp2' or 'moog'                                 str,    default 'lp1'
                               lp1 cutoff = 7.5kHz, lp2 cutoff = 10kHz, moog=10kHz
--moog-output-filter-cutoff - set cutoff for moog SSM2044 approximation,             int,    default 10000
--force-mono                - convert input to mono, ouput will also be mono,        flag,   default False

If you find this project useful, please consider donating to the NAACP Legal Defense Fund or BLM CA