Effects and bus topology: Monophonic? Ordered? Dynamic?

Some effects (frequency shift, delay, surely others) are "linear": whether one applies the effect to each individual voice and then sums, or simply applies them to the sum, makes no difference (unless the unnecessarily complex version makes your computer choke). But my favorite effect, distort, sounds very different if applied to the sum of a bunch of voices rather than to each voice individually.

distort seems to be monophonic. Are all of them?

And is the order of effect application fixed? Again sometimes it won't matter, but distorting after filtering is very different from filtering before distorting. If I reverse the order of application of djf and distort I hear no difference, which suggests at least that doesn't matter.

I tried out the following and was very confused. Why does neither distortion appear to have any effect?

d1 $ s "superhammond" # freq 300
    |*| djf 0.6                      -- has an effect
    |*| distort 10                   -- no effect
    |*| distortrecv 1
d2 $ distortbus 1 "0 10" # djfrecv 1 -- no effect
d3 $ djfbus 1     "0.0 0.5"          -- has an effect

A minor variation of the last two lines of that passage revealed that plugging the distortbus into the djfbus does have an effect different from plugging the djfbus into the distortbus. However, when I tried to plug distortbus 1 into distortbus 2, it was as if there were no distortion at all:


do
  d1 $ s "superhammond" # freq 300  # distortrecv 1
  d2 $ distortbus 1 (fast 2 "0 10") # distortrecv 2
  d3 $ distortbus 2 (fast 20 "0 2 4")

The answers to these questions seem like a good candidate for the missing introduction to the the docs regarding effects. I'm not an editor. How does one become an editor?

related: Effects after Reverb? , but that was before the "control bus" concept? Now that's two topics (effects: order/local/global, control bus) that could use more documentation.

(I've been meaning to work on that. I am being delayed by other obligations. I still want to do this, or help others doing it. The way to contribute docs is to fork GitHub - tidalcycles/tidal-doc and send PR?)

I thought a "control bus" describes routing of parameter values (from Tidal to SC synthdefs), not routing of audio streams? (control buses do not change the audio processing chain? their purpose is to change parameter values while a synthdef is running - without re-triggering it?)

You can see a list of effect modules (in order) using ~dirt.modules, and reorder them using

~dirt.orderModules([\shape,\vowel])

new module order: [ sound, shape, vowel, hpf, bpf, crush, coarse, lpf, pshift, envelope, grenvelo, tremolo, phaser, waveloss, squiz, fshift, triode, krush, octer, ring, distort, spectral-delay, spectral-freeze, spectral-comb, spectral-smear, spectral-scram, spectral-binshift, spectral-hbrick, spectral-lbrick, spectral-conformer, spectral-enhance, dj-filter, out_to, map_from ]

where you don't have to specify the full list to reorder.

I think all of the "local" effects operate on all channels independently (what you call "monophonic").

If I remember correctly, global effects are effectively in parallel - they each get the "dry" signal and modify it. I think the only one that truly mixes different channels is "leslie".

Huh. So I'm wrong that distortion distorts the sum of the signals? It's been so long since I played guitar through an amp I've forgotten what it sounds like, but I remember I like it. If I wanted, say,

d1 $ sound "supersquare" |*| freq "[200,250]" |*| distort 1

to distort the sum of the two frequencies, is there something I can do?

  1. to refresh your memory, go get a guitar and an amp, and set controls to "everything louder than everything else". Or, Boris - Japan Crust Punk Special 18th August 2020 | Listen on NTS
  2. perhaps SuperDirt/adding-global-effects.scd at develop · musikinformatik/SuperDirt · GitHub (I would love to have this available, and configurable, from inside Tidal)
1 Like

[OT] I read Boris, I add like. One of the best band out there

Yes, as things are now, I think the easiest way to do a "sum, then distort" would be as a global effect.