11: Circular Buffers, C++ Real-Time Audio Programming with Bela

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

Bela Platform

Bela Platform

Күн бұрын

Пікірлер: 13
@arsebiscuitsandwine
@arsebiscuitsandwine 4 жыл бұрын
This entire course has been utterly fantastic, thank you so much for putting something so professional together and making it free. I really love what you and the entire Bela team are doing.
@JamTagg
@JamTagg Жыл бұрын
Excellent background and easy explanations, thank you!
@joaotragtenberg
@joaotragtenberg 4 жыл бұрын
These lectures have been my happy moments of the quarantine.
@llupiy
@llupiy 4 жыл бұрын
This is an awesome complement to the Audio Effects book. I couldn't truly explain how circular buffers were used in Delay Lines as comb filters for pitch shifting until now. Thanks!
@snugglepuff33
@snugglepuff33 4 жыл бұрын
What's the Audio Effects book? Is specifically for use with Bela, or do you mean something like DAFX?
@llupiy
@llupiy 4 жыл бұрын
@@snugglepuff33 the book is called Audio Effects, by Joshua Reiss and Andrew McPherson. It's not bela specific but audio coding and c++.
@snugglepuff33
@snugglepuff33 4 жыл бұрын
@@llupiy Awesome thanks!
@liamgallagher9700
@liamgallagher9700 6 ай бұрын
How do you implement a delay without the popping when you move change the delay depth value?
@oromoiluig
@oromoiluig 6 ай бұрын
you need to smooth the changing of the delay time across several frames or even blocks to minimise the "jumps" . This is a pretty common approach across time-varying audio effects.
@liamgallagher9700
@liamgallagher9700 6 ай бұрын
@@oromoiluig Value ramps are good, I just wish I knew the secrets being used in commercial plugins :p
@MoXyiD
@MoXyiD 3 жыл бұрын
Caution: Spoilers below! I did the exercise to implement the variable delay- but instead of swapping the position of the write/read I added an if statement shown below (added the beginning of render). Is this less efficient? float delayTime = gGuiController.getSliderValue(delayTimeSlider); gReadPointer = (gWritePointer - (int)(delayTime * context->audioSampleRate) + gDelayBuffer.size()) % gDelayBuffer.size(); for(unsigned int n = 0; n < context->audioFrames; n++) { float in = gPlayer.process(); //Read the output from the write pointers oldest sample float out = gDelayBuffer[gReadPointer]; if (delayTime == 0) out = in;
@apm414
@apm414 3 жыл бұрын
That definitely works, though it will be a couple extra instructions per loop. You probably won't notice the difference on Bela, but on some types of processor (e.g. DSPs), branching instructions are relatively expensive compared to maths or memory access. That would matter if you had a lot of processes like that running. You can solve the problem by just having one more element on the delay buffer, and most likely you would never notice that extra memory footprint.
@aprisonerscinemastephenmur6932
@aprisonerscinemastephenmur6932 4 жыл бұрын
I have too create a pingpong delay before tomorrow night, HELP!
12: Envelopes, C++ Real-Time Audio Programming with Bela
53:45
Bela Platform
Рет қаралды 3 М.
1: Real Time, C++ Real-Time Audio Programming with Bela
41:24
Bela Platform
Рет қаралды 15 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,7 МЛН
كم بصير عمركم عام ٢٠٢٥😍 #shorts #hasanandnour
00:27
hasan and nour shorts
Рет қаралды 11 МЛН
Кто круче, как думаешь?
00:44
МЯТНАЯ ФАНТА
Рет қаралды 6 МЛН
Ring Buffer
26:47
octetz
Рет қаралды 11 М.
8: Filters, C++ Real-Time Audio Programming with Bela
31:06
Bela Platform
Рет қаралды 7 М.
JUCE Tutorial 15  - Creating a Circular Buffer
52:20
The Audio Programmer
Рет қаралды 7 М.
you will never ask about pointers again after watching this video
8:03
Simple Circular Buffers (EP 52)
28:45
Doctor RG Plague
Рет қаралды 876
0: Setting Up, C++ Real-Time Audio Programming with Bela
27:18
Bela Platform
Рет қаралды 27 М.
Чистка воды совком от денег
00:32
FD Vasya
Рет қаралды 4,7 МЛН