


valuestream~displays a control's value over time
~speed~how quickly display should scroll



timerdisplay~displays a timer to indicate how long a patch has been running
~reset~reset timer to zero



timelinecontrol~[abandoned module, possibly broken] global timeline control to position transport
~measure~[todo]
~loop~[todo]
~loop start~[todo]
~loop end~[todo]



selector~radio button control to only enable one value at a time. patch it to the "enabled" checkbox on several modules to only enable one module at a time. works well in conjunction with "groupcontrol" module.
~selector~which value should be set to 1



scriptstatus~shows everything in the current python scope, for debugging
~reset all~resets scope variables



script~python scripting for livecoding notes and module control
~loadscript~choose a script from here, then press "load"
~load~load selected script
~save as~save the current script
~code~write code here. press ctrl-R to execute the code, or ctrl-shift-R to just execute the current block.
~run~click here to execute the code, or press ctrl-R
~stop~cancel any events scheduled by this script
~a~variable for the script to use, can be modulation by other sources
~b~variable for the script to use, can be modulation by other sources
~c~variable for the script to use, can be modulation by other sources
~d~variable for the script to use, can be modulation by other sources



samplebank~[abandoned module, probably broken]point to a collection of samples to be used by other modules
~sample~[todo]



radiosequencer~sequence to only enable one value at a time. patch it to the "enabled" checkbox on several modules to only enable one module at a time. works well in conjunction with "groupcontrol" module.
~interval~rate to advance
~length~length of sequence



presets~save and restore sets of values. connect the grey circle to modules to affect all controls on that module. connect the purple circle to a control to affect only that control. shift-click on the grid to store a preset to that square, and click on a grid square to load that preset.
~save~[todo]
~blend ms~time to blend preset values over
~preset~jump to a preset



prefab~create a collection of modules that can be loaded from the "prefabs" menu. to add a module, drag the grey circle to the module. to add a bunch of modules, lasso-select all of them, including this, and type '+'
~save~save as a .pfb file
~load~load a .pfb
~disband~free all modules from this prefab



oscoutput~send OSC messages when slider values change or when notes are received
~osc out address~destination to send OSC messages to
~osc out port~port to send OSC messages to
~label*~label to send slider value. the message will be sent in the format /bespoke/[label] [value]
~slider*~sends a value to the address. try patching a modulator into this, such as a leveltocv module to send audio levels.
~note out address~label to send input notes. the message will be sent in the format /bespoke/[label] [pitch] [velocity]



loopstorer~[abandoned module, probably broken]store a looper's loops to swap them in and out
~rewrite~[todo]
~quantization~[todo]
~clear~[todo]
~select *~[todo]



groupcontrol~connect to several checkboxes, and control them all with one checkbox
~group enabled~controls the connected checkboxes



grid~generic grid, to be used by "script" module, to assist in writing scripts that use grid-based midi controllers
~grid~patch a grid in here, from a "midicontroller" module



globalcontrols~interface controls, intended to allow you to use midi controllers to navigate the canvas. controlling these sliders directly with the mouse is not recommended.
~zoom~zoom level
~x pos~horizontal panning position
~y pos~vertical panning position
~scroll x~emulate horizontal mouse scrolling
~scroll y~emulate vertical mouse scrolling
~lissajous r~amount of red in background lissajous curve
~lissajous g~amount of green in background lissajous curve
~lissajous b~amount of blue in background lissajous curve



eventcanvas~schedule values to set over time
~quantize~quantizes events to grid
~measures~length of loop
~interval~grid for snapping events to
~record~record connected values as they change
~canvas~canvas of events. canvas controls:\n-shift-click to add an event\n-hold shift and drag an event to duplicate\n-hold alt to drag an event without snapping\n-hold ctrl while dragging to snap to an interval\n-hold shift and scroll to zoom\n-hold alt and grab empty space to move slide the canvas view\n-hold ctrl and grab empty space to zoom the canvas view
~timeline~control loop points
~delete~delete highlighted elements
~view rows~number of visible rows
~clear~delete all elements
~drag mode~direction that elements can be dragged



comment~a box to display some text, to explain a section of a patch
~comment~type text here



pulsetrain~defines a list of pulses to execute, once pulsed
~length~length of the sequence
~interval~length of each step within the sequence



pulsesequence~defines a looping sequence of pulses
~length~length of the sequence
~interval~length of each step within the sequence
~<~shift sequence to the left
~>~shift sequence to the right



pulser~send pulse messages at an interval
~interval~rate to send pulses
~timemode~when to send downbeat pulses, or set to "free" for pulses not locked to the transport
~t~pulse interval in milliseconds
~offset~pulse time offset, in fractions of a measure
~random~tell pulsed modules to randomize their position



pulsehocket~sends pulses to randomized destinations
~weight *~chance that pulse goes to this destination



pulsegate~control if pulses are allowed through
~allow~can pulses pass through?



pulsedelayer~delay pulses
~delay~time to delay, in fractions of a measure



pulsechance~randomly allow pulses through, based on chance
~chance~chance that pulses are allowed through



pulsebutton~trigger a pulse with a button press
~pulse~trigger a pulse



notetopulse~trigger a pulse whenever a note is received



