Elevate your creative process with HH7 Usine Hollyhock! Experience seamless creation with the new Kiosk Mode, perfect for interactive installations and educational purposes. Unleash your imagination with the innovative Laser Engine and explore a plethora of new modules designed for audio, MIDI, video, etc. Enjoy a refreshed user interface for an intuitive and streamlined experience. Dive into the revolutionary Procedures for unparalleled CPU optimization and thread safety.
HH7 is your gateway to next-level show control artistry, redefining the boundaries of digital creativity.
Usine has been significantly enhanced for greater CPU efficiency, featuring a lighter and color-rich graphical user interface. This latest update includes over 200 new features, including innovative module inlets, various modules, enhanced interfaces, and more.

TODO
Usine Remote Control allows you to control your Usine workspace remotely from any web browser. This feature enables you to:
The remote interface uses WebSocket technology for real-time, bidirectional communication between Usine and the web interface.

Chunks are Usine's global data storage system. They let you store, retrieve, and share data between modules — even across different patches and racks. Think of them as a shared dictionary that any module in your workspace can read from and write to.
Discovers connected devices on a local network using the MDNS no configuration protocol also called Bonjour.
Registers this device as a service using the MDNS no configuration protocol also called Bonjour.
Searches for a value or sequence of values (pattern) in an array and replaces all occurrences with a new value or pattern.
This module performs audio analysis and outputs a variety of descriptors characterizing the sound. The simple version computes a set of commonly used descriptors, suitable for general applications. The complex version extracts a more extensive set of features, mainly used in sound analysis contexts.
Monophonic audio-to-MIDI converter. Analyzes an audio input using the McLeod Pitch Method (MPM) with onset detection and a pitch stability state machine, then outputs corresponding MIDI note-on messages with velocity and optional pitch bend for micro-tuning.
Best suited for monophonic sources (voice, solo instrument). Detects one pitch at a time.
Detects audio transients and sends a trigger output. Uses dual envelope following with slope detection for minimal latency. Works on percussive sources (drums, beats) as well as softer onsets (voices, strings).
Chromatic tuner using MPM pitch detection. Displays the closest note name, MIDI note number, cents deviation from the nearest semitone, and the detected frequency.
Best suited for monophonic sources (single instrument or voice). Reference pitch is A4 = 440 Hz.
Audio dynamics processor with an external sidechain input. The dynamics processing is driven by the sidechain signal instead of the input signal itself.
Supports four modes: downward compression, upward compression, downward expansion and upward expansion.
Envelope filter (Auto-Wah) inspired by Mu-Tron III. A resonant filter whose cutoff frequency follows the input signal's amplitude.
Comb filter with feedforward and feedback paths. Creates equally-spaced notches or resonant peaks in the spectrum. Useful for flanging, Karplus-Strong synthesis, and metallic resonance effects.
Diode Ladder filter (Roland TB-303 style). A 4-pole resonant low pass filter with soft diode saturation, producing the characteristic squelchy acid sound.
Dynamic EQ / Envelope Filter. An envelope follower detects the input signal's amplitude and uses it to modulate a filter's frequency (auto-wah) or gain (dynamic EQ / de-esser).
Multi-band equalizer with up to 64 bands. Each band can independently be one of 8 filter types: low pass, high pass, band pass, notch, low shelf, high shelf, peaking (Cook biquad), or plateau (cascaded Butterworth shelving). All band parameters are also exposed as arrays for programmatic control.

