A Collection of Useful C++ Classes for Signal Processing

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Well I'm not. I guess I can instrument the program to print a log.

In the mean time, I'm on windows 7 64 bit, 32 bit program, using visual studio 2008 but with the intel compiler (my programs requires the intel compiler as I'm using threaded building blocks and intel performance primitives for fft).

Code: Select all

Intel® C++ Composer XE 2011 Update 10   Package ID: w_ccompxe_2011.10.325
Intel® C++ Composer XE 2011 Update 10 Integration for Microsoft Visual Studio* 2008, Version 12.1.1111.2008, Copyright© 2002-2012 Intel Corporation
Could that, or optimization settings make a difference? I can compile the demo with the intel compiler (I haven't yet).

I'm also working with 1 channel of audio (vs. 2). Are we sure the filter works correctly with 1 channel?

Any other debug suggestions?

Post

The demo seems to run fine with the intel compiler...

Post

Have you tried NOT filtering the data - to make sure that its the filter causing the discontinuity?

Post

Yes,

I can comment out only the call to process and see the unmodified waveform at the same sample count.

Here is a 20Hz sine wave with an 80Hz lowpass filter. The bottom waveform is the channel that is filtered:

Image

Commenting out only "lp.process" we get this:

Image

You can see that the output wave form is now not phase shifted (no filter) and does not have a glitch at the boundary between buffers.

"lp" is instantiated in a .h file so it has global scope. the parameters are passed once, just after opening the input file, when I have the sample rate of the file.

lp.process is called in one of the functions that processes the output data, per buffer.

The helpful person who linked code that helped me has an update if "dirty" in lp.process, however I doubled checked to make sure that isn't the problem by commenting it out (dirty is set false when passing the parameters to the filter in any case).

Post

If you could fork DSPFiltersDemo and modify it to reproduce the behavior you are seeing, then we could figure out what the cause is.

Post

So for those that read this later, Switching from the SimpleFilter API to this:

Dsp::Filter* lp = new Dsp::SmoothedFilterDesign <Dsp::Butterworth::Design::LowPass <16>, 1, Dsp::DirectFormII> (1024);

made the problem go away.

Feature request; It would be nice to have a group delay only function, for time aligning audio that went through one or more filters with audio that didn't.

Or, an optional feature where the filter writes passed the "end" of the buffer with any audio that propagates from the input (hope that's clear). That would make it simple to line it back up time wise.

Or, maybe better yet, arrange is to there was no group delay. 1st sample in the buffer (after filtering) is time aligned with the first sample in the buffer (before filtering).

I tried using the allpass filter, to delay other audio by the same amount as my two Butterworth filters, but I couldn't get things to line up.

Post

AUTO-ADMIN: Non-MP3, WAV, OGG, SoundCloud, YouTube, Vimeo, Twitter and Facebook links in this post have been protected automatically. Once the member reaches 5 posts the links will function as normal.
Hey

I'm having the same linking errors like dts350z

Code: Select all (#)

1>ContinuousAcquireDlg.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall Dsp::Butterworth::BandPassBase::setup(int,double,double,double)" (?setup@BandPassBase@Butterworth@Dsp@@QAEXHNNN@Z)" in Funktion ""public: void __thiscall CContinuousAcquireDlg::ButterworthBandpassfilter(void)" (?ButterworthBandpassfilter@CContinuousAcquireDlg@@QAEXXZ)".

(its in German but you should get it)

How did you fixed that?

Post

gamma_squadron wrote:Hey

I'm having the same linking errors like dts350z

Code: Select all

1>ContinuousAcquireDlg.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall Dsp::Butterworth::BandPassBase::setup(int,double,double,double)" (?setup@BandPassBase@Butterworth@Dsp@@QAEXHNNN@Z)" in Funktion ""public: void __thiscall CContinuousAcquireDlg::ButterworthBandpassfilter(void)" (?ButterworthBandpassfilter@CContinuousAcquireDlg@@QAEXXZ)".

(its in German but you should get it)

How did you fixed that?
i think, this translates to:

Code: Select all

1>ContinuousAcquireDlg.obj : error LNK2019: unresolved external symbol ""public: void __thiscall Dsp::Butterworth::BandPassBase::setup(int,double,double,double)" (?setup@BandPassBase@Butterworth@Dsp@@QAEXHNNN@Z)" in function ""public: void __thiscall CContinuousAcquireDlg::ButterworthBandpassfilter(void)" (?ButterworthBandpassfilter@CContinuousAcquireDlg@@QAEXXZ)".

btw.: finding help on the web is the primary reason why i don't install the german versions anymore. ...and sometimes the translations are just plain wrong (i remember adobe audtion to translate "order" as "Reihenfolge" when "Ordnung" would have been appropriate (it was in the context of filters) - which quite confused me until i realized that this must be a translation error)
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

AUTO-ADMIN: Non-MP3, WAV, OGG, SoundCloud, YouTube, Vimeo, Twitter and Facebook links in this post have been protected automatically. Once the member reaches 5 posts the links will function as normal.

Code: Select all (#)

1>ContinuousAcquireDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall Dsp::Butterworth::BandPassBase::setup(int,double,double,double)" (?setup@BandPassBase@Butterworth@Dsp@@QAEXHNNN@Z)
1>ContinuousAcquireDlg.obj : error LNK2001: unresolved external symbol "protected: void __thiscall Dsp::Cascade::setCascadeStorage(struct Dsp::Cascade::Storage const &)" (?setCascadeStorage@Cascade@Dsp@@IAEXABUStorage@12@@Z)
1>ContinuousAcquireDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall Dsp::Butterworth::AnalogLowPass::AnalogLowPass(void)" (??0AnalogLowPass@Butterworth@Dsp@@QAE@XZ)
1>ContinuousAcquireDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall Dsp::Biquad::Biquad(void)" (??0Biquad@Dsp@@QAE@XZ)
1>ContinuousAcquireDlg.obj : error LNK2001: unresolved external symbol "protected: __thiscall Dsp::Cascade::Cascade(void)" (??0Cascade@Dsp@@IAE@XZ)
better ;)?

Post

interesting: the error-codes seem to be different between english and german version, too (LNK2019 vs LNK2001). i would have guessed that they are the same and could have been used to obtain the translation. not so.

generally, this error means that some object- or library-file is missing (sorry, if i'm belaboring the obvious here - can't say anything more specific right now)
My website: rs-met.com, My presences on: YouTube, GitHub, Facebook

Post

actually i had both errors if its german or english it doesnt rly care

i let it run on a another system so we have the correct translation

nobody knows how to fix the link error? i downloaded the newst version maybe there are some bugs in it?

EDIT: problem solved include (dspfilter.cpp) source file and stop use precompiled header at the source file :)

Post

Hi, could anybody explain how they got past those pesky LNK2005 errors in Visual Studio 10? A previous post solved it by: "included the source file in the project". Can somebody explain this to me in a more noobish way?

It seems to be a problem with including the DSPfilters.lib library and some symbols that are defined there and in some other standard libraries.

Post

Did you try building the DSPFilters Demo? Does it compile for you?

https://github.com/vinniefalco/DSPFiltersDemo

Thanks

Post

AUTO-ADMIN: Non-MP3, WAV, OGG, SoundCloud, YouTube, Vimeo, Twitter and Facebook links in this post have been protected automatically. Once the member reaches 5 posts the links will function as normal.
Yes, but only after I put both the DSPFilters.lib and JuceAmalgam.lib in the same directory as the .exe

Do I need the JuceAmalgam library when using the DSPFilters, or is that just for building the GUI for the demo?

Also, the compiling errors that I'm getting are of this type:

Code: Select all (#)

error LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in DSPfilters.lib(Param.obj)
File: msvcprtd.lib

Post

It sounds like you aren't using the latest sources. DSPFilters Demo no longer uses separate static libraries (DSPFilters.lib and JuceAmalgam.lib).

Post Reply

Return to “DSP and Plugin Development”