Renardo defines audio effects as SC SynthDefs in Python using an `effect_manager` DSL, then exposes them as player attributes
Effects in Renardo (e.g., lpf, vib, echo, chop, room, drive) are SuperCollider SynthDefs generated from Python via effect_manager.new(shortname, synthname, {param: default}, order=N). Parameters become player keyword arguments with their defaults as off-values. The order field controls the effect chain position (0 = frequency-domain, 2 = signal-domain). Effects fire only when their parameter is non-zero (or not at default). This means adding drive=0.5 to any player line instantly adds a drive SynthDef node. The Python-to-SC compilation happens at Renardo startup, so new effects added in Python are available in the same session after re-initialization.
Examples
# Built-in effects as player attributes:
p1 >> pluck([0,2,4], room=0.8, lpf=1200, drive=0.3)
p1 >> pluck([0,2,4], echo=0.5, echotime=2, echomix=0.8)
p1 >> pluck([0,2,4], chop=8) # choppy tremolo-like effect
Assessment
Explain how adding vib=3 to a player works internally in Renardo. Why is the default value for most effects 0?