Plays and records MIDI events and displays MIDI notes in a Piano-Roll style.

You can load/record up to 32 MIDI files in the same module and switch between them in real time.
Most of the parameters like reading position, loop-start, loop-end, can be driven by other modules (like random generators), to create unusual loop sequences.
The Piano Roll can be used to draw CC curves (8 curves per MIDI file are available), choose the mode CC curve 1, 2...8:

Draw the CC curve in the bottom area (in violet on the figure)

Select the CC curve value (none, CC1, CC2,...CC127).
If you record Control change with an external source, use the edit controls mode mode. Each Control change is on its number line (same as note number), here the CC 10 can be edited:

If you have several CC recorded, select a part of the edition with the mouse or several parts (with [Shift+mouse]), keep Shift pressed and move the mouse up/down.

Up to 32 MIDI files can be loaded at the same time and selected by the num file parameter or affected by a MIDI/key learn on the following buttons:

Current pattern number is visible in the bottom left corner.

To Zoom vertically use the mouse wheel in the piano area (1), to Zoom horizontally, use the mouse wheel in the bar numbers area (2).


Enable this option if you want to monitor the MIDI notes you are manipulating.

You can adjust the loop size and position in this area.
You can adjust the note velocity in the bottom area.

You can select several notes with the [shift] key, for example to move or copy this group.

For a more precise adjustment, select the notes you want to change and move the mouse with the [shift] key pressed.

For better editing precision, choose the edit quantize mode.
To move note vertically (change the pitch) without change
the time position, press the [alt] key.
The events inlet gives a direct access to events of the Piano-Roll in order to create unusual patterns. The array is a set of elements with the following structure.
Events are sorted by increasing beat position.
For example the following array [1,0.5,144,62,98] contains only one MIDI event.
see MIDI-implementation.
The following array [1,0.5,144,62,98,2,0,176,48,102]
contains two MIDI events:
event 1
event2
the MIDI Get Events Pianoroll.pat patch of the /library/help patches/ gives an example of how to get MIDI information from the event outlet.
Scripting language is a good candidate for event manipulation. See scripting.
Displays the Piano-Roll window.
MIDI input flow(s).
MIDI output flow(s).
Gain applied to the MIDI Notes.
Transposition applied to the MIDI Notes (in half-tones).
Plays the MIDI file in reverse mode: the cursor position moves from right to left. NOTE-ON events are transformed into NOTE-OFF NOTE-OFF events are transformed into NOTE-ON.
MIDI channel of the MIDI output.
Let passes only messages witch correspond to the channel filter. all channels: no channel filter, chan 1: only from channel 1, chan 2: only from channel 2
Play the MIDI file in loop mode.
Synchronization options.
Auto restart when master-synchro-panel restart.
Plays the current MIDI file.
This inlet works only when the play loop parameter is OFF.
Stops the playing of the MIDI file.
This inlet works only when the play loop parameter is OFF.
Determines the play button behavior. play-replay: first click plays the MIDI file (once) second click restarts the MIDI file play-stop: first click plays the MIDI file (once) second click stops the MIDI file.
Determines what happen when the parent patch is activated. do nothing: when parent patch is activated nothing is done, play once: when patch activated the file is played once.
Determines what happens when the sample or MIDI sequence reach it's end.
Starts or stops the recording of MIDI input.
Clears the MIDI events.
Recording mode, rewrite: clears old events and records MIDI notes as they are played, overdub: overdub record mode: keep the previous recorded notes.
Quantization of the recorded notes.
Quantization of the start/end recording.
Start reading position.
End reading position.
the file is read between the start and end position.
Current position in beat.
can receive data in input when the loop mode=pos inlet to play MIDI files in random access.
Maximum position of the current MIDI file. It is the length of the MIDI file in beat.
Current MIDI file number. You can change it in real time.
Gives only the name of the file, without the path and extension.
Click to add a name to this MIDI file.
Let pass input MIDI event thru the module. Helpful if you want to hear what you are recording.
Sends 1 value when the module is playing.
Sends 1 value when the module is recording.
Remember that, with the st rec quantiz option,
the recording can start/end after the rec buttons is pressed.
It can be helpful to know exactly when the module is recording.
Sends 1 value when the reading position restarts from the beginning of the loop.
Undo the last record or clear MIDI file.
Gives a direct access to MIDI events of the Piano-Roll. See above.
This input works only when the loop mode parameter is set to step by step
In forward mode, plays the MIDI file from the current position to the next NOTE ON event. In Reverse mode, it plays backward from the current position to the previous NOTE OFF event. See reverse.
Resets the next step reading position (in step by step mode) to the beginning.
Prompts for a file name and saves the midi file.
Prompts for a file name and loads a midi file.
Saves the file with the file name without prompt.
Loads the file with the file name without prompt.
Name of the file to save or to load.
Displayed caption of the object. Click to enter a new name.
Determines if parameters of this object are saved in the preset-panel.
Parameters of the this object can cross faded when you recall a preset in the grid.
Optional setting, does not appear on all objects.
Hint text displayed on mouse over.

