Electronic emulation

GroupDIY Audio Forum

Help Support GroupDIY Audio Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

TheJames

Well-known member
Joined
Mar 18, 2005
Messages
377
I'm curious how people are making emulation plugins.  In doing a little searching I found this:

http://www.livespice.org/

I noticed in some plugin development videos the developers have the schematics of the device they're trying to emulate.  I'm wondering if they're using something like LiveSPICE to create the plugins.

Anybody have any insight in this?
 
I've been working on real-time simulation plug-ins for some time.
I'm a real-time graphics programmer in my day job, so writing high performance code from scratch is something I have a lot of experience with.

My approach is to focus on the execution time of every single line of code, and work backwards from a full numerical simulation to the final real-time result, trading off the compromises along the way where I see fit. So far I haven't had to compromise on anything due to my approach of using machine-level optimizations, special memory access concepts and directly programming the SSE2/3/4 vector units. Thus far I'm using a huge array of tricks, but not using anything off the shelf. I've never found anything that performs at the levels I require because it's too difficult to provide a user with mathematical optimizations they might not either understand, or be able to control well enough.

As we move towards JIT compiled code with technologies like Clang and LLVM however, that might start to change....

In my experience there is nothing our there that could compete with the type of performance I am achieving and want to keep achieving as I move towards a set of commercialisable plug-ins.
 
It is one of the approaches used, in most cases they use combined approaches, some developers prefer to start from this, simulating the circuit and improve module by module to get closer. (an inductor saturation or a electrol cap with certain bias are things sometimes needs to be measured to get the parameters for the simulation)

Other approach is to grab the thing and look it as a black box and start to introduce different signals and start coping from there, with analytic transfer response approximations. (They are discrete, analytic in the sense it's not convolution or a table f values, but an expression, MACs (multiply and accumulate) are preferred for DSP processors for example)

Acustica audio is doing it in a different way, the convolution we all know for reverbs is one sample of the thing, you introduce one signal and you get one transfer response, in phase, amplitude and time. Nebula is using multiple signals to get the harmonic distortion and dynamics, making it usable up to a really good point to make possible the convolution of non linear systems, while convolution is a approach for linear systems, with multiple convolutions you can get a stepped non linear, then nebula gets in where you can smooth the change between sample and sample if it's generating artifacts and other funny controls. Also nebula have a background of math involved as signal managing, dynamics, filters, which allows to use it without the use of convolutions, or combined which is usually the case, letting you manipulate the signal even further. It does eats you processing power but it's a very powerful tool, I never tested running CUDA but IIRC it's a possibility. First time I saw it a few years back it really got my attention as the first multiple convolution plugin I'd seen, I never see any other yet, maybe there are some with that running in the background but this is very alike a reverb where you get your samples and use it for that purpose, and then tweak a couple more values and let a few parameters visible to control it quickly.

I've seen an article on one of those online magazines about exactly this where they interview people from the major companies doing plugins and they talk about this. That article may be the best answer for your question but I can't remember where it was, it's probably I saw it here first, if I remember or find it I'll let you know.

JS
 
ltspice allow to put a wav at the input of a circuit and hear what the output will sound like, that could be used to create an impulse responce of a circuit.

Nebula use Volterra series to recreate the no linearities of a system they use strange sound to calculate the numbers of the serie.  I tried to understand it but it is very hard maths.

I have seen some good guitar amps emulations as free plug ins would be good to know how they do it. Peavey years ago relase revalver it allow you to mod the amp change plate resistors, caps, etc. I would like to have it more flexible to desing my own amp but it was a good start.
 
12afael said:
ltspice allow to put a wav at the input of a circuit and hear what the output will sound like, that could be used to create an impulse responce of a circuit.

Nebula use Volterra series to recreate the no linearities of a system they use strange sound to calculate the numbers of the serie.  I tried to understand it but it is very hard maths.

I have seen some good guitar amps emulations as free plug ins would be good to know how they do it. Peavey years ago relase revalver it allow you to mod the amp change plate resistors, caps, etc. I would like to have it more flexible to desing my own amp but it was a good start.

I never find the math behind it, only concepts, do you have any source were the math of nebula is discussed or explained? I'd really appreciate that.

JS
 
is not volterra series are volterra kernels sorry for that.

the genius who invented all this is Angelo Farina he is a teacher at a university at Italy I suspect the guys at Acustica audio were his students.

http://pcfarina.eng.unipr.it/ you have to go to his papers.

there are other papers of other people using volterra series if you do a google search.

one of my uncles is a national prize at maths here in chile. We discussed about the papers one night but it was not easy to me explain what the series were doing and at the end  he didn't have a clue neither.

si logras sacar algo en claro avisame!
saludos!

 
there are some videos at youtube too. Angelo Farina have some videos riding motocross at snow...

here is one at AES
https://www.youtube.com/watch?v=h9-pMQzPqbo
 
Obviously a few ways to skin the simulation cat.  There are quite a few people doing this now and some are getting really good results. 

I'm interested in getting my feet wet. 
 
12afael said:
the genius who invented all this is Angelo Farina he is a teacher at a university at Italy I suspect the guys at Acustica audio were his students.

http://pcfarina.eng.unipr.it/ you have to go to his papers.

there are other papers of other people using volterra series if you do a google search.

one of my uncles is a national prize at maths here in chile. We discussed about the papers one night but it was not easy to me explain what the series were doing and at the end  he didn't have a clue neither.

si logras sacar algo en claro avisame!
saludos!

Thanks, I'll probably look at it in the summer, already a lot to do in the summer but it's interesting to get those wired math some think. I have a friend PhD in math maybe he could fill some blanks and I own him some meeting, so I probably ask him about if he can clear out something with me.

Thanks for the video, I don't know if I'm going to manage listen to an italian guy trying to speak in english for 1h45 but I'll try.

For what I understand they use multiple samples and then from all of them they interpolate the response of the missing samples as a reconstruction. It's easy to picture that for freq response and time response, not so much for harmonic content. For that last one they use orthonormal functions or something like that and with a series of that they can recreate non linear systems, again with a few samples at each level and each time for each function you can interpolate for the missing ones. When you make a Fourier series you pick a series of orthonormal functions [ a constant and k*(cos(nwf)+j*sin(nwf))] or you can use different functions for other models instead of the Fourier series or a different weighting function. In that way you sample the harmonic content. I don't know what exacts math functions they are using behind and I should look further for sure, but I guess is something like this, choosing the right set of orthogonal functions is the key for this approach.

They are using kernel and vector engines to make the recreation, the vector engine selects the sample or create the interpolation to be used and the kernel applies it to the signal, at the end of the video he supposably would explain for geeks, but he wasn't so deep as I was hopping, I think I have to start looking for Volterra series and take it from there, he used a simplified version of it but I need to understand it and I never touched a thing about it.

If I can get something in clear from all this I'll let you know, as far as you're not hurry it may happen at some point on the summer. It won't be a complete study on the subject but I'd like to understand it better since looks really interesting. I'm more sided to analog stuff but I can't denny digital is here to stay, in audio and in everything so I should get better at it too.

Thanks for the info BTW.

JS
 
yep. what I understand of the video is that they use different impulse response for different amplitude of the signal, what I can´t understand yet is if it is frequency dependent, I mean, if you have a strong high frequency signal it use the same impulse for all the spectrum or use a different one for the low part of the spectrum.

it is very interesting how the main problem is not all this math but how have a fast database. I have tried the nebula and it is amazing but it was cpu consuming.

I have a liquid mix and I like it a lot but I would love to hack it and use my own emulations. it is a pit that it was not a more open platform.
 

Latest posts

Back
Top