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.
A chunk is a named container that holds one or more items. Each item has a name and a value. Values can be of different types: float, integer, text, or color. Items can also hold arrays of these types.
Here's a simple analogy: imagine a filing cabinet (the chunk system). Each drawer has a label (the chunk name). Inside each drawer, there are folders (the items), each with its own label (the item name) and contents (the value).
Chunk System
├── "my-synth" (chunk)
│ ├── "cutoff" = 0.75 (float item)
│ ├── "resonance" = 0.3 (float item)
│ └── "preset-name" = "warm pad" (text item)
│
└── "scene-data" (chunk)
├── "volumes" = 0.5,0.8,0.6,1.0 (float array item)
└── "active-color" = $FF00AAFF (color item)
Chunk names and item names are case-sensitive: MyChunk is different from mychunk and MYCHUNK.
Item names must not contain regular-expression special characters: ^ . $ * + ? ( ) [ ] { } \ |
"track-")."my-synth-cutoff" rather than just "cutoff").Usine provides 7 dedicated chunk modules, found in the browser under Chunks:
| Module | Purpose |
|---|---|
| chunk-item-operation | Create, modify, delete, or clear chunk items |
| chunk-item-get | Read item values from a chunk |
| chunk-item-get-concat | Read items and concatenate them into a single array |
| chunk-watch | Get a trigger when a chunk or item is modified |
| chunk-get-list | List all existing chunks |
| chunk-get-items-list | List all items inside a chunk |
| chunk-files | Import/export chunks to and from files |
my-data.volume.add or modify item.float.auto add or modify item to write automatically when the payload changes).You've just created a chunk called my-data with an item volume inside it.

my-data.volume.The module's payload outlet now outputs the current value of the volume item. If the value changes in the writer module, the reader automatically updates.

my-data.volume (leave empty to watch all items in the chunk).The modified trigger outlet fires a trigger pulse every time the watched chunk item is modified. You can connect this trigger to any module that needs to react to the change.
The chunk-item-operation module supports these operations:
| Operation | Description |
|---|---|
| add or modify item | Creates the item if it doesn't exist, or updates its value. Click perform to execute. |
| auto add or modify item | Same as above, but executes automatically whenever the payload inlet changes. |
| clear item | Sets the item's array size to 0 (or string to empty). The item still exists but has no content. |
| delete item | Completely removes the item from the chunk. |
| clear chunk | Clears all items in the chunk (items remain but with empty content). |
| destroy chunk | Completely removes the chunk and all its items from the system. |
Chunk items can store arrays of values. The index control determines how you access them:
This is useful for storing sequences, parameter sets, or any multi-value data.
For example, to store a list of 8 step values for a sequencer:
To retrieve a single step:
When specifying item names, you can enable regular-expression mode to match multiple items at once:
| Pattern | Matches |
|---|---|
^track-.* |
All items starting with track- |
.*-volume$ |
All items ending with -volume |
(?i)^lead |
All items starting with lead (case-insensitive) |
step-[0-9]+ |
Items like step-0, step-1, step-42, etc. |
This is particularly powerful with chunk-item-get and chunk-watch when you want to monitor a whole group of related items.
The chunk-files module lets you persist chunk data to disk:
[chunk-name$item-name].Options:
rewrite file (overwrite everything) or update file (only add or update the specified chunks).Here's a practical example that demonstrates the power of chunks.
Goal: build a mixer with 4 tracks where all volume and mute states can be saved and recalled as presets, even if each track lives in a different patch.
In each track patch (Track 1, Track 2, Track 3, Track 4):
mixer-statetrack-1-volume (or track-2-volume, etc.)auto add or modify itemfloatmixer-statetrack-1-muteauto add or modify itemfloatEach track now automatically writes its volume and mute state to the shared mixer-state chunk.
In a separate "Preset Manager" patch:
Add a chunk-files module:
mixer-statepreset-A.txt).To read back the saved values into each track, add a chunk-item-get in each track patch:
mixer-statetrack-1-volume (matching the track)Add a chunk-watch:
mixer-statemixer-state chunk.This pattern scales to any number of tracks and parameters. You could extend it with track-1-pan, track-1-eq-low, etc., all stored in the same chunk.
mixer-, synth-, scene- to organize your data and avoid collisions.auto add or modify item writes on every change, which is convenient but generates more notifications. For high-frequency data, consider using manual perform triggers.version 7.0.250121
Edit All Pages