Background color of the control.
transparent option must be OFF.
Blue background color example.
Determines if the background of the control is transparent or not.
Example, the first module is transparent.
Background color when the control is modified by a remote (MIDI,OSC,etc.).
Optional Filename of the background image.
Only PNG, JPEG and BMP formats are supported.
Use [ctrl+click] to reset.
Example on an panel-xy-pad.
Force the image file to adapt its displayed size to the size of the object.
Name of the svg file to draw in background.
Color used to fill the svg.
Color used to draw the contour of the svg.
For switches only, a second set of colors is used when the switch is OFF.
Width of the stroke used to draw the contour.
Use 0 to disable the drawing of the contour.
Margin used to draw the svg file.
When the svg is stretched to the destination size, determines if it keeps its aspect ratio or is stretch to fit to the target rectangle.
Displays or not the border of the control.
8 pixels border on an panel-xy-pad.
Sets the border width of the control in pixel.
8 pixels border on an panel-xy-pad.
Border color of the control.
a yellow border on an panel-xy-pad.
Border color when the control is OFF.
a black OFF border on a switch.
Border color when the control is ON.
a white ON border on a switch.
Thickness of rounded corners.
0 = no rounded corners.
Example on a panel-shape.
Enables or disables the drawing of a border when the control is selected with the mouse.
Displays or not the caption.
Example on a fader.
Caption alignment of the control, left, center or right.
Vertical alignment of the caption, center, top or bottom.
Example on knob: Center, top and bottom.
Example on switch.
Size multiplication factor applied to the caption font.
Example on switch.
Font name of the control caption.
Example with 3 different fonts on switch.
Color of the caption font.
Example on switch.
Italic style for caption font.
Example on switch.
Bold style for caption font.
Example on switch.
Underline style for the caption font.
Example on switch.
Number of frames in the background bitmap. See create your own knobs and faders.
Determines if the frames used in the background bitmap are aligned vertically or horizontally. See create your own knobs and faders.
Determines if the control can be modified by the user. When OFF, the mouse interaction and modifications are disabled so the user can't change the value.
When ON, the control receives mouse information (often called hit-test). This is useful when you want to detect mouse interactions on overlapping controls. Only the top control with receive mouse info ON will get the mouse events.
Sets or get the visibility of the control.
Global color of the control. Usine will choose the best contrasted colors according the global color.
When ON the global color of the control is not affected (is isolated) when the parent control global color changes.
Name of the snapshot (which contains the visual properties) loaded when the object is created. By default the snapshots files are located in /Resources/Templates/Design or /Config/Templates/Design.
the snapshot name can be without extension ie. LIGHT CLASS instead of LIGHT CLASS.tuknob_tab_design
Determines the Z-order of the control
Example with the first knob on top.
Opacity value of the control.
0 will give a totally transparent control so invisible.
Blur amount applied to the object.
Example of blur.
Be careful, the blur softness use shaders which are not supported by all graphic cards.
Can crash Usine.
Determines where the object is visible.
When the location is set to a container which doesn't exist in the patch, Usine try to find in parent patches, the first container available. If no container is available an error message is displayed.
Sets the control as an additional container so any other control can be placed into that container. The additional container is identified by a number.
a button inside a listbox
When ON, will also be visible in the interface-builder-panel.
Settings related to mouse, touch screen and drag&drop.
Gives the mouse state of the control:
In multi-touch environment, can be an array of [0..1] values.
Gives the mouse wheel speed and direction, -1,-2,-3,...=forward, 1,2,3,...=backward.
Enables or disable the mouse wheel action.
Sends a 1 value if the user has [dbl-clicked] on the control.
Determines if the mouse is active on the control.
Gives the mouse X position on the control in relative coordinates from 0=most-left to 1=most-right.
In multi-touch environment, can be an array of [0..1] values.
Gives the mouse Y position on the control in relative coordinates form 0=top to 1=bottom.
In multi-touch environment, can be an array of [0..1] values.
See manipulate-bitmaps.
Background bitmap input.
Use [CTRL + Click] to reset the input.
Background bitmap output.
Pressure value on touch-screens.
The pressure value is not available on all touch screens.
Gesture information.
In touch and multi-touch environment, returns an array of the fingers movements See multi-touch
When ON, the value of the control is reset automatically on mouse up.
See using-drag-drop.
Enables the drag on this control.
Enables or disables the drag&drop possibilities on this control.
Name of the dropped file.
Clears the latest dropped file name.
When ON, move up-down to rotate a knob, left-right when OFF.
Mode of the precision factor. Can be disabled or for touch screen only or always (touch screen and mouse).
Precision factor when the control is modified with a touch screen. Hi values for hi precision on touch screen.
Behavior of the control when it is modified with a touch screen.
When ON, the mouse wheel acts in circular mode.
Determines if the control can be modified with the [arrow] keys of the keyboard.
Sends a 1 value when the control is hovered with the mouse.
Determines the type of mouse cursor for the control.
Sends 1 when the control is selected.
Settings related to remote control assignation and learn.
Clear all the remotes assignations.
Enables or disables the remotes assignations.
Inverse the values received during the learn.
Quantization applied when state or value changes.
Determines when the remote assignations are active.
See binds-panel.
Clear the current bind assignation.
Set or get the bind name assignation.
ID of the bind control.
Caption of the bind control.
Clear the current bind control assignation.
Click on this button and move your MIDI controller to assign it.
Name of the device associated to the MIDI learn.
Use [Ctrl+Click] to delete the name association so the MIDI learn will react with all the connected devices.
MIDI channel used for the MIDI learn.
MIDI Control message number (ie. Control Change, Note, etc) used for MIDI learn.
MIDI message type used for the MIDI learn.
Choose between the 3 MIDI assignation modes in Usine.
The control react as defined in the Mackie Control protocol. (when the control receives a MIDI message, the MIDI message is sent back to the controller to update its display/leds/fader position).
Only if you have motorized MIDI controllers connected. Force Usine to send MIDI messages to the connected remote devices and get a MIDI feedback.
Soft Take Over if a control is moved on screen and it no longer matches the hardware control, the control will not update until the hardware control matches the onscreen value.
For instance say you have a line fader turned all the way up on the hardware, then you move the onscreen line fader to the bottom. With soft-takeover ON, the onscreen fader will not react to the line fader until you move the line fader all the way down to match the on screen value. The control will then latch on and will be active again.
System exclusive chain used for MIDI learn.
Click on this button and press a key (or a key combination ie. [ALT+E]) on your keyboard to assign it.
Key used for the key learn. Can be a key combination like [ALT+E], etc.
Determines how the Key learn affect the control, absolute or toggle.
Key code value of the key learn.(ex: A=65)
Curve type used for the mapping, log or exp, power curve, linear.

