Well, I've been working on tube guitar amp simulations for a while + we ported several overdrive/distortion/fuzz pedals from Faust to WebAudio.
You can of course follow the advises that have been posted previously + also : - Look at the faustlib + guitarix.lib as said, - Look at Oleg Kapitonov's overdrive + amp sim in faust ( https://github.com/olegkapitonov/Kapitonov-Plugins-Pack faust .dsp source code in LV2 dir) - Look at Nick Thomson Temper distorsion (includes a negative feedback loop), we used it as a starting point for the faust implementation of the power amp stage of a guitar amp simulation (kemper : https://github.com/creativeintent/temper) + look for the video and paper we wrote for IFC 2020 (https://ifc20.sciencesconf.org/321481) - Look at these following examples : - Big Muff fuzz at OWL pedal patch page : https://www.rebeltech.org/patch-library/patch/Big_Muff_Fuzz - Overdrive pedal from guitariw project : https://www.rebeltech.org/patch-library/patch/Guitarix_Overdrive - OSC tube distorsion from OWL pedal patch page : https://www.rebeltech.org/patch-library/patch/OscTube - Ibanez TS9 Overdrive re-creation, example from FAUST distribution : https://raw.githubusercontent.com/grame-cncm/faust/master-dev/examples/misc/guitarix.dsp For tube emulation, there are different approaches. Tubes have a temporal behavior that produces the sag and squish effect (current load during attack, unload during release) that is difficult to reproduce. In our power amp we used filters + waveshaper + bandpass filter driven by the input signal enveloppe. In a JavaScript implementation we altered in real time the transfer function of the waveshapers (not possible in faust), but some people managed to implement a more accurate model (at the price of high cpu usage) such as what is done in the Swanky Amp plugin (whose DSP code is written in Faust), see https://github.com/resonantdsp and their web site (https://www.resonantdsp.com/#posts read all blog posts) Only few implementations address the sag/squish reproduction. BTW if someone has good links with explanation about faust implementation of tubes with sag/squish, please share :-) Michel Le dim. 6 déc. 2020 à 14:07, Till Bovermann <lf...@lfsaw.de> a écrit : > thanks for the mention, dario! > > a very nice distortion heavily used by me in my SuperCollider writings > (adopted form Josh Parmenter and Julian Rohrhuber) is to amplify the signal > and run it through a `tanh` sinusoid function. the overtone resulting > spectrum is quite nice to the ear. > > Also interesting in in this regard are the various distortion plugins you > can find in this repo: > > > https://github.com/supercollider/sc3-plugins/blob/master/source/DistortionUGens/DistortionUGens.cpp > > for the algorithms, look for functions with `_next` in their name... > > cheers > Till > > > -- > Till Bovermann > > https://tai-studio.org | http://lfsaw.de | > https://www.instagram.com/_lfsaw/ > > > > > > > > > > > > On 5. Dec 2020, at 15:56, Dario Sanfilippo <sanfilippo.da...@gmail.com> > wrote: > > > > You may also want to check the saturators in Zavalishin's book; Google > "the art of va filter design". I have implemented some of those here: > https://github.com/dariosanfilippo/edgeofchaos/blob/master/stabilityEOC.lib > . > > > > For the folding functions, you can see what Till has ported from > Supercollider: > https://github.com/tai-studio/faust-sc/blob/116f80e38ea1ca5c95053f4360804f45dd7494b9/lib/scUGens.lib#L470 > . > > > > These wavefolding techniques also seem interesting and could be > implemented in Faust: > https://ccrma.stanford.edu/~jatin/ComplexNonlinearities/Wavefolder.html. > I'll give it a try later. > > > > I've been doing some experiments with time-variant transfer functions > being written by the input signal itself and I've had promising results, > although this algorithm, ideally, should be implemented using tables where > each point in the TF smoothly transitions from the current value to the new > one. As it is now, you often hear a click when the TF value is overwritten > in the delay line as it most likely jumps. > > > > You can have a look here: > https://github.com/dariosanfilippo/edgeofchaos/blob/a010b0ca6c5d8b850ecbf954b4e4aff4ad60a752/outformationEOC.lib#L571 > . > > > > Cheers, > > Dario > > > > On Fri, 4 Dec 2020 at 16:52, da <d...@randomstyles.net> wrote: > > hello, > > > > i am trying to figure out how to create different distortion effects. is > > there a site where you can look at some algorithms and how to implement > > them into faust? > > > > i am very much interested in these kind of distortion-types: > > > > > > Tube/Valve Distortion > > > > Clipping > > > > Foldback > > > > Overdrive > > > > Bitcrushing > > > > Sample Rate Reduction / Decimate > > > > Wavetable Distortion > > > > > > thanks a lot :-) > > > > > > > > _______________________________________________ > > Faudiostream-users mailing list > > Faudiostream-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/faudiostream-users > > _______________________________________________ > > Faudiostream-users mailing list > > Faudiostream-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/faudiostream-users > > > > _______________________________________________ > Faudiostream-users mailing list > Faudiostream-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/faudiostream-users >
_______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users