vinylcontrol~modulator which outputs a speed value based upon control vinyl input audio. provide it with a stereo signal from control vinyl (like you'd use to control serato) patched in from an "input" module.
~control~enable/disable transport control. when you enable it, it will use the current speed as the reference speed (so, the output will output a value of 1 until you change the vinyl's speed)



velocitytocv~take a note's velocity and convert it to a modulation value
~min~output for velocity 0
~max~output for velocity 127



valuesetter~set a specified value on a targeted control
~value~value to set
~set~click here to send the value (or, send a pulse to this module for the same result)



subtract~outputs the result of value 2 subtracted from value 1. value 1 and value 2 are intended to be patch targets for modulators.
~value 1~
~value 2~



smoother~outputs a smoothed value of the input
~input~set a value to smooth, patch a modulator into here
~smooth~amount of smoothing to apply



ramper~blend a control to a specified value over a specified time
~length~length of time to blend over
~start~begin blending (or, send a pulse to this module for the same result)
~target~the value to arrive at when the ramp is over



pressuretocv~take a note's pressure and convert it to a modulation value
~min~output for pressure 0
~max~output for pressure 127



pitchtospeed~convert an input pitch to a speed ratio. you could use this to control a sample's playback speed and make it playable with a keyboard.
~ref freq~the output is the input frequency divided by this number



pitchtocv~take a note's pitch and convert it to a modulation value
~min~output for pitch 0
~max~output for pitch 127



notetoms~takes an input note, and outputs the period of that note's frequency in milliseconds. useful for setting delay lines to create specific pitches.



notetofreq~takes an input note, and outputs that note's frequency in hertz



mult~outputs the result of value 1 multiplier by value 2. value 1 and value 2 are intended to be patch targets for modulators.
~value 1~
~value 2~



modwheeltocv~take a note's modwheel value and convert it to a modulation value
~min~output for modwheel value 0
~max~output for modwheel value 127



macroslider~take a value and send scaled versions of that value to multiple destinations
~input~the input value. intended to be a modulation patch target.
~start*~the output value at the bottom of the input's range
~end*~the output value at the top of the input's range



leveltocv~output a modulation value based on the level of incoming audio
~gain~multiply the input audio by this value
~attack~rise to the input level at this rate
~release~decay from the input level at this rate
~min~output when level is zero
~max~output when level is one



gravity~make a modulation value rise and fall with physics
~gravity~the gravitational force to apply downwards
~kick amt~the amount of upward force to apply when kicking
~drag~the resistance force to apply opposite the velocity
~kick~click to apply kick force (or, pulse this module for the same result)



fubble~draw on an X/Y pad and replay the drawing to modulate values. based on a concept proposed by olivia jack
~quantize~should we quantize playback to a specified rhythmic interval?
~length~the interval to quantize to
~speed~speed up or slow down playback
~clear~clear the drawing
~mutate amount~amount to affect drawing by perlin noise field
~mutate warp~scale of perlin noise field
~mutate noise~rate to move through perlin noise field
~reseed~jump to a different location in the perlin noise field



envelope~modulate a value with a triggered envelope
~advanced~switch to advanced envelope editor (allows for a more complicated envelope than just an ADSR). double-click on an advanced envelope line to add stages, right click on points to remove them, drag on lines to bend them.
~adsrA~envelope attack
~adsrD~envelope decay
~adsrS~envelope sustain
~adsrR~envelope release
~low~output low value
~high~output high value
~length~length of envelope display
~use velocity~should envelope output be scaled by input velocity?
~has sustain~should this envelope have a sustain stage?
~sustain stage~which step of the envelope should have the sustain?
~max sustain~what's the maximum length of the sustain, in milliseconds? a value of -1 indicates no maximum



curvelooper~modulate a value over time with a looping curve
~length~length of the loop
~randomize~create a random curve



curve~remap an input over its range with a curve. double-click on the curve to add points, right click on points to remove them, drag on lines to bend them.
~input~input value (intended as a modulation target)



controlsequencer~modulate a control step-wise at an interval
~interval~rate to advance
~length~length of the sequence
~random~randomize sequence values



audiotocv~use an audio signal to modulate a control. allow for audio-rate modulation, to achieve effects such as FM.
~gain~multiply incoming audio
~min~minimum output value
~max~maximum output value



addcentered~outputs the result of value 1 plus value 2, multiplied by range 2. optimized for using to modulation value 1 by range 2 at a frequency. value 1 or value 2 are intended to be patch targets for modulators.
~value 1~center value
~value 2~modulation value
~range 2~modulation amount



add~outputs the result of value 1 plus value 2. value 1 and value 2 are intended to be patch targets for modulators.
~value 1~
~value 2~



slidersequencer~[abandoned module, likely broken]
~division~[todo]
~time*~[todo]
~vel*~[todo]
~note*~[todo]
~playing*~[todo]



randomnote~play the note at a given interval with a random chance
~interval~the note length
~probability~the chance that a note will play each interval
~pitch~the pitch to use
~velocity~the velocity to use
~offset~the amount of time to offset playback within the interval
~skip~after a note plays, don't play a note the next n-1 times that it would have played



push2control~use an ableton push 2 to control bespoke's interface



polyrhythms~looping sequence with lines on different divisions
~length*~number of steps for this line
~note*~pitch to use for this line



playsequencer~drum sequencer that allows you to punch in to record and overdub steps, inspired by the pulsar–23 drum machine
~interval~the step size
~measures~the loop length
~write~if the current input should be written to the sequence. this will also delete steps if mute/delete is enabled for this row
~note repeat~if held notes should repeat every step
~link columns~if the mute/delete control should be shared across the entire column
~store*~store the current sequence to this slot
~load*~load the sequence stored in this slot
~mute/delete*~if write is disabled, mute this row. if write is enabled, clear the steps as the playhead passes them



notesequencer~looping sequence of notes at an interval. pair with a "pulser" module for more interesting step control. hold "shift" to adjust step length.
~interval~note length
~length~length that the sequence below should play. the overall grid length can be changed by adjusting "gridsteps" in the triangle menu.
~octave~octave of the bottom pitch of this sequence
~notemode~which set of pitches should the rows represent?
~<~shift the sequence to the left
~>~shift the sequence to the right
~pitch~randomize pitches in the sequence. hold shift to constrain the randomization to only pick roots and fifths.
~len~randomize the length of each step's note.
~vel~randomize the velocity of each step's note.
~loop reset~when sequence loops, reset to here instead. send a "downbeat"-style message from a pulser to restart the sequence from the first step.
~tone*~pitch for this column
~vel*~velocity for this column
~len*~length for this column



notelooper~note loop recorder with overdubbing and replacement functionality
~write~should input should be recorded?
~del/mute~if "write" is enabled, erase notes as the playhead passes over them. otherwise, just mute them.
~num bars~set loop length in measures
~clear~clear pattern
~store*~save pattern
~load*~restore pattern
~canvas~canvas of recorded notes



notecreator~create a one-off note
~pitch~output note pitch
~trigger~press to trigger note for specified duration
~on~turn on to start note, turn off to end note
~velocity~note velocity
~duration~note length when "trigger" button is used



notechain~[no tooltip]
~pitch~[no tooltip]
~trigger~[no tooltip]
~velocity~[no tooltip]
~duration~[no tooltip]
~next~[no tooltip]



notecanvas~looping note roll
~quantize~quantize selected notes to interval
~play~play notes on canvas
~rec~record input notes to canvas
~free rec~[no tooltip]
~measures~loop length
~show chord intervals~show brackets to indicate chord relationships
~interval~interval to quantize to
~canvas~canvas of notes. canvas controls:\n-shift-click to add a note\n-hold shift and drag a note to duplicate\n-hold alt to drag a note without snapping\n-hold ctrl while dragging to snap to an interval\n-hold shift and scroll to zoom\n-hold alt and grab empty space to move slide the canvas view\n-hold ctrl and grab empty space to zoom the canvas view
~timeline~control loop points
~delete~delete highlighted elements
~view rows~number of visible rows
~clear~delete all elements
~drag mode~direction that elements can be dragged



midicontroller~get midi input from external devices
~controller~midi device to use
~mappingdisplay~which mapping view to see
~bind (hold shift)~when this is enabled, you can map a midi input to a UI control by hovering over a UI control, holding shift, and then using desired midi input
~page~select which page of midi controls to use. each page acts like an independent midi controller, so you can use pages to allow one midi controller to switch between controlling many things
~add~add a mapping manually
~osc input port~port to use for osccontroller input



keyboarddisplay~displays input notes on a keyboard, and allows you to click the keyboard to create notes



gridkeyboard~grid-based keyboard, intended primarily for 64-pad grid controllers
~layout~keyboard style
~octave~base octave
~latch~latch key presses, so you press once to play a note, and press again to release a note
~arrangement~[no tooltip]
~ch.latch~[no tooltip]
~p.root~[no tooltip]



fouronthefloor~sends note 0 every beat, to trigger a kick drum
~two~sends note only every two beats



drumsequencer~step sequencer intended for drums. hold shift when dragging on the grid to adjust step velocity.
~str~velocity to use when setting a step via a grid controller, if the checkbox next to this slider is checked
~use str~if the "str" slider should be used for setting velocity
~measures~length of the sequence in measures
~preset~select a pattern preset
~yoff~vertical offset for grid controller's view of the pattern
~offsets~show "offsets" sliders
~repeat~repeat input notes at this rate
~step~length of each step
~<~shift whole pattern one step earlier
~>~shift whole pattern one step later
~grid~patch a grid in here from a "midicontroller" module to control the grid
~velocity~patch a grid in here from a "midicontroller" module to control the velocity
~metastep~patch a grid in here from a "midicontroller" module to control the "meta step". I forget what this does. oops.
~offset*~shift row forward/backward in time. try making your snares a little early, your hats a little late, etc.


helpdisplay~displays help information
~show tooltips~displays these tooltips
~help page~which page of help information to show


circlesequencer~sequencer that views a loop as a circle
~length*~number of steps in this ring
~note*~pitch to use for this ring
~offset*~timing offset for this ring



waveshaper~waveshaping with expressions
~y=~waveshaping expression. try something like "x+sin(x*pi*a)". available variables: a,b,c,d,e = the slider + sin(s below. t = time. x1,x2,y1,y2 = biquad state storage.
~rescale~rescales input before feeding it into expression
~a~variable to use in expressions
~b~variable to use in expressions
~c~variable to use in expressions
~d~variable to use in expressions
~e~variable to use in expressions



waveform~waveform display
~freq~frequency to sync display to. gets automatically set if you patch a note input into this module
~length~number of samples to capture
~draw gain~adjust waveform display scale



vocodercarrier~connect to "vocoder" or "bandvocoder" modules. send the synth audio into this module, and the voice audio into the vocoder module.



vocoder~FFT-based vocoder
~input~[no tooltip]
~carrier~[no tooltip]
~volume~[no tooltip]
~dry/wet~[no tooltip]
~fric thresh~[no tooltip]
~whisper~[no tooltip]
~phase off~[no tooltip]
~cut~[no tooltip]
~threshold~[no tooltip]
~attack~[no tooltip]
~release~[no tooltip]



takerecorder~[abandoned module, possibly broken]
~start~[todo]



stutter~captures and stutters input
~half note~half note stutter
~quarter~quarter note stutter
~8th~8th note stutter
~16th~16th note stutter
~32nd~32nd note stutter
~64th~64th note stutter
~reverse~reversed half note stutter
~ramp in~stutter with speed climbing up from zero to one
~ramp out~stutter with speed quickly falling to zero
~tumble up~accelerating stutter
~tumble down~decelerating stutter
~half speed~stutter at half speed, low pitched
~double speed~stutter at double speed, high pitched
~triplets~stutter on a triplet interval
~dotted eighth~stutter on a dotted eighth interval
~free~stutter with the settings specified by the following sliders
~free length~length in seconds for "free" stutter mode
~free speed~rate for "free" stutter mode


spectrum~display audio signal's spectral data



signalclamp~clamps an audio signal's value within a range
~min~minimum output value
~max~maximum output value



send~duplicate a signal and send it to a second destination
~amount~amount to send out the right-side cable
~crossfade~when true, output of the left-side cable is reduced as "amount" increases



samplergrid~record input onto pads, and play back the pads. intended to be used with an 64-pad grid controller.
~passthrough~should the incoming audio pass through to the output?
~vol~the output volume
~clear~when enabled, clears any pressed grid squares
~edit~enable controls to adjust recorded sample for last pressed grid square
~duplicate~what enabled, duplicates last pressed sample onto any pressed grid squares
~start~sample start
~end~sample end



samplecapturer~[work in progress]record audio to short clips. recording starts when audio passes a threshold.
~record~should we record?
~play~play this clip
~save~save this clip to a file
~delete~clear this clip



ringmodulator~[no tooltip]
~freq~[no tooltip]
~dry/wet~[no tooltip]
~volume~[no tooltip]
~glide~[no tooltip]



looperrewriter~rewrites the contents of a looper with received input, to help you resample your own loops. attach the grey dot to a "looper" module.\n\nthe ideal way to use this module is to hook the "looper" directly up to a "send", hook the leftmost outlet of the "send" up to your effects processing (like an "effectchain"), hook the effect processing up to this "rewriter", and then also connect the rightmost outlet of the "send" up to this "rewriter"
~ go ~rewrite the connected looper, and if that looper is connected to a send, set that send to output only to the right outlet
~new loop~start recording a dynamic loop length. press "go" when you want to rewrite it to the looper. this will also change bespoke's global tempo to match this new loop, so it's quite powerful and scary! click it again to cancel.



pitchchorus~output pitch-shifted version of input audio, based on input midi notes. pitch 60 is the reference pitch used.
~passthrough~should the original audio pass through?



panner~pan audio left and right. also, converts a mono input to a stereo output.
~pan~amount to send signal to the left and right channels. a value of .5 is centered.
~widen~delay a channel by this many samples. results in a pan-like effect where the sound seems to come from from a direction.



multitapdelay~[no tooltip]
~dry~[no tooltip]
~display length~[no tooltip]
~delay *~[no tooltip]
~gain *~[no tooltip]
~feedback *~[no tooltip]



looperrecorder~[no tooltip]
~1~capture the last measure to the currently-targeted looper
~2~capture the last 2 measures to the currently-targeted looper
~4~capture the last 4 measures to the currently-targeted looper
~8~capture the last 8 measures to the currently-targeted looper
~length~[no tooltip]
~2xtempo~[no tooltip]      
~.5tempo~[no tooltip]
~target~[no tooltip]
~mode~[no tooltip]
~delay~[no tooltip]
~clear~[no tooltip]
~free rec~[no tooltip]
~cancel free rec~[no tooltip]
~orig speed~[no tooltip]
~snap to pitch~[no tooltip]
~resample~[no tooltip]
~resample & set key~[no tooltip]



looper~loop input audio. use with a "looperrecorder" for full functionality.
~num bars~loop length in measures
~clear~clear the loop audio
~volume~output volume
~b~[no tooltip]
~ m ~[no tooltip]
~decay~[no tooltip]
~save~save this loop to a wav file
~mute~[no tooltip]
~commit~[no tooltip]
~capture~[no tooltip]
~write~[no tooltip]
~swap~[no tooltip]
~copy~[no tooltip]
~2x~[no tooltip]
~.5x~[no tooltip]
~undo~[no tooltip]
~offset~[no tooltip]
~set~[no tooltip]
~scrspd~[no tooltip]
~scr~[no tooltip]
~fourtet~[no tooltip]
~fourtetslices~[no tooltip]
~beatwheel on~[no tooltip]
~beatwheel pos right~[no tooltip]
~beatwheel depth right~[no tooltip]
~beatwheel pos left~[no tooltip]
~beatwheel depth left~[no tooltip]
~beatwheel single measure~[no tooltip]
~pitch~[no tooltip]
~auto~[no tooltip]
~resample for tempo~[no tooltip]



lissajous~[no tooltip]
~scale~[no tooltip]



inverter~multiply a signal by -1. enables some pretty interesting effects when used with sends, to subtract out parts of signals when recombined.



input~get audio from input source, like a microphone
~ch~which channel (or channels, if you want stereo) to use



gain~increase or reduce a signal's volume
~gain~amount to adjust signal



freqdelay~[no tooltip]
~dry/wet~[no tooltip]
~delay~[no tooltip]
~amount~[no tooltip]
~interval~[no tooltip]
~short~[no tooltip]
~in~[no tooltip]
~dry~[no tooltip]
~echo~[no tooltip]



feedback~[no tooltip]
~delay~[no tooltip]
~amount~[no tooltip]
~interval~[no tooltip]
~short~[no tooltip]
~in~[no tooltip]
~dry~[no tooltip]
~echo~[no tooltip]



eq~multi-band equalizer, to adjust output levels at frequency ranges
~enabled*~enable this band?
~type*~what type of filter should this band use
~f*~frequency cutoff for this band
~g*~gain for this band
~q*~resonance for this band



effectchain~container to hold a list of effects, applied in series. the effects can be easily reordered with the < and > buttons, and deleted with the x button. hold shift to expose a x button for all effects.
~volume~output gain
~effect~select which effect to add
~mix*~wet/dry slider for this effect
~<~move this effect to earlier in the chain
~>~move this effect to later in the chain
~x~delete this effect



dcoffset~add a constant offset to an audio signal
~offset~amount of offset to add



bandvocoder~frequency band-based vocoder. this must be paired with a "vocodercarrier" module. voice should be routed into this module, and a synth should be patched into the vocodercarrier.
~input~[no tooltip]
~carrier~[no tooltip]
~volume~[no tooltip]
~dry/wet~[no tooltip]
~max band~[no tooltip]
~spacing~[no tooltip]
~bands~[no tooltip]
~f base~[no tooltip]
~f range~[no tooltip]
~q~[no tooltip]
~ring~[no tooltip]



autotalent~[abandoned module, possibly broken]autotune using the "autotalent" code
~A~[todo]
~Bb~[todo]
~B~[todo]
~C~[todo]
~Db~[todo]
~D~[todo]
~Eb~[todo]
~E~[todo]
~F~[todo]
~Gb~[todo]
~G~[todo]
~Ab~[todo]
~amount~[todo]
~smooth~[todo]
~shift~[todo]
~scwarp~[todo]
~lfoamp~[todo]
~lforate~[todo]
~lfoshape~[todo]
~lfosymm~[todo]
~lfoquant~[todo]
~formant correct~[todo]
~fwarp~[todo]
~mix~[todo]
~set from scale~[todo]



audiorouter~selector for switching where audio is routed to. connect to targets to add them to the list.
~route~audio destination



audiometer~sets a slider to an audio level's volume. useful to map a midi display value to.
~level~the input audio level. hook this up to an LED-display midi control to see the value displayed on your controller.



signalgenerator~basic oscillator signal
~freq~signal frequency
~freq mode~[no tooltip]
~osc~oscillator type
~pw~pulse width (or shape for non-square waves)
~slider~[no tooltip]
~ramp~[no tooltip]
~sync~[no tooltip]
~syncf~[no tooltip]
~soften~[no tooltip]
~shuffle~[no tooltip]
~mult~multiplier for frequency
~phase~[no tooltip]
~vol~[no tooltip]
~detune~[no tooltip]



seaofgrain~granular synth, playable with sliders or MPE input
~load~load a sample file
~volume~output volume
~offset~where to start view of the sample
~display length~amount of sample to view
~keyboard base pitch~midi pitch that represents the start of the sample
~keyboard num pitches~amount of pitches to assign across the sample
~gain *~volume of this voice
~pos *~position of this voice within the sample
~overlap *~number of overlapping grains
~speed *~speed of grain playback
~len ms *~length of each grain in milliseconds
~pos r *~randomization of grain start point
~speed r *~randomization of grain speed
~spacing r*~randomization of time between grains
~octaves *~should we add octaves and fifths?
~width *~stereo width of grain placement



sampler~very basic polyphonic pitched sample player and recorder
~vol~[no tooltip]
~env~[no tooltip]
~envA~[no tooltip]
~envD~[no tooltip]
~envS~[no tooltip]
~envR~[no tooltip]
~rec~[no tooltip]
~thresh~[no tooltip]
~pitch~[no tooltip]
~passthrough~[no tooltip]



sampleplayer~sample playback with triggerable cue points, clip extraction, and youtube search/download functionality. if you have a youtube URL in your clipboard, a button will appear to allow you to download the audio.
~volume~output gain
~speed~current playback speed
~samples~select a sample from the current sample bank [sample banks not currently well-supported]
~yt:~search youtube for this string
~play~start playing from the current playhead
~pause~pause playing and leave playhead where it is
~stop~stop playing and reset playhead
~loop~wrap playhead to beginning when it reaches end
~load~show a file chooser to load a sample
~trim~discard all audio outside the current zoom range
~youtube~download the audio of the youtube URL currently on your clipboard
~cue start~start point in seconds of the current cue
~cue length~length in seconds of the current cue. a value of zero will play to the end of the sample.
~cue speed~playback speed of the current cue
~cuepoint~sets the current cue to edit
~click sets cue~when true, clicking on the waveform will set the start position of the current cue
~select played~when true, any cue point played via incoming notes will become the current cue
~play cue~play the current cue
~show grid~show a quarter note grid (when zoomed in far enough)
~searchresult*~click to download this youtube search result. downloading long videos may take a while.
~4n~auto-slice 4 quarter notes, starting from the current cue
~8n~auto-slice 8 eighth notes, starting from the current cue
~16n~auto-slice 16 sixteenth notes, starting from the current cue



sampleeditor~[abandoned work in progress, possibly broken] sample editor for creating loops
~volume~[todo]
~samples~[todo]
~play~[todo]
~loop~[todo]
~edit~[todo]
~start~[todo]
~end~[todo]
~num bars~[todo]
~off~[todo]
~quickstart~[todo]
~pad end~[todo]
~write~[todo]
~keep pitch~[todo]
~pitch shift~[todo]



samplecanvas~sample arranging view
~measures~[no tooltip]
~interval~[no tooltip]
~canvas~canvas of samples. drag and drop samples onto here. canvas controls:\n-hold shift and drag a sample to duplicate\n-hold alt to drag a sample without snapping\n-hold ctrl while dragging to snap to an interval\n-hold shift and scroll to zoom\n-hold alt and grab empty space to move slide the canvas view\n-hold ctrl and grab empty space to zoom the canvas view
~timeline~control loop points
~scrollh~[no tooltip]
~scrollv~[no tooltip]
~delete~delete highlighted elements
~view rows~number of visible rows
~clear~delete all elements
~drag mode~direction that elements can be dragged



razor~[old module, work in progress] mono-voice additive synth
~partials~number of sine waves to use
~bump freq *~[no tooltip]
~amt *~[no tooltip]
~decay *~[no tooltip]
~A~[no tooltip]
~D~[no tooltip]
~S~[no tooltip]
~R~[no tooltip]
~harmonics~[no tooltip]
~pow falloff~[no tooltip]
~neg harmonics~[no tooltip]
~harshness cut~[no tooltip]
~manual control~[no tooltip]
~amp*~[no tooltip]
~detune*~[no tooltip]
~reset detune~[no tooltip]



oscillator~polyphonic enveloped oscillator. modulations (with MPE support): modwheel closes filter further (if filter is enabled), pressure decreases detune amount
~osc~oscillator type
~mult~multiply frequency of incoming pitch
~pw~pulse width (or shape for non-square waves)
~shuffle~stretches and squeezes every other cycle of the waveform
~detune~when unison is 1, detunes oscillator by this amount. when unison is 2, one oscillator is tuned normally and the other is detuned by this amount. when unison is >2, oscillators are randomly detuned within this range.
~phase~phase offset of oscillator, and phase offset between unison voices. useful to patch into with a very fast modulator, to achieve phase modulation.
~unison~how many oscillators to play for one note
~width~controls how voices are panned with unison is greater than 1
~envmode~switches below ADSR between showing volume and filter envelopes
~env~[none]
~envA~volume envelope attack
~envD~volume envelope decay
~envS~volume envelope sustain
~envR~volume envelope release
~envfilter~[none]
~envfilterA~filter envelope attack
~envfilterD~filter envelope decay
~envfilterS~filter envelope sustain
~envfilterR~filter envelope release
~len~length of above ADSR display
~vol~this oscillator's volume
~f~frequency cutoff of lowpass filter
~q~resonance of lowpass filter
~sync~turns on "sync" mode, to reset the phase at syncf's frequency
~syncf~frequency to reset the phase, when "sync" is enabled
~vel2vol~how much should the input velocity affect the output volume?
~vel2env~how much should the input velocity affect the speed of the volume and filter envelopes?
~adsr len~view length of ADSR controls



notesinger~output a note based on a detected pitch
~oct~octave to adjust output pitch by



metronome~beeps to the beat
~vol~metronome volume



karplusstrong~polyphonic plucked string physical modeling synth
~vol~output volume
~invert~should the feedback invert?
~filter~amount to filter resonance
~feedback~amount of feedback for resonance
~source type~audio to use for excitation
~x freq~frequency of excitation audio
~x att~fade in time for excitation audio
~x dec~fade out time for excitation audio
~type~biquad filter style
~f~filter cutoff
~q~filter resonance
~g~filter gain



fmsynth~polyphonic fm synthesis
~adsroscA~
~adsroscD~
~adsroscS~
~adsroscR~
~adsrharmA~
~adsrharmD~
~adsrharmS~
~adsrharmR~
~adsrmodA~
~adsrmodD~
~adsrmodS~
~adsrmodR~
~adsrharm2A~
~adsrharm2D~
~adsrharm2S~
~adsrharm2R~
~adsrmod2A~
~adsrmod2D~
~adsrmod2S~
~adsrmod2R~
~harmratio~harmonic ratio of first-order modulator to input pitch
~harmratio2~harmonic ratio of second-order modulator to input pitch
~tweak~multiplier to harmonic ratio for first-order modulator
~mod~amount to modulate first-order modulator
~tweak2~multiplier to harmonic ratio for second-order modulator
~mod2~amount to modulate second-order modulator
~vol~the output volume
~phase0~phase offset for base oscillator
~phase1~phase offset for first-order modulator
~phase2~phase offset for second-order modulator



drumsynth~oscillator+noise drum synth
~vol~the output volume
~edit~display parameters for each hit
~vol*~oscillator volume
~freqmax*~oscillator start frequency
~freqmin*~oscillator end frequency
~type*~oscillator type
~cutoffmax*~filter start cutoff frequency
~cutoffmin*~filter end cutoff frequency
~q*~filter resonance
~adsrtone*~
~adsrtone*A~
~adsrtone*D~
~adsrtone*S~
~adsrtone*R~
~adsrfreq*~
~adsrfreq*A~
~adsrfreq*D~
~adsrfreq*S~
~adsrfreq*R~
~noise*~noise volume
~adsrnoise*~
~adsrnoise*A~
~adsrnoise*D~
~adsrnoise*S~
~adsrnoise*R~



drumplayer~sample player intended for drum playback
~vol~the output volume
~speed~global sample speed multiplier
~speed rnd~global sample speed randomization amount
~edit~show pads for editing
~aud~scroll to audition samples in the current pad's head category, or a directory last dropped onto a pad
~mono~force output to mono
~shuffle~random is samples, speeds, and pans
~quantize~quantize input to this interval
~repeat~if quantizing, should held notes repeat at that interval?
~vol *~volume of sample 
~speed *~speed of sample
~pan *~stereo pan position of sample
~widen *~stereo delay of sample to create width
~single out *~should the sample have its own individual output?
~linkid *~if linkid is not -1, silence any other sample with a matching linkid (useful for linking open and closed hats)
~envelope *~should we apply a volume envelope to the sample?
~view ms *~envelope view length in milliseconds
~hitcategory*~folder to choose from, when clicking the "random" button. these folders are found in the data/drums/hits/ directory
~envelopedisplay *A~envelope attack
~envelopedisplay *D~envelope decay
~envelopedisplay *S~envelope sustain
~envelopedisplay *R~envelope release
~test *~play this sample
~random *~choose a random sample from the selected hitcategory



beats~[abandoned module, possibly broken] multi-loop player



whitekeys~remap the white keys that correspond to the C major scale to instead play the current global scale



volcabeatscontrol~outputs MIDI data to control varios aspects of the KORG volca beats drum machine
~clap speed~
~clave speed~
~agogo speed~
~crash speed~
~stutter time~
~stutter depth~
~tom decay~
~closed hat decay~
~open hat decay~
~hat grain~
~level *~



vibrato~add rhythmic oscillating pitch bend to notes
~vibrato~amount of pitch bend to add
~vibinterval~speed of pitch bend oscillation



velocitystepsequencer~[no tooltip]
~interval~[no tooltip]
~len~[no tooltip]
~downbeat~[no tooltip]
~vel*~[no tooltip]



velocitysetter~set a note's velocity to this value
~vel~velocity to use
~rand~randomness to reduce output velocity by



velocityscaler~scale a note's velocity to be higher or lower
~scale~amount to multiply velocity by



unstablepressure~mutate MPE pressure with perlin noise
~amount~amount of mutation
~warble~slow-layer mutation rate
~noise~fast-later mutation rate



unstablepitch~mutate MPE pitchbend with perlin noise
~amount~amount of mutation
~warble~slow-layer mutation rate
~noise~fast-later mutation rate



unstablemodwheel~mutate MPE slide with perlin noise
~amount~amount of mutation
~warble~slow-layer mutation rate
~noise~fast-later mutation rate



sustainpedal~keeps input notes sustaining
~sustain~should we hold the input notes?



chordholder~keeps any notes pressed at the same time sustaining, until new notes are pressed
~clear~stop the held notes



scaledetect~[no tooltip]
~reset~[no tooltip]
~matches~[no tooltip]



scaledegree~transpose input based on current scale
~degree~amount to transpose



quantizer~delay inputs until the next quantization interval
~quantize~the quantization interval
~repeat~when holding a note, should we repeat it every interval?



previousnote~when receiving a note on, output the prior note on that we received



pressuretovibrato~takes midi pressure modulation input and changes it to vibrato, using pitch bend
~vibrato~amount of vibrato
~vibinterval~vibrato speed



pressuretomodwheel~takes midi pressure modulation input and changes it to modwheel modulation



pressure~[no tooltip]
~pressure~[no tooltip]



portamento~only allows one note to play at a time, and uses pitch bend to glide between notes
~require held~if enabled, only glide to a new note if an old note is held. otherwise, always glide, based upon the prior input note.
~glide~time to glide, in milliseconds



pitchsetter~set an incoming note to use a specified pitch
~pitch~the pitch to use



pitchpanner~[no tooltip]
~left~[no tooltip]
~right~[no tooltip]



pitchdive~[no tooltip]
~start~[no tooltip]
~time~[no tooltip]



pitchbender~[no tooltip]
~bend~[no tooltip]



notewrap~[no tooltip]
~min~[no tooltip]
~range~[no tooltip]



notetransformer~[no tooltip]
~tone *~[no tooltip]



notesustain~[no tooltip]
~duration~[no tooltip]



notestrummer~[no tooltip]
~strum~[no tooltip]



notestream~view are stream of notes as they're played
~reset~reset the pitch range



noterouter~allows you to control where notes are routed to using a UI control. to add destinations to the list, patch them as a target
~route~the noterouter's destination module



noterangefilter~only allows notes through within a certain pitch range
~min~minimum pitch allowed
~max~maximum pitch allowed



notepanrandom~sets a note's pan to random values, for the internal synths that support panned notes
~spread~amount of randomness
~center~center pan position



notepanner~sets a note's pan, for the internal synths that support panned notes
~pan~pan position, .5 is centered



notepanalternator~sets a note's pan, alternating between two values, for the internal synths that support panned notes
~one~pan position, .5 is centered
~two~pan position, .5 is centered



noteoctaver~transpose a note by octaves
~octave~number of octaves to raise or lower



notelatch~[no tooltip]



notehumanizer~add randomness to timing and velocity
~time~amount of timing randomness, in milliseconds.
~velocity~amount of velocity randomness



notehocket~sends notes to a random destinations
~weight *~chance that note goes to this destination



notegate~allow or disallow notes to pass through
~open~if notes are allowed to pass



noteflusher~send a note-off for all notes
~flush~click to flush notes



notefilter~only allow a certain pitches through
~C-2 (0)~
~C#-2 (1)~
~D-2 (2)~
~D#-2 (3)~
~E-2 (4)~
~F-2 (5)~
~F#-2 (6)~
~G-2 (7)~



notedisplayer~show input note info



notedelayer~delay input notes by a specified amount
~delay~amount of time to delay, in measures



notechance~randomly allow notes through
~chance~probability that a note is allowed



modwheeltovibrato~convert note mod wheel input rhythmic pitch bend
~vibrato~amount of pitch bend
~vibinterval~rate of vibrato



modwheeltopressure~swaps expression input to midi pressure in the output



modwheel~adds an expression value to a note
~modwheel~expression level



modulationvizualizer~display MPE modulation values for notes



midioutput~[no tooltip]
~controller~[no tooltip]



midicapturer~[no tooltip]



linnstrumentcontrol~[no tooltip]
~controller~[no tooltip]
~decay~[no tooltip]
~blackout~[no tooltip]
~octaves~[no tooltip]
~guitar lines~[no tooltip]



kicker~[no tooltip]



gridnotedisplayer~[no tooltip]



chorder~takes an incoming pitch and plays additional notes to form chords
~diatonic~[no tooltip]
~chord~[no tooltip]
~inversion~[no tooltip]



chorddisplayer~[no tooltip]



capo~shifts incoming notes by semitones
~capo~number of semitones to shift



arpeggiator~arpeggiates held notes. there are several vestigial features in this module that should be cleaned up.
~interval~arpeggiation rate
~use held~base arpeggiation upon input notes
~restart~restart pattern on new input note
~arpentry~input a pattern of pitches
~easy~generate a random pattern
~repeat~if we should repeat notes, or just hold
~r len~[no tooltip]
~r range~[no tooltip]
~r rests~[no tooltip]
~r holds~[no tooltip]
~step~[no tooltip]
~octaves~[no tooltip]
~downbeat~[no tooltip]
~view grid~[no tooltip]
~upbeats~[no tooltip]
~scale~[no tooltip]



titlebar~
~load state~load a saved .bsk file to restore state
~save state~save current state as .bsk file, to be restored later
~reset layout~reset to the layout specified in "layout" in userprefs.json
~write audio~write the last 30 minutes of audio to data/recordings/
~ ? ~
~lookahead (exp.)~use lookahead scheduling, which is necessary for scriptmodule. gets automatically turned on when you use scriptmodule. so far, lookahead scheduling seems to not create any issues, but leaving this checkbox here just in case.
~autosave~every time a new module is added, trigger a save to data/savestate/autosave/, to help reload state in the event of a crash. can be quite slow if using modules with large samples.



vstplugin~a VST plugin instance
~vol~adjust the output volume
~program change~send a program change message to the VST instance
~open~show the plugin window
~show parameter~select parameters to display them, so they can be adjusted from within bespoke's interface



transport~controls tempo and current time position
~tempo~global tempo, in beats per minute
~ + ~increase tempo by one
~ - ~decrease tempo by one
~swing~where the halfway point of musical time within the swing interval should fall. a value of .5 represents no swing.
~swing interval~interval over which to apply swing
~timesigtop~time signature top value
~timesigbottom~time signature bottom value
~reset~reset timeline to zero
~ < ~nudge current time backward
~ > ~nudge current time forward
~set tempo~



splitter~splits a stereo signal into two mono signals, or duplicates a mono signal



scale~controls the global scale used by various modules
~root~root note of the scale
~scale~which set of notes to use
~degree~
~intonation~which method to use to tune the scale
~tet~how many semitones make up an octave
~tuning~what frequency does the pitch defined in "note" represent?
~note~the pitch that maps to the frequency defined in "tuning"



output~route audio in here to send it to an output channel (your speakers or audio interface)
~ch~channel (or channels, if you want stereo) to send audio to



gain~adjusts volume of audio signal
~gain~amount to adjust signal. a value of 1 will cause no change to the signal.



biquad~filter using biquad formula
~type~filter type
~F~frequency cutoff
~Q~resonance
~G~gain



bitcrush~reduce sample resolution and sample rate for lo-fi effects
~crush~sample resolution reduction
~downsamp~sample rate reduction



butterworth~filter using the butterworth formula
~F~frequency cutoff
~Q~resonance



compressor~try to keep volume at a certain level
~threshold~threshold where gain should start to be reduced
~ratio~how much gain reduction to apply when the single passes the threshold
~attack~speed to apply gain reduction
~release~speed to remove gain reduction
~output~makeup gain, to increase volume



dcremover~high pass filter with a 10hz cutoff to remove DC offset, to keep signal from drifting away from zero



delay~echoing delay
~delay~delay in milliseconds
~amount~amount of delay that returns
~interval~sets delay length to a musical duration
~short~shortcut to shrink the range of the delay slider, to allow for audible-rate delays and comb filter sounds
~in~are we accepting input signal?
~dry~should the dry signal pass through, or just the delayed signal?
~echo~should the delayed signal feed back into the delay?



distortion~waveshaping distortion
~type~style of distortion to apply
~clip~cutoff point of distortion, lower values result in more extreme distortion
~preamp~signal gain before feeding into distortion



basiceq~simple multiband EQ
~grid~controls the level of each band
~even~reset EQ



formant~[unfinished, broken]filter focused on controlling formants
~ee~[todo]
~oo~[todo]
~i~[todo]
~e~[todo]
~u~[todo]
~a~[todo]



freeverb~reverb using the "freeverb" algorithm
~room size~controls the length of the reverb, a higher value means longer reverb
~damp~high frequency attenuation; a value of zero means all frequencies decay at the same rate, while higher settings will result in a faster decay of the high frequency range
~wet~amount of reverb signal
~dry~amount of untouched signal
~width~stereo width of reverb



gate~only allow signal in when it's above a certain threshold. useful to eliminate line noise, or just as an effect.
~threshold~volume threshold to open up the gate
~attack~speed at which gate blends open
~release~speed at which gate blends closed



granulator~granulate live input
~dry~amount of dry signal to allow through
~autocapture~freeze input at this interval
~frz~freeze the current recorded buffer
~pos~playback position within the buffer
~overlap~number of overlapping grains
~speed~speed of grain playback
~len ms~length of each grain in milliseconds
~pos r~randomization of grain start point
~spd r~randomization of grain speed
~spa r~randomization of time between grains
~g oct~should we add octaves and fifths?
~width~stereo width of grain placement



muter~mute an incoming signal
~pass~when true, the signal is allowed through
~ms~ramp time to mute/unmute signal



noisify~multiply input signal by white noise
~amount~amount of noise to apply
~width~how frequently a new noise sample should be chosen



pitchshift~shifts a signal's pitch
~ratio~amount to pitchshift by (a value of 1 indicates no shift)
~ratioselector~shortcuts to useful pitch ratios



pumper~dip the volume of a signal rhythmically, to emulate a "pumping sidechain" effect
~amount~amount to lower volume
~length~length of pump
~curve~how the volume returns
~attack~how sharply the volume drops
~interval~the rate to pump



tremolo~modulate signal's volume rhythmically
~amount~amount to lower volume
~offset~offsets LFO phase
~duty~pulse width of LFO
~interval~speed of LFO
~osc~LFO oscillator type

