Kick Drum resonance

I think that’s the same issue Eric described some posts before in case of {}.play . Ndef().play automagically applies an envelope. See the help of NodeProxy.play: it also has a fadeTime argument you can set to 0.

Another point: it depends on how fast you intend to play, but for percussive instruments it usually makes sense to take OffsetOut instead of Out for better accuracy.

yea this really for lack of a better word smooths it and this is my first time seeing OffsetOut
its awesome !!

OffsetOut is great would be nice to have known this ages ago

Great to hear that it works for you! I think OffsetOut is exact enough for most practical purposes (at least it usually is for me).

Just one add-on: it’s not sample accurate in realtime. This is a delicate topic which comes up again and again. If you’re interested, there are some threads on this:

There might also be some possible system-related accuracy issues, at least on OSX I didn’t encounter such since OS 10.15, described in the last post of the first thread:

Awesome I’ll def go dive into this it’s something Im very interested in. Thank you.

I am always surprised how effective a Bessel function is when simulating the resonance of drums:

a = (-1000,-999.99..1000).collect{|item| item.cylBesselJ(1000)};
b = Buffer.loadCollection(s, a);

{(PlayBuf.ar(1,b, 0.2, 1, 0)*5).softclip.dup*Env.perc(0.001, 3).kr(2)}.play;

This would be better with attack and noise elements, but out of the box it has a lot of the character already.

Sam

4 Likes

this is new territory( + bit beyond ) to me, super exciting will research further. thank you

The 808 BD, like most Congas, Toms etc. on analogue drum-machines are T-Bridge Resonators. I my ears a ringing Bandpass sounds closest.

A BD with ringing BPF

https://sccode.org/1-5in

and some oscillator based attempts.

https://sccode.org/1-5im

https://sccode.org/1-5il

BD with ringing BPF example sounds great

I think it’s because Bessel function is used to define the radial and axial modes in a duct. Even sometimes when recording kicks, another alternative to filling it with cushion is using an elongated kick drum and placing the mics on the other end. This utilises the cut-off modes in a duct, acting as a natural low pass filter. These modes are also derived from duct geometry and Bessel function

found this great sounding example in PD of a kick made very minimally.

was able to translated it to sapf with good results ( expect for a faint click at end :/) like so…

.1 0 1 line sqrt 15 * sin1 12h .5 rlpf tanh play

but failing at supercollider attempts thus far…

{Line.ar(0, 1, 0.1).squared * 15.cos * 0.2}.play
//or
{SinOsc.ar(Line.ar(0, 1, 0.1).squared * 15,0,mul:0.5).tanh}.play

is seems cosine in supercollider is evading me… anymore play with with aggressive punchy sounds with only using math opterators ?

In pd, the input to cos~ is scaled down so that a 0.0-1.0 phasor produces a full cycle. Try running the line from 0 to 2pi. That is, the original pd example calls for 20 sine cycles within the 200 ms, but in SC, you’re getting 15/2pi cycles in 100 ms.

Here, you’ve been bitten by operator precedence: { Line.ar(0, 1, 0.1).squared * 15.cos * 0.2 }.play should be { (Line.ar(0, 1, 0.1).squared * (15 * 2pi)).sin * 0.2 }.play (also switching to .sin so that the - 0.25 from the pd example is included).

hjh

1 Like

:pray::pray::pray::pray::pray: 20 characters

Ringz also works pretty well for this:

(
{
	var exciter, freq, sig;
	exciter = Env.perc(0.0004, 0.008).ar(0) * 2.dbamp;
	exciter = exciter + Env.perc(0.0005, 0.005).ar(0) * Hasher.ar(Sweep.ar, -14.dbamp);
	freq = 51 * XLine.ar(1.03, 0.81, 0.14);
	sig = Ringz.ar(exciter * -15.dbamp, freq, 1.7);
	sig = (sig * 8.dbamp).tanh;
	DetectSilence.ar(sig, -90.dbamp, 0.1, doneAction: Done.freeSelf);
	sig ! 2;
}.play;
)

Note the use of a slightly more complex excitation signal (rather than just using a single-sample impulse) and static waveshaping on the output. The envelope modulating the filter cutoff also adds a lot of character and is meant to resemble the measured behavior of the 808 circuit.

See also this paper: A Physically-Informed, Circuit-Bendable, Digital Model of the Roland
TR-808 Bass Drum Circuit [Werner et al. 2014]

1 Like

this example defiantly has that nice thud !