Giter Club home page Giter Club logo

ba21_loma_2_py's Introduction

ba21_loma_2_py

A python project to test and evaluate different dsp algorithms

Run

Execute the script src/main/start.py to generate pitch shifted audio. The output will be located on res/out/[song-name]_[shift]/. For each signal, the original, a reference and the results of the various pitch shift algorithm processors are stored there.

To change the number of half tones to shift, adjust the variable track_info.half_tone_steps_to_shift. To change the algorithms used, add or remove from the configs dict at the top of src/main/start.py

Add new Test Files

Add the test file to the folder res/test-data/ In main/start.py call the method pitch_shift_wav with the name of the test file

Reference

For comparison, each processed file is shifted using the rubberband audio library integrated with the pyrubberband wrapper and made available as reference track. Make sure to make the rubberband-cli available as env variable as described here bmcfee/pyrubberband#18 (comment)

Algorithms

Name Description Status Performance Quality Source
Phase Vocoder Simple phase vocoder limited to horizontal phase propagation Complete Fast acceptable for melodic, unusable for percussion Based on DAFX Chapter 7.4.4 Block by block approach http://dafx.de/DAFX_Book_Page/index.html
Phase Locked Identity Vocoder Advanced phase vocoder peak detection and horizontal / static vertical phase propagation Complete Med Good results for percussion, has issue with broad harmonic envelopes Based on Improved Phase Vocoder Time-Scale Modification of Audio Chapter III.C.2 Scaled Phase Locking https://ieeexplore.ieee.org/document/759041
Phase Locked Scaled Vocoder Advanced phase vocoder peak detection and horizontal / static vertical phase propagation Complete Med Good results for percussion, has issue with broad harmonic envelopes Based on Improved Phase Vocoder Time-Scale Modification of Audio Chapter III.C.2 Scaled Phase Locking https://ieeexplore.ieee.org/document/759041l
Phase Laminar Vocoder Advanced phase vocoder with horizontal and adaptive vertical phase propagation Complete Slow (non-real-time) Acceptable overall results, but lacks clairity Based on Rubberband Source Code StretcherProcess.cpp Method: ModifyChunk https://breakfastquay.com/rubberband/
Phase Locked Dynamic Vocoder Advanced phase vocoder peak detection and horizontal / dynamic vertical phase propagation Complete Slow Best overall results (except percussion). Only works for real-time with tolerance > 10**-4 Based on Phase Vocoder Done Right pseudo code https://www.researchgate.net/publication/319503719_Phase_Vocoder_Done_Right

Transient Detection

Percussive

Performs phase resets at percussive transients

High Frequency

Performs phase resets at high frequency transients

Compound

Mixes the above two detection methods. Provides the best over all results

Phase Reset

Full Range

Executes phase resets over the entire frequency range

Band Limited

Executes phase resets in the low and high frequency band, leaving the normal phase propagation for the mid frequency band. Provides the best over all results

ba21_loma_2_py's People

Contributors

blackspireaudio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.