# Usine HH7 - Release Notes 7.1.260904

## New Features
- **Trigger Cascade** - new module in the Data category: on *start*, fires its outputs one after the other, separated by an adjustable *interval* (ms). *Suspend* pauses the sequence, *cancel* stops it, *is playing* reports the state. From 2 to 64 outputs, chosen when inserting the module.
- **Scripts - compiler hints** - compiler hints (unused variable, result not set...) are now shown in the script console. The "parameter not used" hint is deliberately silenced, since Usine callbacks have fixed signatures.
- **Scripts - exceptions** - `try ... except ... finally` blocks and the standard exception helpers are now available in scripts.
- **Scripts - Round with precision** - new overload *Round(x, precision)* rounding to a given number of decimals.

## Improvements
- **Scripts - per-thread execution** - each thread that runs script code now owns its own execution stack: audio *Process*, main-thread *Callback* / *ProcessIDLE*, and *ProcessTHREAD*. Stacks are allocated on first use only, and never inside the real-time thread.
- **Scripts - faster interpreter** - the abort flag is no longer polled on every instruction but only on jumps, loops and calls. Scripts run faster and can still be stopped within a few instructions.
- **Scripts - buses** - *GetBusValue* now matches *SetBusValue* (case-insensitive bus names). Previously a name in a different case silently created a second bus.
- **Scripts** - *FastCallback* is now marked deprecated; use *CallbackMode* instead.
- **Settings** - settings are now looked up case-insensitively when loading a patch, so renamed settings keep their saved value. Many settings gained explicit default values so the *reset to default* action behaves consistently (fader width and cursor, knob, listbox, switch, wave display, XYZ, trajectory, oscilloscope, step, pixel mapper, video detection...).
- **Settings - clearer names** - several settings were renamed for consistency, with backward-compatible loading of old files: *timecode* (was *time code*), *clear bind control*, *position percent X/Y*, *width/height percent*, *top bar selector color/opacity/width*, *loop selector width*, *group mouse wheel enabled*, *nearest & snap to touch* selection mode. Video player and waveform panels only show the *top bar* and *show timecode* settings when they apply.
- **Poly Voice Dispatcher MPE** - the *MPE Dispatcher MIDI* module is renamed and moved with the other poly voice tools.
- **Bitwise modules** - renamed to *Bitwise Get Bit*, *Bitwise Set Bit* and *Bitwise Swap Bytes*.
- **Modbus Client** - *holding reg N* inputs are now named *holding register N*.
- **Interface** - the *can animate* property of controls is renamed *mouse over effect*, which describes what it does.
- **Scripts** - the developer-only *fixed location* script setting has been removed.

## Bug Fixes
- **Scripts** - *VarArrayCreate* built arrays with wrong bounds (for example `[0, 4]` was read as `[0, 0]`), and *VarArrayRedim* ignored its new high bound. Both are fixed.
- **Scripts** - `VarArrayGet(A, [i])` and `VarArraySet(A, [i], v)` no longer fail with an ambiguous overload error.
- **Racks** - fixed a double lock when rebuilding a rack that left the section owned forever on Windows and deadlocked on macOS/Linux.
- **Remote** - the value range used for remote scaling was computed as *max - max* instead of *max - min*.
- **Video Player** - the legacy *color* and *wave color* settings are now correctly removed from the video player panel.
- **Master Light** - *master dimmer* now defaults to 1 and *DMX USB device* to 1.

# Usine HH7 - Release Notes 7.1.260831

## New Features
- **Scripts - chunk existence checks** - two new functions *ChunkExist(name)* and *ChunkItemExist(name, item)* to test whether a chunk or a chunk item exists, without creating it as a side effect.
- **Scripts - color arrays** - new *asColorArray(index)* getter and setter on parameters to read and write color array items element by element, like *asArray* but for colors.
- **Scripts - multi-dimensional arrays** - array types can now be declared with several dimensions in one go: `array [1..10, 1..10] of integer` is equivalent to the nested form `array [1..10] of array [1..10] of integer`, with any number of dimensions.
- **Scripts - float literals** - exponent notation without a decimal point is now accepted: `1E-9`, `1E9` and `1.0E9` all work (previously only `1.0E-9` compiled).
- **SDK - chunk existence checks** - new *sdkChunkExist* and *sdkChunkItemExist* functions for module developers, mirroring the script functions. Modules built against older SDK headers remain fully compatible.
- **3D Viewer** - new global variables *mouse-3d-left/middle/right-down-triangle-index* giving the index of the triangle that was clicked in a mesh, alongside the existing vertex and mesh indexes.

## Improvements
- **Wire monitor** - now displays up to 256 values of an array (was 16).

## Bug Fixes
- **Faders** - fixed a problem when editing values directly on faders.
- **Modules** - the query window (shown when inserting a module to choose, for example, the number of channels) was not working.
- **Camera** - fixed a bitrate value handling issue in the camera library.