Morphable formant filter with X/Y vowel plane. Smoothly interpolates between vowel formants (A, E, I, O, U) using a 2D position for continuous vocal timbre control.
Unlike the basic Formant filter which switches discretely between vowels, this module uses inverse-distance interpolation across a vowel trapezoid to blend formant frequencies continuously.
Korg MS-20 style Sallen-Key filter with asymmetric diode clipping in the feedback path. Known for its aggressive, screaming resonance character.
Oberheim SEM (Synthesizer Expander Module) state variable filter. A smooth, musical 2-pole SVF with continuous morphing between filter types.
Modal resonator bank using parallel bandpass filters tuned to harmonic or inharmonic partials. Produces bell-like, metallic, drum-like, or string-like resonances when excited by impulses or audio signals.
Spectral transient/steady-state separator. Splits an audio signal into its transient (percussive) and steady-state (tonal) components using Fitzgerald median filtering on the STFT magnitude spectrogram, then crossfades between them.
Karplus-Strong waveguide string model. Simulates a plucked string using a tuned delay line with lowpass damping in the feedback loop.
Works both as a resonant filter (feed any audio in) and as a physical modelling synthesizer (feed noise bursts or impulses to excite the string).
BBD-style flanger with LFO-modulated short delay line and feedback.
Analog-style octave divider (-1 octave). Produces a sub-octave signal by multiplying the input waveform by a smoothed flip-flop that toggles at zero crossings.
Pitch shifter with three selectable algorithms: Granular (overlap-add), Phase Vocoder (FFT-based), and Delay Crossfade (4-tap delay line, H910 style).
Ring modulator effect. Multiplies the input signal by an internal sine oscillator to produce sum and difference frequencies.
Leslie rotary speaker emulation. Crossover split into horn and rotor with independent speed modulation and Doppler effects.
Spring reverb emulation (Fender-style). Cascaded allpass filters and comb filters with dispersion for the characteristic boingy sound.
Tape echo inspired by Roland Space Echo RE-201. Delay with wow/flutter, filtered feedback and tape saturation.
Converts an array of 0 and 1 values into a bitwise number.
Performs file operations on chunks such as import and export.
Returns the list of all items available in a chunk.
Returns the list of all available chunks.
Retrieve the values of items in a chunk.
Retrieve the values of items in a chunk and store the results in a single array.
Performs an operation on a chunk, such as modifying, deleting, or clearing items.
Sends a trigger when a chunk or a chunk item is modified.
Adjusts the saturation and luminance of a color. Saturation controls the color intensity (0 = grayscale, 1 = fully vivid). Luminance controls the brightness (0 = black, 0.5 = normal, 1 = white).
Maps X,Y coordinates to a color in the CIELAB perceptual color space. CIELAB is designed so that equal numerical changes correspond to roughly equal perceived color differences, making it useful for perceptually uniform color selection and smooth gradients. See Wikipedia: CIELAB color space.

Sets the alpha (opacity) of a color or color array without changing the RGB channels. An opacity of 0 makes the color fully transparent, and 1 makes it fully opaque.
Appends a string to a comma-text.
Returns the intersection (common elements) of two comma-text.
Sets string of a comma-text at a given index.
Displays the level of the incoming audio flow as a small LED.
Spring physics model. The output follows the input as if attached by a spring: it overshoots, bounces back, and eventually settles. The behavior is controlled by three physical parameters: stiffness, damping, and mass.
Use it for bouncy UI animations, physics-based modulation, or any transition that should feel elastic and organic rather than linear. With high damping, it acts as a smooth filter with no overshoot. With low damping, it creates visible oscillation around the target value.
Burst generator. Emits a rapid sequence of N triggers from a single input trigger. Useful for drum rolls, flams, granular triggering, and rhythmic fills.
Lorenz strange attractor. Generates three chaotic outputs (x, y, z) from a system of three coupled differential equations discovered by Edward Lorenz in 1963. The trajectory traces a butterfly-shaped path that never exactly repeats, producing complex, evolving modulation signals. Outputs are normalized to approximately 0..+1.
A chaotic attractor is a mathematical system whose output is deterministic but unpredictable over time. Unlike random noise, the signals are smooth and continuous, making them ideal for organic, never-repeating modulation of parameters like filters, panning, or effects.

Rossler strange attractor. Generates three chaotic outputs (x, y, z) from a system of three coupled differential equations discovered by Otto Rossler in 1976. Produces a simpler spiral pattern than Lorenz, with occasional large excursions on the Z axis. Outputs are normalized to approximately 0..+1.
Like the Lorenz attractor, this is a chaotic system: the output is smooth and continuous but never exactly repeats. The Rossler attractor tends to produce gentler, more predictable motion with sudden spikes on Z, making it useful for modulation that is mostly calm but occasionally surprising.

