diff --git a/src/documentation/inlineHelp.ts b/src/documentation/inlineHelp.ts
index 241c9b8..7c374d8 100644
--- a/src/documentation/inlineHelp.ts
+++ b/src/documentation/inlineHelp.ts
@@ -55,6 +55,30 @@ const completionDatabase: CompletionDatabase = {
description: "FM synth modulator ratio",
example: "sound('fm').fmi(2).fmh(2).out()",
},
+ fmattack: {
+ name: "fmattack",
+ category: "synthesis",
+ description: "FM synth modulator ADSR envelope attack time (in seconds)",
+ example: "sound('sine').fmi(2).fmattack(.5).out()",
+ },
+ fmdecay: {
+ name: "fmdecay",
+ category: "synthesis",
+ description: "FM synth modulator ADSR envelope decay time (in seconds)",
+ example: "sound('sine').fmi(2).fmdecay(.5).out()",
+ },
+ fmsustain: {
+ name: "fmsustain",
+ category: "synthesis",
+ description: "FM synth modulator ADSR envelope sustain level (0-1)",
+ example: "sound('sine').fmi(2).fmsustain(.5).out()",
+ },
+ fmrelease: {
+ name: "fmrelease",
+ category: "synthesis",
+ description: "FM synth modulator ADSR envelope release time (in seconds)",
+ example: "sound('sine').fmi(2).fmrelease(.5).out()",
+ },
repeatAll: {
name: "repeatAll",
category: "patterns",
@@ -110,12 +134,67 @@ const completionDatabase: CompletionDatabase = {
description: "Lowpass filter cutoff frequency",
example: "sound('cp').cutoff(1000).out()",
},
+ resonance: {
+ name: "resonance",
+ category: "filter",
+ description: "Lowpass filter resonance",
+ example: "sound('cp').resonance(1).out()",
+ },
+ hcutoff: {
+ name: "hcutoff",
+ category: "filter",
+ description: "Highpass filter cutoff frequency",
+ example: "sound('cp').hcutoff(1000).out()",
+ },
+ hresonance: {
+ name: "hresonance",
+ category: "filter",
+ description: "Highpass filter resonance",
+ example: "sound('cp').hresonance(1).out()",
+ },
+ bandf: {
+ name: "bandf",
+ category: "filter",
+ description: "Bandpass filter cutoff frequency",
+ example: "sound('cp').bandf(1000).out()",
+ },
+ bandq: {
+ name: "bandq",
+ category: "filter",
+ description: "Bandpass filter resonance",
+ example: "sound('cp').bandq(1).out()",
+ },
+ vowel: {
+ name: "vowel",
+ category: "filter",
+ description: "Vowel filter type",
+ example: "sound('cp').vowel('a').out()",
+ },
+ coarse: {
+ name: "coarse",
+ category: "synthesis",
+ description: "Artificial sample-rate lowering",
+ example: "mod(.5)::snd('pad').coarse($(1) % 16).clip(.5).out();",
+ },
+ crush: {
+ name: "crush",
+ category: "synthesis",
+ description:
+ "Bitcrushing effect. 1 is extreme, superior values are more subtle.",
+ example: "",
+ },
speed: {
name: "speed",
category: "sampling",
description: "Sample playback speed",
example: "sound('cp').speed(.5).out()",
},
+ shape: {
+ name: "shape",
+ category: "synthesis",
+ description: "Waveshaping distorsion",
+ example: "sound('cp').shape(.5).out()",
+ },
delay: {
name: "delay",
category: "effect",
@@ -274,6 +353,12 @@ const completionDatabase: CompletionDatabase = {
description: "Binary rhythm generator",
example: "binrhythm(9223) :: sound('cp').out()",
},
+ prob: {
+ name: "prob",
+ category: "randomness",
+ description: "Return true with a probability of n %",
+ example: "prob(50) // 50% probability",
+ },
rand: {
name: "rand",
category: "randomness",
@@ -323,6 +408,139 @@ const completionDatabase: CompletionDatabase = {
description: "Execute one or more local scripts",
example: "mod(1) :: script(1)",
},
+ warp: {
+ name: "warp",
+ category: "core",
+ description: "jumps to the n tick of the clock.",
+ example: "warp(1) :: log('back to the big bang!')",
+ },
+ beat_warp: {
+ name: "beat_warp",
+ category: "core",
+ description: "jumps to the n beat of the clock.",
+ example: "beat_warp(1) :: log('back to the first beat!')",
+ },
+ divbar: {
+ name: "divbar",
+ category: "time",
+ description:
+ "works just like div but at the level of bars instead of beats",
+ example: "divbar(2)::mod(1)::snd('kick').out()",
+ },
+ onbar: {
+ name: "onbar",
+ category: "time",
+ description: "return true when targetted bar(s) is/are reached in period",
+ example: "onbar(4, 4)::mod(.5)::snd('hh').out();",
+ },
+ begin: {
+ name: "begin",
+ category: "sampling",
+ description: "Audio playback start time (0-1)",
+ example: "sound('cp').begin(.5).out()",
+ },
+ end: {
+ name: "end",
+ category: "sampling",
+ description: "Audio playback end time (0-1)",
+ example: "sound('cp').end(.5).out()",
+ },
+ mouseX: {
+ name: "mouseX",
+ category: "mouse",
+ description: "Mouse X position (big float)",
+ example: "log(mouseX())",
+ },
+ mouseY: {
+ name: "mouseY",
+ category: "mouse",
+ description: "Mouse Y position (big float)",
+ example: "log(mouseY())",
+ },
+ noteX: {
+ name: "noteX",
+ category: "mouse",
+ description: "Mouse X position (as MIDI note)",
+ example: "log(noteX())",
+ },
+ noteY: {
+ name: "noteY",
+ category: "mouse",
+ description: "Mouse Y position (as MIDI note)",
+ example: "log(noteY())",
+ },
+ cut: {
+ name: "cut",
+ category: "sampling",
+ description: "Cutting sample when other sample met on same orbit (0 or 1)",
+ example: "sound('cp').cut(1).out()",
+ },
+ pan: {
+ name: "pan",
+ category: "audio",
+ description: "Stereo panning (-1 to 1)",
+ example: "sound('cp').pan(-1).out()",
+ },
+ zrand: {
+ name: "zrand",
+ category: "synthesis",
+ description: "ZzFX randomisation factor",
+ example: "sound('zzfx').zrand(.5).out()",
+ },
+ curve: {
+ name: "curve",
+ category: "synthesis",
+ description: "ZzFX waveshaping (0-3)",
+ example: "sound('zzfx').curve(1).out()",
+ },
+ slide: {
+ name: "slide",
+ category: "synthesis",
+ description: "ZzFX pitch slide",
+ example: "sound('zzfx').slide(1).out()",
+ },
+ deltaSlide: {
+ name: "deltaSlide",
+ category: "synthesis",
+ description: "ZzFX pitch delta slide",
+ example: "sound('zzfx').deltaSlide(1).out()",
+ },
+ pitchJump: {
+ name: "pitchJump",
+ category: "synthesis",
+ description: "ZzFX pitch jump",
+ example: "sound('zzfx').pitchJump(1).out()",
+ },
+ pitchJumpTime: {
+ name: "pitchJumpTime",
+ category: "synthesis",
+ description: "ZzFX pitch jump time (time before jump)",
+ example: "sound('zzfx').pitchJumpTime(1).out()",
+ },
+ zcrush: {
+ name: "zcrush",
+ category: "synthesis",
+ description: "ZzFX bitcrushing",
+ example: "sound('zzfx').zcrush(1).out()",
+ },
+ zdelay: {
+ name: "zdelay",
+ category: "synthesis",
+ description: "ZzFX delay",
+ example: "sound('zzfx').zdelay(1).out()",
+ },
+ tremolo: {
+ name: "tremolo",
+ category: "synthesis",
+ description: "ZzFX weird tremolo effect",
+ example: "sound('zzfx').tremolo(1).out()",
+ },
+ speak: {
+ name: "speak",
+ category: "synthesis",
+ description: "Text to speech synthesizer",
+ example: "mod(2) :: speak('Topos!','fr',irand(0,5))",
+ },
};
export const inlineHoveringTips = hoverTooltip(