diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs
index c2cf917e..f7f029e0 100644
--- a/packages/core/controls.mjs
+++ b/packages/core/controls.mjs
@@ -393,9 +393,28 @@ const generic_params = [
*/
// currently an alias of 'hcutoff' https://github.com/tidalcycles/strudel/issues/496
// ['hpf'],
- [['vib'], 'vib'],
+ /**
+ * Applies a vibrato to the frequency of the oscillator.
+ *
+ * @name vib
+ * @param {number | Pattern} frequency of the vibrato in hertz
+ * @synonyms vibrato
+ * @example
+ * sound("triangle").freq(300).vib("<1 2 4 8 16>")
+ */
+ [['vibrato'], 'vib'],
+ /**
+ * Sets the vibrato depth as a multiple of base frequency (not vibrato speed!).
+ *
+ * @name vibmod
+ * @param {number | Pattern} depth of vibrato (multiple of base frequency)
+ * @example
+ * sound("triangle").freq(300).vib("<8 16>").vibmod("<0.25 0.5 0.75 1 2 4>")
+ */
[['vibmod'], 'vibmod'],
[['hcutoff', 'hresonance'], 'hpf', 'hp'],
+ ['vib'],
+ ['vibmod'],
/**
* Controls the **h**igh-**p**ass **q**-value.
*
@@ -666,8 +685,6 @@ const generic_params = [
// TODO: LFO rate see https://tidalcycles.org/docs/patternlib/tutorials/synthesizers/#supersquare
['rate'],
// TODO: slide param for certain synths
- ['vibrato'],
- ['vdepth'],
['slide'],
['slidespeed'],
// TODO: detune? https://tidalcycles.org/docs/patternlib/tutorials/synthesizers/#supersquare
diff --git a/website/src/pages/learn/synths.mdx b/website/src/pages/learn/synths.mdx
index b24726cf..68bbee34 100644
--- a/website/src/pages/learn/synths.mdx
+++ b/website/src/pages/learn/synths.mdx
@@ -48,6 +48,16 @@ You can also set `n` directly in mini notation with `sound`:
Note for tidal users: `n` in tidal is synonymous to `note` for synths only.
In strudel, this is not the case, where `n` will always change timbre, be it though different samples or different waveforms.
+### Vibrato
+
+#### vib
+
+
+
+#### vibmod
+
+
+
## FM Synthesis
FM Synthesis is a technique that changes the frequency of a basic waveform rapidly to alter the timbre.