# Usine HH7 - Release Notes 7.1.260827

## New Features
- **KNX modules** - three new modules in the Network category to talk to KNX building-automation installations (lights, dimmers, blinds, sensors) through a KNXnet/IP interface:
  - *KNX Connection* - manages the tunneling connection to the KNX/IP gateway.
  - *KNX Group Send* - writes values to a KNX group address (switch, dimming, temperature, etc.).
  - *KNX Group Receive* - listens to a KNX group address and outputs incoming values.
- **3D Viewer** - new global variables *mouse-3d-left/middle/right-down-mesh-index* to know which mesh was clicked in the 3D scene, and a new *camera modified with the mouse* setting.

## Improvements
- **Modbus Client** - major rework: each module now uses its own connection, contiguous registers are grouped into single read/write requests (much faster with many registers), proper connect/read timeouts, and a clean reconnection when the host or port changes.
- **Add-ons Manager** - action buttons are now disabled while an operation is in progress (no more accidental double actions), and download failures are clearly reported.
- **MQTT Client** - default broker is now *mqtt.brainmodular.com*, with a 30 s keep-alive.


## Bug Fixes
- **Data Mix Mixer** - the *mix values* array is now applied as a true input × output matrix: each output uses its own set of mix values instead of all outputs reusing the first ones. Mix values now default to 1 (signal passes) instead of 0.
- **Audio Mix Volume** - the *mute* switch now fully silences the output in all situations.
- Fixed a possible crash when rebuilding polyphonic sub-patches (for example when changing the polyphony count).
- **Grid** - tempo is now applied correctly with bar lists, and the tempo is reset when clearing the workspace.
- **Video Mix** - the incrustation mode now renders correctly (it was using an additive blit).
- Fixed the *fit size* button and the *show grid at startup* setting not responding.
- Fixed positioning issues when editing a control's text in place.
- The interface stays responsive while a dialog box is open.

# Usine HH7 - Release Notes 7.1.260727

## Improvements
- **Contrast bulk commands** - the *contrast +* / *contrast -* bulk procedures in the Setup ▸ Debug tab are now available in release versions.
- **Troubleshooting** - new expert setting *disable all user modules*: skips loading of user modules at startup, handy to isolate a problematic module.

## Bug Fixes
- **Usine Remote** - trigger buttons with no attached module (like *grid next/previous*) are now properly released after being pressed from the remote.
- **Usine Remote** - more robust startup and shutdown: no more possible crash when the remote asks for status before the workspace is ready, or when closing the connection.
- Fixed flicker when the settings panel rebuilds (for example when re-editing a control from the contextual menu).
- Fixed a possible crash related to the control panel lifetime, especially with polyphonic sub-patches.

# Usine HH7 - Release Notes 7.1.260723

## Improvements
- **Modular wires** - wires are now drawn as true hanging cables (catenary curve): they fall naturally from both connectors

## Bug Fixes
- Fixed wrong scale calculations in the ruler.
- Modular wires were not drawn during drags.

# Usine HH7 - Release Notes 7.1.260722

## New Modules
- **Network ▸ TUIO Receive** - receive multitouch data from any TUIO 1.1 source (touch tables, tablets, tracking software). 
- **MIDI ▸ MPE Dispatcher** - spreads an incoming MPE stream over polyphonic voices, with per-note pitch-bend, slide and pressure outputs. 

## Improvements
- **Tab navigation between faders** - faders have a new *tab order* setting; while editing a value, press **Tab / Shift+Tab** to jump to the next/previous fader, including inside sub-patches.
- **Very large audio files** - WAV recording and playback now support the RF64 format, removing the 4 GB limit for long recordings and huge sample files.
- **MIDI sampler** - a new *current PB* parameter exposes the pitch bend, and lets the patch set it directly.
- **3D viewport** - mouse picking on 3D objects now also returns the **vertex index** that was hit.
- **Faster networking** - sending all Global Array values to remote machines no longer blocks the sender, and network adapter selection is more reliable.
- **Array Expand/Compress** - the factor range is extended from 0.01–20 to 1/128–128.
- **Patch comments** now use a fixed-width font for cleaner alignment.
- Updated device engines (Audio, MIDI, DMX, Laser, Plugin wrapper) for all platforms.

## Bug Fixes
- Fixed a rare case where two polyphonic voices could grab the same note at the same time.
- Fixed hanging notes when a mono voice was stolen by an overlapping note-on (MPE and mono modes).
- The bar start position is now reported correctly to VST/AU plugins, improving bar/beat synchronization inside plugins.
- Audio vu-meter: the control now shows the correct audio wire color.
- OSC bundles are not handled properly.
- Multi channel audio recording with large number of audio channels.
- Various GUI details.
- Many stability improvements in the patch engine.