Generates Euclidean rhythms using Bjorklund's algorithm. Given a number of steps and a number of pulses, the algorithm spaces the pulses as evenly as possible across the steps. This simple rule produces many traditional rhythmic patterns found in world music (e.g., 3 pulses in 8 steps gives a Cuban tresillo, 5 in 8 gives a West African bell pattern).
Connect a clock or sequencer to next step and use trigger out to drive drum hits, notes, or any event.
Generates arrays from mathematical formulas. Creates lookup tables, waveshapes, and mapping curves procedurally. The output array is regenerated whenever a parameter changes. Useful for filling sequencer patterns, building wavetables, or generating test signals.
Drunk walk (random walk) data generator. At each step, the current value moves by a random amount within the step size range. The output stays between min and max.
Unlike plain random which jumps to any value, a random walk produces a wandering path where each new value is close to the previous one. This creates slowly drifting, unpredictable motion. Use it for organic modulation, generative melodies, or wandering parameter control.
Shift register sequencer inspired by the Music Thing Modular Turing Machine. A fixed-length binary register (a row of 0s and 1s) loops continuously. At each step, the current bit may randomly flip based on the lock parameter. The register contents are converted to a data value between min and max.
Think of it as a looping pattern that gradually mutates: at one extreme (lock = 1) the pattern repeats exactly; at the other extreme (lock = 0) every bit randomizes; in between, the pattern slowly evolves, creating semi-random sequences with a sense of repetition.
Bernoulli gate (coin-flip gate). Each incoming trigger is randomly routed to one of two outputs based on a probability setting. Use it for stochastic composition, random variation in drum patterns, or any situation where events should sometimes happen and sometimes not.
Automatically scales an input data flow to a specified output range. Tracks the input minimum and maximum over a configurable time window and maps the input to the desired output range. Useful when the input range is unknown or varies over time, such as sensor data, gesture input, or external controllers.
output = minOut + (maxOut - minOut) * (input - trackedMin) / (trackedMax - trackedMin)
Folds (reflects) input values at the min/max boundaries. When the value exceeds max, it bounces back toward min and vice versa, like a ball bouncing between two walls. This creates a mirrored zigzag pattern from a linear input.
For example, with min=0 and max=1: an input of 1.3 folds to 0.7, an input of 2.1 folds to 0.1, and an input of -0.4 folds to 0.4.
Wraps input values into the min/max range using modulo arithmetic. When the value goes past max, it cycles back to min and continues from there, and vice versa. This creates repeating cyclic behavior from a linear input.
For example, with min=0 and max=1: an input of 1.3 wraps to 0.3, an input of 2.7 wraps to 0.7, and an input of -0.2 wraps to 0.8.
Detects the slope direction of a data signal. Outputs separate gates for rising, falling, and steady states, plus triggers on peaks (local maxima) and troughs (local minima). Use it for envelope following, gesture analysis, direction detection, or firing events at turning points.
Snaps continuous input values to the nearest discrete step. The input is rounded to the nearest multiple of the step size. For example, with step = 0.25, an input of 0.3 snaps to 0.25 and an input of 0.6 snaps to 0.5. Use it to constrain smooth data to discrete levels, create staircase effects, or quantize controller output to specific intervals.
This module takes a sound folder as entry, analyzes all the audio files and outputs a SQL database containing all the audio descriptors of the files. See Audio Analysis Descriptors.
This module allows to represent in 2D a database made with the DatabaseCreation module. Using a cursor, the module will output a list of the nearest sample paths inside the radius and a coefficient. Moreover, the module resynthesize an audio texture corresponding to an average of the samples in the cursor. See database-creation
Gives the last LR outputs sent to the sound card during the previous cycle.
Opens the standard file save dialog to let the user choose a file.

