Welcome to the Rockbox Technical Forums!

I don't think it is realistic for you to change the EQ without first understanding c syntax. Edit: To answer your question, the square brackets are used to access arrays, so coefs[0] is the first element of the array coefs. The values are set in the _coefs functions just above filter_process. If you want to learn about this, a general reference to c programming is probably a good place to start.

Are my assumptions correct in that:coefs[0] is the filter_shelf_coefs() functioncoefs[1] is filter_bishelf_coefscoefs[2] is filter_pk_coefscoefs[3] is filter_ls_coefscoefs[4] is filter_hs_coefs ?

Quote from: arom on September 16, 2017, 10:36:43 PMAre my assumptions correct in that:coefs[0] is the filter_shelf_coefs() functioncoefs[1] is filter_bishelf_coefscoefs[2] is filter_pk_coefscoefs[3] is filter_ls_coefscoefs[4] is filter_hs_coefs ?Each set of coefficients represents one IIR filter, and each of those functions can calculate a different type of filter (for example, bishelf_coefs calculates the coefficients for a bishelf filter). filter_process is called once for each EQ filter the user enables.

Quote from: saratoga on September 17, 2017, 12:27:45 AMQuote from: arom on September 16, 2017, 10:36:43 PMAre my assumptions correct in that:coefs[0] is the filter_shelf_coefs() functioncoefs[1] is filter_bishelf_coefscoefs[2] is filter_pk_coefscoefs[3] is filter_ls_coefscoefs[4] is filter_hs_coefs ?Each set of coefficients represents one IIR filter, and each of those functions can calculate a different type of filter (for example, bishelf_coefs calculates the coefficients for a bishelf filter). filter_process is called once for each EQ filter the user enables. So, there is an array of 5 elements called coef[] per each EQ filter? 12 EQ bands x 5 = 60 elements?

in void filter_process(struct dsp_filter *f, int32_t * const buf[], int count, unsigned int channels), is "count" the number of enabled EQ filters?

I thought I'd figured out a way to make the EQ apply to only one channel, by changing the "0" in "for (unsigned int c = 0; c < channels; c++)" to 1, assuming the number of channels is 2, it would no longer apply the EQ to the second channel due to c<channels no longer being true. I did that, compiled it and tried it on my Clip+, but it still applies the EQ to both channels; I tried equaling c to several other numbers up to 100, same result. I tried doing the same thing for "for (int i = 0; i < count; i++)" also, same result.

Page created in 0.106 seconds with 59 queries.