Mapping curve coefficient.
Maximum range of the assignation.
Minimum range of the assignation.
Click on this button and use a control of your OSC device to assign it.
OSC message used for the OSC-learn.
Choose here between 2 modes, real OSC values received or force the values into the [0..1] range.
This option is utilized to choose which tag to use when receiving multiple values simultaneously like in an XY values.
Time code learn, used to switch off a switch control.
Time code learn, used to trig an action or to switch on a switch control.
Name(s) of sources VCA's. One control can be controlled by several VCA at the same time so the VCA values are multiplied together.
To enter several names use comma separated string like VCA1,VCA2,VCA3.
See use-vca for more info.
Name(s) of the owner cluster(s). One control can be in many clusters at the same time, but be aware that you could have conflicts (different value sent at the same time).
To enter several names use comma separated string like CLUSTER1,CLUSTER2,CLUSTER3.
See use-clusters for more info.
Universe number assigned for remote.
Channel number assigned for remote.
settings related to size and position of controls.
Rotation angle of the control.
Rotates this control in vertical position.
Zoom scale of the control.
Determines is the control can be zoomed with the wheel mouse.
Top position of the control in pixels.
Left position of the control in pixels.
Height of the control in pixels.
Width of the control in pixels.
Horizontal position in % [0..1] relative to the parent panel.
Vertical position in % [0..1] relative to the parent panel.
Height in % [0..1] relative to the parent panel.
Width in % [0..1] relative to the parent panel.
Determines if the control can be resized with the resize grip.
Top position in pixels in the interface-builder-panel.
Left position in pixels in the interface-builder-panel.
Width in pixels in the interface-builder-panel.
Height in pixels in the interface-builder-panel.
Determines if the control is movable on X axis.
Determines if the control is movable on Y axis.
When ON the control stays inside the parent on X axis.
When ON the control stays inside the parent on Y axis.
Determines if the control can be resized on its left hand.
Determines if the control can be resized on its right hand.
Determines if the control can be resized on its top hand.
Determines if the control can be resized on its bottom hand.
See physics-engine
Enables physics-engine in this panel.
The physics speed of the control in physics-engine.
When ON, the physics-engine starts with a random speed for each child controls.
When ON, all controls have the same masses in the physics-engine.
The position control is not affected by the physics-engine.
Friction factor in the physics-engine.
Energy conservation coefficient on collision.
Gravity factor on the X axis.
Gravity factor on the Y axis.
Position of the object when the physics engine is reset on X axis.
Position of the object when the physics engine is reset on Y axis.
Process to reset the position of the control in the physics-engine.
Angular speed of the control in the physical engine.
Sends a 1 value when the control collides with another control or a border.
Gives information about the collide state in the physics-engine.
Speed vector value on the X axis in the physics-engine.
Speed vector value on the Y axis in the physics-engine.
Determines if the control is minimized or not.
Automatically reorganize positions of controls in the panel.
Left margin used in reorganization, in pixels.
Horizontal interspace between controls used in reorganization, in pixels.
Vertical interspace between controls used in reorganization, in pixels.
Resizes panels automatically when child controls are moved or resized. Switch it OFF if you use floating panels inside.
Margin in pixel used for the auto resize option.
Forces the reorganization of controls in the panel.
Adjust the panel width to a multiple of the default rack width.
In unlock mode, snap the control to a grid.
Grid size in pixels when snap to grid is ON.
Settings related to automation curve recording and playback.
When ON, the automation recording starts automatically when click on the control.
Deletes the automation curve.
Sends 1 value when the control is playing a recorded automation curve.
Displays the toolbar with its icons.
Example ON and OFF
Height of the toolbar % of the global height.
Example toolbar size on a panel.
Displays or not the header on the panel.
Example on sequenced-lines.
Height of the header in pixels.
Background color of the header.
Determines if the header is drawn as a plain bar (HH5 style) or as small bar in the upper left corner.
plain ON
plain OFF
Displays a small cursor indicator at current position.

