How to model analog effects and create convolvers.!!

Started by michealgimies 5 years ago5 replieslatest reply 5 years ago619 views

Hi everyone. I hope I'm posting in the right forum. I'm currently doing a course on DSP in my uni and am interested in modelling analog effects and creating convolvers for guitars and other instruments (think cab sims) but my course ends with realization of digital filters (iir) and removal of artefacts and interference. I've worked with a dsp like twice and that was to generate a sine wave and realize design an fir filter as part of my lab. What else should I learn? I have decent experience with C and C++ and Matlab. Thanks!

[ - ]
Reply by drmikeApril 20, 2019

Once you understand the difference in the digital domain between an iir and fir you can pretty much do any kind of analog model you want.  Filters are subtractive synthesis, sine waves are additive synthesis.  There is also FM and then filter which some keyboards do.  Learn the guts of the processor and the theory behind signal processing so you can make the DSP do what ever you want.  The more you get stuck, the more questions you ask, the more you will learn and the more you can accomplish in the long run.  I bet you will have a lot of fun in that class and outside of it as well.  Good luck!

[ - ]
Reply by BEBSynthesizersApril 20, 2019


the question is mainly : what kind of effect do you want to implement? There are hundreds if not thousands of analog effects, with totally different algorithms to be used.

Simply said, if you only know what is a FIR and how to generate a sine, it's like you say "I want to build a car but I only have a hammer and a screwdriver".

Once you have selected an effect to emulate, the first thing is to understand how this effect works in analog world (is it based on a delay line, filter, etc...). Then you will need to see how the same processing is done in digital world (use of biquad, modulated delay line, etc...)

C and C++ will come much later, they are only tools to implement an algorithm. Knowing a programming language is not the key to audio processing, it's the understanding of how the algorithms works to perform an effect which is important. Once you know how an algorithm works, you can implement it in any language (switching from a language to another is just a question of the performances you want to reach)


[ - ]
Reply by djmaguireApril 20, 2019

In addition to the above, rather than try to do simulations directly in DSP hardware, you would probably enjoy the process more if you were experimenting in a numeric environment like MATLAB or the open source variants SCILAB or Octave.  You'll find source code for plenty of effects (flangers, etc) on the MATLAB forum.  You may need to edit them to conform with the language particulars of SCILAB or Octave, but the changes will be minimal.  

You can read in WAV files (music, riffs, ...), process them, and then play them into headphones using the sound() command.  Then, when you have an effect that you like, cast it into DSP code for real time processing.  

It's analogous to the analog domain doing simulation using Electronics Workbench/TINA/etc and, then, a breadboard.

[ - ]
Reply by rbjApril 20, 2019

There is more to the various "analog effects" than filters and convolution.  If you're trying to simulate a guitar amplifier with different cabinets, perhaps the acoustic behavior of the cabinet is somewhat linear and time-invariant (LTI) and i wouldn't insist that is the case, but the behavior of the guitar amp most certainly is not LTI if you crank the amp up enough to sound good.

So you need to learn a little about non-linearities and how to model them in a DSP environment.

There's a bit more for you to learn or, perhaps, self-learn.

[ - ]
Reply by chalilApril 20, 2019
some of the effects which you can solve by basic DSP theory are :

* filters - lowpass/bandpass/highpass/shelving/EQ/peaking/etc. 

* dynamic processors - Limiter, RMS compression, Distortion, Enhancers, etc.

* Spacial Effects — Panning, Reverb, Surround Sound, Pitch shifter

* Delays and variable delay — Vibrato, Flanger, Chorus, Echo

 If you want to go next level, may need to try state-variable filters so that the filter parameters can be changed in teal-time. For example, M-fold wah-wah effect or Bell effect. see http://users.cs.cf.ac.uk/Dave.Marshall/Multimedia/exercises_BSC/lab4.pdf. Both would need time varying filters with multiple bands. Once you cross this, next step would be to move to multi-rate. Analog Device's SigmaStudio has several algos from the first list. And is in a ready to use form. You can run it on ADI chip with zero programming. But, you can't write your own code. however, you can create your own solution using primitive algos.