11:20 am

November 17, 2015

So I understand the following in theory, however I don't understand how this code is actually grabbing or playing the previous sample.

If anybody could explain this to me, it would help so much!

I don't understand how xn_1 equal x(n-1) in theory because xn_1 is just a variable that equals another variable which is m_f_z1_left. How does it grab the previous sample?

float xn = pInputBuffer[0];

// Read Delay samp is x(n-1)

float xn_1 = m_f_z1_left;

// Difference Equation

float yn = m_f_a0_left*xn + m_f_a1_left*xn_1;

//Write Delay with current x(n)

m_f_z1_left = xn;

// Output sample is y(n)

pOutputBuffer[0] = yn*m_fVolume;

6:58 pm

November 5, 2014

Hi Skyler,

The processAudioFrame() function this code is in, gets called (executed) every time a sample is ready to be processed. This is something Will took care for us behind the scenes, so we don’t have to think about that. What you do need to be aware of, is that your plug-in itself is a c++ class in which you can declare member variables like m_f_z1_left that stay ‘alive’ beyond the scope of the processAudioFrame() function. On the other hand you have the local variables xn and yn that are declared in the processAudioFrame() function itself. These will be deleted when the function reaches its end.

So let’s see what happens when we loop through the processAudioFrame() function a few times:

1: In the first run the current sample will be stored in xn at the beginning of the function: float xn = pInputBuffer[0]. At the end of the function this value xn will be stored in the member variable: m_f_z1_left = xn.

2. In the second run the (new) current sample will be stored in xn again: float xn = pInputBuffer[0]. Then, the value that is stored in the member variable m_f_z1_left - which is the xn value of the previous run – will be stored in float xn_1 = m_f_z1_left. This is now your 1 sample delay.

3. and so on…

If you get the difference between local variables (like xn and yn), and member variables (like m_f_z1_left) you should be able to figure it out. Read up on the subjects of ‘scope’ and ‘persistence of data’ if you want to be thorough 😉 Hope this helps!

All the best,

JD

Most Users Ever Online: 36

Currently Online:

5 Guest(s)

Currently Browsing this Page:

1 Guest(s)

Top Posters:

Skyler: 48

Peter: 41

Derek: 41

Frodson: 40

clau_ste: 39

Gwen: 32

EZB: 24

lppier: 23

Msaldaña: 18

JimmyM: 17

Member Stats:

Guest Posters: 1

Members: 495

Moderators: 1

Admins: 4

Forum Stats:

Groups: 11

Forums: 31

Topics: 511

Posts: 1966

Newest Members:

CoraDias, Edoardo, knooierd, daniel, Merril Bradshaw, BillPlunkett, Pajczur, michaelwayneharwood, RickMModerators: W Pirkle: 187

Administrators: Tom: 66, JD Young: 80, Will Pirkle: 0, W Pirkle: 187