Color of the cursor.
Cursor width in pixels.
2 and 8 pixels cursor on a data-generator-sequenced-steps.
Opacity of the cursor.
Displays or not a grid on the panel.
Example with 8 x 4 grid.
Displays a full grid when ON or just small ticks when OFF on the panel.
Example OFF and ON.
Color of the grid.
Example with a Yellow grid on a data-generator-sequenced-steps.
Number of vertical tick of the grid.
0 = no grid division visible
Horizontal division set to 8 on a data-generator-sequenced-steps.
Number of horizontal tick of the grid.
0 = no grid division visible
Example of 4 vertical divisions.
Opens the web browser to display information or help about the selected object, if it exists.
For more details about information/help creation, see create-help-file.
Description of the module for internal help purposes only. The description is not displayed in the interface.
visible only in god mode, see setup-panel-tab-expert.
Current private ID for this control used to identify the object.
Current private preset ID for this control used for presets.
If you experience difficulties in Polyphonic mode, try to recreate new id(s) with this button.
Each Patch shared on the local network uses its own ID (identification number). If you experience issues of Patches that don't send information to the good target, this button will rebuild all these id's.
Absolute remote address. see objects-address.
Local to the current patch remote address. see objects-address.
User defined remote address. see objects-address.
version 7.0.250121
Edit All Pages