Giter VIP home page Giter VIP logo

pvoc-plugins's Introduction

pvoc-plugins

A collection of phase vocoder based LADSPA plugins written in Rust. These are easiest to build and run on Linux. For use on Windows, see the file WINDOWS.md.

Compile with cargo build --release, throw target/release/libpvoc_plugins.so in your LADSPA path, and you're good to go!

The plugins

  • Bins log2: the number of frequency bins used for the phase vocoder. Few will likely be low quality and many will blur the audio through time. Somewhere between 6 and 13 is usually what you want.
  • Time divs: the number of overlapping frames to use. Powers of two between 4 and 32 are good choices.

bin flipper

This linearly inverts the frequency of each bin.

  • Nyquist multiplier: multiplier for the center frequencies of the bins.

centroid

Fixes the frequency of each bin directly to the center.

domain crossover

Modulates frequency of the bins based on their amplitude.

  • Add: Ring modulation factor - intensity of frequency modulation.
  • Shift: Frequency offset.
  • Alpha: Exponential averaging alpha for amplitude estimate.

exponential averaging

Modulates frequency and amplitude of bins based on exponential average of lower pitched bins.

  • Frequency alpha: exponential averaging alpha for frequency
  • Amplitude alpha: exponential averaging alpha for amplitude
  • Frequency mix: Mixer for original/modulated frequency
  • Amplitude mix: Mixer for original/modulated amplitude

formant shifter

  • Shift: Shift factor

frequency shifter

  • Shift: Shift factor

pitch shifter

  • Shift: Shift factor

modular amplitude

Performs floating point modulus on the amplitude of each bin.

  • Mod: Divisor

time blur

Uses exponential averaging to blur amplitude and frequency across time.

  • Frequency alpha: exponential averaging alpha for frequency
  • Amplitude alpha: exponential averaging alpha for amplitude
  • Frequency mix: Mixer for original/modulated frequency
  • Amplitude mix: Mixer for original/modulated amplitude
  • Amplitude high replace: Mixer for replacing blurred amplitude with current amplitude when current amplitude exceeds blurred amplitude.
  • Amplitude low replace: Mixer for replacing blurred amplitude with current amplitude when blurred amplitude exceeds current amplitude.

amplitude scaled delay

Each bin is delayed by an amount relative to it's amplitude. Delay is measured in frames that are bins/time-div/sample-rate seconds long.

  • Delay: amount of time to delay by
  • Max delay: delay buffer size
  • Frequency/amplitude mix: mixer for delayed/original signal
  • Frequency/amplitude feedback: multiplier for previously read events - at 1, samples will remain in the buffer until they are overwritten, possibly looping after the max delay.

gate

Filter out loud/quiet sounds

  • Gate: don't let sounds through that are quieter than this threshold
  • Duck: don't let sounds through that are louder than this threshold

slope filter

Filter out sounds that are changing in frequency or amplitude

  • Freq/Amp min/max: thresholds for filter to activate

repeater

Capture a sound then repeat it indefinitely

  • Length: The length of the section to repeat, in frames
  • Hold: Mixer for input signal/signal from loop buffer
  • Decay: Multiplier for buffer amplitude
  • Mix: Amplitude dry/wet.

scrambler

Reorder frames by indexing into a circular buffer by some specified increment.

  • Length: Circular buffer length
  • Increment: Circular buffer index increment

Contributing

Contributions (new plugins, fixes, etc) are welcome! To make sure everything goes smoothly, please ensure your code is formatted with rustfmt, produces no warnings and follows existing conventions to the extent possible.

pvoc-plugins's People

Contributors

nwoeanhinnogaehr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pvoc-plugins's Issues

[pitchshifter] It seems that the "true" low frequencies will be lost if a target bin receives contributions from multiple source bins

In line 42 the frequency is overwritten, while in line 43 the amplitude is added. If I understand this code correctly, this means that if multiple source bins are written to the same target bin, due to the pitch being lowered, then only the highest "true" frequency is written.

I am aware that the original source code in the article does this as well, but this feels wrong to me. I believe it is probably better to do some form of averaging, for example a weighted average of the incoming frequencies using their corresponding amplitudes. This will consume more processing power, but it should be possible to do something not too heavy, for example using an arena allocator with a capacity equal to the number of processed bins.

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.