Extracts files from a ZIP archive to a folder.
Creates a ZIP archive from files or a folder.
Returns the path to the system temporary folder.
Converts a float array to a pointer. See pointers
A circular buffer is a fixed-size buffer that treats its storage as if the end were connected back to the beginning, forming a logical ring.
A list is an ordered collection of elements where each item has a specific position, and duplicates are allowed. You can insert, remove, and access elements by their position (index), making it useful for sequences of data.
A queue is a linear data structure that stores elements in order and processes them using the FIFO principle: First In, First Out. New elements are added at the back (push,enqueue) and removed from the front (pop,dequeue), like a line of people waiting.
A stack is a linear data structure that follows the LIFO principle: Last In, First Out. Elements are added and removed only from the top (push/pop), like a stack of plates where you access the last one placed.
Samples and holds the input value. When a trigger is received, the current input value is captured and held at the output until the next trigger.
Swaps two flows. A becomes B and B becomes A.
Tracks and holds the input value. While the gate is open (ON), the output follows the input. When the gate closes (OFF), the last value is held.
Global array definition for trigger values, see global-array-data for more information about settings.
Gets the trigger state of a global array.
Sets a trigger on a global array.
Gets the value of a global-constant Color.
Global constant definition for a Color value.
Gets the value of a global-constant DATA.
Global constant definition for a DATA value.
Gets the value of a global-constant String.
Global constant definition for a String value.
Floating-point inequality with epsilon tolerance. The inverse of the Logical Same Value module: returns 1 if the absolute difference between A and B is greater than the epsilon threshold.
Floating-point equality with epsilon tolerance. Returns 1 if A and B are close enough to be considered equal (i.e. |A - B| <= epsilon). This avoids false negatives caused by floating-point rounding errors that can make Logical EQUAL unreliable with computed values.
Unipolar to bipolar conversion: out = 2 * in - 1. Maps a [0..1] range to [-1..+1].
Bipolar to unipolar conversion: out = (in + 1) / 2. Maps a [-1..+1] range to [0..1].
Generic inference module powered by ONNX Runtime. Loads any .onnx model file, reads its port layout from an optional model-description.md companion file, and maps model inputs/outputs to Usine ports in real time using a dedicated background worker thread.
ONNX (Open Neural Network Exchange) is an open format for machine-learning models. Models trained in PyTorch, TensorFlow, scikit-learn, or any compatible framework can be exported to
.onnxand run directly in Usine without any Python runtime. The module handles all type conversions between Usine flow types and the flat float tensors expected by the model.
Unsupervised learning module based on a Self-Organizing Map (Kohonen network). Trains a 2D grid of neurons to reflect the topology of high-dimensional input data, then outputs the Best Matching Unit (BMU) position and a color visualization of the learned map.
A Self-Organizing Map (SOM) is an unsupervised neural network that projects high-dimensional data onto a low-dimensional (here 2D) grid while preserving topological relationships. Nearby neurons in the grid respond to similar input patterns. Over time, the map develops regions that cluster similar data points together, making it useful for dimensionality reduction, anomaly detection, and visualizing data structure.
Converts a Markdown text or text file into an HTML text file. The input Markdown text can be provided either as a file or as a string.
This module can be used to generate HTML documentation or web pages from Markdown content.
Controls and monitors a network-enabled projector (or display) that supports the PJLink protocol, a vendor-independent control standard published by JBMIA. PJLink lets a single module drive projectors and displays from many different manufacturers (Epson, NEC, Panasonic, Sony, Christie, Barco, Sha...
3D sphere with constant screen-size (billboard behavior). The sphere automatically scales based on camera distance so it always appears the same size on screen, regardless of zoom or camera position.
Uses direct GPU drawing for maximum performance: all sphere instances are rendered by a single scene-graph node, making it suitable for large numbers of spheres (point clouds, particle-like visualizations, etc.).

3D cone object.

3D cube object.

3D cylinder object.

3D disk object.

3D ellipse object.

3D mesh object. A mesh is a collection of vertices, edges, and faces that define the shape of a 3D object.

Imports a 3D model and stores meshes into a chunk in order to be visualized by a object3d-mesh.
This module does not display anything. To display the model use the object3d-mesh module with a chunk-item-get module.
3D path object.

3D plane object.

Primitive to draw 3D lines.

Primitive to draw 3D points.

Primitive to draw 3D quads. Each quad is defined by 4 vertices (12 coordinate values) and rendered as two triangles.
Primitive to draw 3D triangles.

3D rectangle object.

3D round cube object.

3D sphere object.

3D stroke cube object.

3D text object.

Draw pixels into a panel at a position given by X,Y array.
![]()
Draws 3D polygons or lines in a panel with adjustable X, Y, Z positions and sizes.

Transforms coordinates used in the XY/XYZ modules into coordinates used in the 3D engine.
equivalent to the sub-patch below

Transforms coordinates used in the 3D engine into coordinates used in the XY/XYZ modules.
equivalent to the sub-patch below

Converts a pointer to a float array. See pointers
Pause the execution of a procedure and resume it later. When suspended, the procedure's patch restarts its processing loop from the beginning on each cycle without advancing — effectively freezing execution in place until an end suspend trigger is received.

Example of a procedure using the suspend mechanism to wait for an external event before proceeding with its execution.
Create a JSON string made of several fields. For Example {first-name: "John", age: 31, city: "New York"}.
Parses a JSON string and explode the fields values into outlets.
Returns the overall CPU load as reported by the operating system.
Executes a Windows PowerShell script and returns the result string.
Windows only.
Retrieves the value of a Usine object by its absolute object-remote-address or its object-user-remote-address ie usine.workspace.rack001.patch001.fader-1.

Displays a text or a gauge in the progress bar of Usine.

Returns a Color value read from the setup files.
Returns a DATA value read from the setup files.
Returns a String value read from the setup files.

Replaces a specific color (green/blue screen) in the foreground video with the background video. The first video input is the foreground and the second video input is the background.

Remaps the grayscale luminance of the video to a two-color gradient.

Rotates the hue of the video flow in HSL color space.

Adjusts input and output levels (shadows and highlights remapping) of the video flow.

Makes pixels transparent based on their luminance (brightness). Pixels within the threshold range become transparent.

Applies a 1D Look-Up Table from a .cube file to the video flow for color grading.

Adjusts the color temperature (white balance) of the video flow. Positive values warm the image (more red), negative values cool it (more blue).
Detects connected bright regions (blobs) in the video and outputs their positions and sizes as arrays.
Tracks the centroid position of a specific color in the video flow.
Computes a global scalar representing the overall amount of motion between consecutive video frames. Simpler and lighter than Optical Flow — outputs a single 0..1 value ideal for driving audio-reactive visuals or triggering events on movement.
Detects motion vectors across a grid by comparing consecutive frames. Outputs per-cell X and Y displacement arrays plus a global motion amount.
Video detection based on the Pose-Detection model of the tensor-flow library.


Displaces pixels of the first video input according to a second video input (displacement map). The color channels of the map control X and Y displacement.
Circular buffer of N video frames with position-based access for freeze, scrub, and slow-motion effects.

Generates standard color bar patterns (SMPTE, EBU, or grayscale ramp).

Generates a parametric checkerboard pattern, useful for calibration and testing.

Generates a gradient image (linear horizontal, linear vertical, radial, or conical).

Applies a bulge (inflate) or pinch (squeeze) distortion around a center point.
Reduces the resolution by a factor 2. A 1920x1080 pixels video becomes 960x540 pixels.

Creates a parametric kaleidoscope effect by mirroring a sector of the image around a center point.
Increases the resolution by a factor 2. A 1920x1080 pixels video becomes 3840x2160 pixels.
Converts the image between Cartesian and polar coordinate systems.

Applies sinusoidal wave distortions to the image, creating a ripple/water effect.

Applies a spiral/twirl distortion around the center of the image.

Blends two video inputs using standard compositing modes (multiply, screen, overlay, soft light, hard light, difference, exclusion, darken, lighten, color dodge, color burn).
Alternates periodically between the live video frame and a frozen frame, creating a strobe/stutter effect.

Renders the video as ASCII characters using an embedded 8x8 bitmap font. Each cell is mapped to a character from a density ramp (.:-=+*#%@) based on the average luminance.

Detects edges in the video using Sobel or Prewitt gradient operators. Outputs a grayscale or colored edge map.

Detects edges in the video using Sobel or Prewitt gradient operators. Outputs a grayscale or colored edge map.

Applies an emboss (relief) effect to the video flow, creating a 3D-like appearance.
Sharpens the video using an unsharp mask filter.
version 7.0.250121
Edit All Pages