18: Phase Vocoder (part 1), C++ Real-Time Audio Programming with Bela

  Рет қаралды 8,187

Bela Platform

Bela Platform

Күн бұрын

Lecture 18 of C++ Real-Time Audio Programming with Bela. This is the first of a three-part series on the phase vocoder, a powerful tool for manipulating audio in the frequency domain. This lecture covers the overlap-add technique of block-based processing.
In this lecture:
Section 1: Block-based processing 0:00
Section 2: Input and output 6:28
Section 3: Overlap-add 12:23
Section 4: Multi-threaded implementation 31:11
Example code and companion materials:
github.com/BelaPlatform/bela-...
This course is a deep dive into how Bela processes data, and how to implement real-time audio and interaction. If you want to learn or improve your skills with C++ and audio programming, this is a great way to start!
Bela is the open-source platform for creating beautiful interaction. If you’d like to get a Bela system to follow along with these lectures, visit shop.bela.io. Use promo code CREATEATHOME for £10 off Bela and Bela Mini Starter Kits.
Music by Vula Viel (vulaviel.com).

Пікірлер: 13
@michelthegreatable
@michelthegreatable 3 жыл бұрын
I've been looking for a good explanation of phase vocoder for months, thank you so much!
@stevebaines57
@stevebaines57 3 жыл бұрын
Excellent as always. I think it is worth being clear that the additional latency we add to gOutputBufferWritePointer doesn't need to be an entire hop, as was stated in the video. We need to add enough latency for the FFT thread to be able to finish its task, and that isn't related to the hop value. With the current code, 16 samples seems to be plenty, giving 'int gOutputBufferWritePointer = gHopSize + 16;' This knocks 5.5ms off the latency.
@apm414
@apm414 3 жыл бұрын
Good idea! Adding one hop size is the minimum to ensure that you can use all the available CPU, but you're right that if your code reliability and consistently uses less than that, you could trim down the latency. Probably never lower than one audio block size, however, since the background thread won't even start running until render() has finished.
@applepie182
@applepie182 Жыл бұрын
great tutorial! Any hints on what to modify in the reading / overlap-add operation for the case of the time stretching algorithm? I got the part with the phase calculation down, however, the way to read and delete samples from the outputBuffer I think needs to change when the analysisHopSize is different than the syntehsisHopSize... Any ideas ??
@nathanruiz3424
@nathanruiz3424 3 жыл бұрын
Please make part 2! I need your help!
@apm414
@apm414 3 жыл бұрын
Part 2 is now up: kzbin.info/www/bejne/aHbWl59uqtxgaLc
@Mc-vd4bw
@Mc-vd4bw 2 жыл бұрын
Maybe someone has a simple vocoder written in juce?
@jacobpenn2266
@jacobpenn2266 3 жыл бұрын
where part 2 at : )
@apm414
@apm414 3 жыл бұрын
Coming soon -- most likely next week!
@yf668
@yf668 3 жыл бұрын
@@apm414 This tutorial is so good! Will part 2 come out this month?
@apm414
@apm414 3 жыл бұрын
@@yf668 Thanks! Part 2 is coming tomorrow. There will be a part 3 too. :)
@apm414
@apm414 3 жыл бұрын
Here's part 2: kzbin.info/www/bejne/aHbWl59uqtxgaLc
@michaelliuzzi
@michaelliuzzi 2 жыл бұрын
I don't see why the latency is the fftsize. Should the latency not be fftsize-hopsize? For instance, in our example, we have 256 samples available. Our fftsize is 1024. That means we will have a 768 samples of zero, followed by 256 samples of whatever gplayer.process() returns.
19: Phase Vocoder (part 2), C++ Real-Time Audio Programming with Bela
47:28
1: Real Time, C++ Real-Time Audio Programming with Bela
41:24
Bela Platform
Рет қаралды 15 М.
What it feels like cleaning up after a toddler.
00:40
Daniel LaBelle
Рет қаралды 68 МЛН
마시멜로우로 체감되는 요즘 물가
00:20
진영민yeongmin
Рет қаралды 31 МЛН
路飞被小孩吓到了#海贼王#路飞
00:41
路飞与唐舞桐
Рет қаралды 78 МЛН
Scary Teacher 3D Nick Troll Squid Game in Brush Teeth White or Black Challenge #shorts
00:47
Ivan Cohen - Fifty shades of distortion (ADC'17)
52:40
ADC - Audio Developer Conference
Рет қаралды 16 М.
15: MIDI part 1, C++ Real-Time Audio Programming with Bela
50:53
Bela Platform
Рет қаралды 6 М.
Lessons Learned from a Decade of Audio Programming
26:14
Four Ways To Write A Pitch-Shifter - Geraint Luff - ADC22
43:32
ADC - Audio Developer Conference
Рет қаралды 10 М.
Making a Pitch Shifter
16:13
JentGent
Рет қаралды 69 М.
3: Wavetables, C++ Real-Time Audio Programming with Bela
36:40
Bela Platform
Рет қаралды 7 М.
Rust and RAII Memory Management - Computerphile
24:22
Computerphile
Рет қаралды 220 М.
FIR Filter Design and Software Implementation - Phil's Lab #17
30:35
Samsung Galaxy 🔥 #shorts  #trending #youtubeshorts  #shortvideo ujjawal4u
0:10
Ujjawal4u. 120k Views . 4 hours ago
Рет қаралды 8 МЛН
САМЫЙ ДОРОГОЙ ЧЕХОЛ! В стиле Mac Pro
0:35
Romancev768
Рет қаралды 146 М.
Телефон-електрошокер
0:43
RICARDO 2.0
Рет қаралды 1,3 МЛН