[sdiy] [OT] Tube Screamer in depth modelling
Andrew Simper
andy at cytomic.com
Wed May 24 04:30:02 CEST 2017
Hi Richie,
On 24 May 2017 at 06:27, Richie Burnett <rburnett at richieburnett.co.uk> wrote:
> Hi Andy,
>
> Thanks for posting about this interesting work, and for including some sound
> examples.
You're welcome :) Like I said before I'm pretty excited by it myself
so it's great to be able to share this with all the regular posters to
synth-diy, and have you guys appreciate it.
> Did you use any particular tricks to mitigate aliasing caused by the
> expansion in bandwidth of the signal when clipping?
This is an interesting topic. I do nothing special to prevent aliasing
other than implement optional oversampling and do correct pn-junction
implicit equation solving. The strongest drive is coming from the two
main clipping diodes d101 and d102, and it is interesting to note that
due to the combination of unbuffered capacitance (from C104 and the
diode's inbuilt non-linear junction and diffusion capacitance) there
is a smoothing out the onset of clipping that reduces aliasing. This
is similar to most envelope follower in compressors, and what happens
is the "attack time" smoothly ramps down from near infinite to
whatever the series resistor time combined with the capacitor is. This
smooth transition between no clipping and clipping reduces a lot of
aliasing already. This is most evident by the harmonic series taking a
steep dive at the highest harmonics, but retaining all the lower
harmonics, which is exactly what you want to reduce aliasing.
Oversampling to 88.2 / 96 kHz takes care of a bit more anti-aliasing,
and also de-cramps the tone caps, although I do already do some tricks
to match the amplitude response of a few of them (at the expense of
the phase response).
> Is the sound example
> "www.cytomic.com/files/scream-acidvoice-saw02-ts808.mp3" a real analogue
> TB-303 playing through a real analogue Ibanez TS-808 Tube Screamer? It
> sounds incredibly clean and devoid of noise to my ears. Whenever I've run
> my TB-303 through distortion pedals with lots of gain the noise floor has
> become quite noticeable.
I used a sample of a 303 that the guys at http://www.acidvoice.com
provided me with as a .wav file. They did a good job of recording it
clean, but I can still hear some hiss on the dry version. I then
played back this sample out of an RME Fireface UCX, through the TS808
and then sampled back into the 470k instrument input of the RME. So
yes it's a real analogue 303 through a real analog TS808, but both
recorded separately with decent soundcards, so this may reduce noise,
especially since I could gain up the output of the RME digitally
without adding extra hiss from that gain stage.
> The example "www.cytomic.com/files/scream-acidvoice-saw02-scream.mp3"
> matches it almost perfectly, so sounds like the modelling is spot on.
>
> Cheers,
>
> -Richie,
Thanks! I de-soldered and measured all the pots, and fiddled a bit
with the diode params and most prominent capacitors to get things
match as closely as possible within reason (ie without de-soldering
and measuring every component individually). I feel this is as close
as is needed, and probably closer than the sound between analog TS808s
in different batches. I am keen to add some component tolerance
randomisation, both in mono and stereo to see if this adds much. At
the least it may be a good way to come up with variations on the sound
that you may not otherwise have done manually.
Here are some plots comparing The Scream and a TS808 at various input
levels and drive amounts early on in the modelling, which didn't
include the non-linear capacitor modelling and a few other little
touchups that are in the final release:
www.cytomic.com/files/scream-vs-ts808-1.png
www.cytomic.com/files/scream-vs-ts808-2.png
www.cytomic.com/files/scream-vs-ts808-3.png
www.cytomic.com/files/scream-vs-ts808-4.png
And some comparisons between a TS808, The Scream, the free (and quite
good!) Mercurial TSC, and the Brainworx bx_greenscreamer:
www.cytomic.com/files/scream-comparisons-sin55-neg17dbfs-drive100.png
www.cytomic.com/files/scream-comparisons-sqr55-0dbfs-drive000.png
Cheers,
Andy
>
>
> -----Original Message----- From: Andrew Simper
> Sent: Tuesday, May 23, 2017 10:37 AM
> To: Leonardo Laguna Ruiz
> Cc: SDIY List
> Subject: Re: [sdiy] [OT] Tube Screamer in depth modelling
>
>
> I'm using straight up SPICE MNA maxtrix solving with NR iterations,
> but the entire solver is automatically generated from a high level
> circuit definition. I haven't written a parser for a netlist yet, but
> I plan to do that in the future so I can draw the circuit using
> LTSpice, then automatically convert that to an SSE2 class that solves
> for that circuit. Currently the circuit is specified in c code like
> this:
>
> www.cytomic.com/files/scream-code-gen-example.pdf
>
> The code that gets generated is branch free and the every expression
> is optimised to make the solving of the circuit as efficient as
> possible, automatically pulling out all pre-computable constants (init
> time consts, per sample consts, and inner NR loop consts), and there
> are lots of specific hacks to get things to converge in a stable
> manner.
>
> There are some optimisations that can be made by pre-computing multi
> dimensional tables, which are great to hot start the solver, but I've
> found you always need a couple of fine tuning NR iterations to really
> get a smooth solution. I am yet to implement any hot starts for The
> Scream, but I've done this in the past for various (very basic)
> circuits.
>
> Cheers,
>
> Andy
>
>
> On 23 May 2017 at 16:38, Leonardo Laguna Ruiz <modlfo at gmail.com> wrote:
>>
>> Hi Andy,
>>
>> this topic is very interesting for me. I work developing simulators and
>> many
>> years back I developed a (not so good sounding) model of the MT-2 pedal. I
>> wonder what kind of methods you used to make it. Did you used a SPICE-like
>> approach or an ODE/DAE solver?
>>
>> Leonardo
>>
>>
>> On 05/23/2017 09:18 AM, Andrew Simper wrote:
>>>
>>>
>>> Hi Guys,
>>>
>>> I know this is a little off topic since strictly speaking it's not a
>>> synth that is being modelled, but I know lots of people on this list
>>> do various DSP analog modelling from time to time, and use SPICE (etc)
>>> to model stuff.
>>>
>>> I'm just finishing off a VST/AU/AAX plugin that is a full discrete
>>> component model, and modified Boyle op-macro model, of an Ibanez Tube
>>> Screamer TS-808. One of the interesting things is that when I was
>>> matching the various resistor / capacitor / diode model parameters I
>>> added a list view of every "constant" to the model so I could more
>>> easily edit them and fine tune the model to match the units I have
>>> used as a reference. I found this to be quite a lot of fun, so I
>>> decided (possibly to my peril) to allow everyone access to this list.
>>>
>>> I added a few extra resistors and capacitors to the model so that you
>>> can also model all the modes on a TS9DX, and also the Boss SD-1. You
>>> can alter the op-amp's slew rate, unity bandwidth, and dc open loop
>>> gain, and swap different diodes and roughly change how many diodes are
>>> in series in the main clipping section. I also added a battery voltage
>>> pot and series resistor, and pot to adjust the bias. You can also add
>>> your own diode .model statements to add them to the dropdown list of
>>> available diodes. Supported diode model parameters are: IS, N, ISR,
>>> NR, RS, CP, TT, CJ0, VJ, FC, M, IMAX, anything else will be ignored.
>>>
>>> It's loads of fun to play with, especially on synths, here are some
>>> audio examples of distorting a 303. First is the riff through an
>>> actual TS808, then through the plugin, then through a "modded" version
>>> with op-amp slew and and different caps to distort more of the signal:
>>>
>>> www.cytomic.com/files/scream-acidvoice-saw02-ts808.mp3
>>> www.cytomic.com/files/scream-acidvoice-saw02-scream.mp3
>>> www.cytomic.com/files/scream-acidvoice-saw02-scream-mod.mp3
>>>
>>> If any of the usual suspects here at synth-diy want a free copy I
>>> would love to give you one, just email me directly with your name and
>>> email in the form (I'm lazy and this makes it easy for me to copy and
>>> paste to assign the free copy to you):
>>>
>>> Firstname Lastname <your at email.address.com>
>>>
>>> I've learnt so much from this list, and really appreciate everyone's
>>> time and effort in their posts on such a wonderful variety of topics,
>>> it's not much of a thank you, and it's partly me being proud and
>>> wanting to show off all my hard work, but it is a pretty cool little
>>> plugin and hopefully some of you may find it useful for your music.
>>>
>>> If anyone wants to know about some of the details of the modelling
>>> then please ask away, I'm open to chat about anything.
>>>
>>> Cheers,
>>>
>>> Andy
>>> _______________________________________________
>>> Synth-diy mailing list
>>> Synth-diy at synth-diy.org
>>> http://synth-diy.org/mailman/listinfo/synth-diy
>>
>>
>>
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at synth-diy.org
>> http://synth-diy.org/mailman/listinfo/synth-diy
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org
> http://synth-diy.org/mailman/listinfo/synth-diy
>
> ---
> This email has been checked for viruses by AVG.
> http://www.avg.com
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org
> http://synth-diy.org/mailman/listinfo/synth-diy
More information about the Synth-diy
mailing list