Resonance channels
The resonance signal is how NeroNotes carries music around a base: emitters broadcast note and
transport events (note_on, and play / stop / seek) on a channel, and nearby listeners
hear them rendered client-side from the mod's registered sounds (all of which alias vanilla sound
events in this release — no custom audio ships yet). Music is data, not audio — the server never
streams sound. Note lengths are carried in every score, but this release voices notes as
note_on one-shots; sustained note_off pairs are a later release.
The channel system (this page) is the server-side foundation. The in-world blocks that use it — Resonant Blocks and Resonators — play through it with synchronised playback.
Channel identity — owner-scoped, never global
A channel is identified by dimension + owner + name and displayed by its name. Names are only
unique per owner: your workshop channel and a neighbour's workshop channel are different
channels. There is no global channel namespace, so nobody can squat or hijack a name you use.
Channel names are validated server-side: at most 32 characters, no control characters, no §
formatting codes.
Listening vs. controlling
- Anyone in range may listen. Resonance events reach subscribed players within the configured
emit range (
signal.emit_range_blocks, default 64 blocks, capped at 128) in the channel's dimension. - Only the owner, trusted players, or an operator may control a channel: emitting notes,
transport (
play/stop/seek), and renaming all require it. Every check runs on the server — the client never decides what it may control, and proximity never grants permission.
The trust list
Each channel carries a trust list — players its owner has granted control. Trusted players can emit and drive the transport; only the owner or an operator can edit the trust list itself, rename in their stead, or delete the channel. The owner is implicitly trusted and never appears on the list.
An honest limitation of this release: the trust list, renaming and deletion are enforced server-side and cleared correctly by data erasure, but 0.1.0 ships no command or GUI to edit them — so in practice a channel answers to its owner and operators, and the "trusted" role is not yet reachable in normal play. A channel-management surface is a later release.
The audio-spam cap
To keep shared areas pleasant, the server caps how many channels can be playing at once within a
chunk radius (signal.max_playing_channels_per_chunk_radius, default 3). A play request over
the cap is quietly refused — no chat spam, no log spam. Stopping a channel frees its slot.
Persistence and your data
Channel definitions (dimension, owner, name, trust list) are stored in the world save, guarded by
Neroland Core's saved-data recovery so a corrupted file cannot crash-loop the server. Channel
ownership and trust entries are part of a player's personal data: when a player's data is erased
through Core's erasure tooling, their channels and every trust-list entry naming them are removed,
while other players' channels are untouched. See PRIVACY.md.
Configuration
| Key | Default | Meaning |
|---|---|---|
signal.emit_range_blocks | 64 (16–128) | Broadcast range for resonance events |
signal.max_playing_channels_per_chunk_radius | 3 (1–16) | Concurrently playing channels allowed per chunk radius |
Both keys are server-authoritative: in multiplayer the server's values win.