Four Ways To Write A Pitch-Shifter - Geraint Luff - ADC22
HTML-код
- Опубликовано: 24 авг 2024
- audio.dev/ -- @audiodevcon
Four Ways To Write A Pitch-Shifter - Geraint Luff - ADC22
We look at some approaches to pitch-shifting music, and the related problem of time-stretching, with intuitive visual explanations, code and audio examples. We start with a simple overlap-add approach, explore the mechanics of FFT-based effects and frequency-domain approaches, and finish with the design used in a new open-source polyphonic pitch/time C++ library.
Slides: link will be updated when available.
_
Geraint Luff
Geraint grew up with a strong interest in music, maths and programming. He now heads up Signalsmith Audio, a small company which provides custom audio/DSP algorithm design and implementation, as well as developing their own line of audio plugins.
_
Streamed & Edited by Digital Medium Ltd - online.digital-medium.co.uk
_
Organized and produced by JUCE: juce.com/
_
Special thanks to the ADC22 Team:
Lina Berzinskas
Sophie Carus
Derek Heimlich
Andrew Kirk
Bobby Lombardi
Tom Poole
Ralph Richbourg
Jim Roper
Jonathan Roper
#audiodevcon #audiodev #audio
Based on the ideas from this talk (the 4th method in particular) after this talk I released Signalsmith Stretch, an open-source C++ pitch/time library, and there's a blog post that looks into that more detail.
Thank you for your presentation. I have a question about 4-ways for pitch-shifting. Is there a required minimum latency ( ex:512 samples or 4096 samples) for each processing?
@@stevekang1804All of the main approaches discussed here process things in blocks, and the latency is determined by block size. As said for the first approach (7:22) these blocks need to be long enough to capture frequency or pitch information, and that requirement carries over to the other methods as well.
Simpler inputs could work with shorter blocks, but I've personally not got most of these to sound great below 50ms of latency. For lower latency, my guess is you might need adaptive block sizes or something similar.
Thank you very much! It seems there's currently no 'real-time' harmonizer or pitch-corrector that supports MTS-ESP or Scala files for alternate tunings- nor one that can accept MPE to have pitches defined via MIDI pitch bends- and so I've set out to make my own. I was worried about the DSP but this helps a lot!
First reverb then pitch shifting, Geraint is teaching us to build shimmer one talk at a time 😳
This lecture is full of useful intuitions, thanks!
This video has been incredibly valuable to me. Thank you so much for the amazing presentation!
fantastic talk! made such a complicated task actually followable for my smooth brain
watching this at 2x speed
while we all know such applications and how to make the algorithm, i was not aware of the official scientific terminology "vase phocoder".
i will write it down and try to keep it in my mind. :P
you laugh, but there are actual scientific words like 'quefrency' and 'cepstrum'
Very thanks and very interesting ! So the phase might be adjusted and i have to watch again the video to understand more how.
But what about detecting only the magnitude and tune of the frequency then create a sin osc that have is own phase ?
(it never adjust phase but only tune and magnitude from the detector)
From his name, he should be doing a talk on loudness maximisation lol
Joking aside, that was a brilliant talk - best I've seen from ADC and a better explanation of different pitch-shifting techniques than I've read anywhere. I only wish there was time to go into more detail. Hopefully Geraint can do a followup talk some time.
Would love to hear about paulstretch, which category it belongs to
it is basically phase vocoding, but uses a gaussian noise type distribution of windows.
I had to cut that for time as well 😅
PaulStretch randomises the phase, disrupting both vertical and horizontal phase changes. Disrupting the vertical ones produces a diffuse sound (dropping time info). Disrupting the horizontal phase changes produces a detuned sound within each sub-band (dropping frequency info).
So it could be viewed as either a phase-vocoder or counterpart (vase-phocoder) approach, with additional randomisation - but I'm not sure the taxonomy is key.
Why is my phase vocoder always making a annoying ringing noise when I try to shift 12 semitones up but sounds good when shifting tunes down? Does it often occur on traditional phase vocoder? Which part should I improve?
12:26
yooooooooomggggggggggggg this is what i was looking forrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr for a yeeeeeeeeeeeeeeeear......................................... funny i was just watching your reverb video and wanted to see if you have some other stuff and how is the codebase(i was looking for an understandable bloatfree dsp libs in c~) and these are perfect!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! thank you Geraint & signalsmith!!!!