Reference Devices compiles

music_manager_device: Conducting Your Island's Soundtrack

The `music_manager_device` is the conductor of UEFN's Patchwork audio system — it provides the shared tempo, key, and timeline that all other Patchwork devices (synthesizers, sequencers, note triggers) lock onto. Without it running, your Patchwork instruments have no beat to follow. With two Verse calls — `Enable` and `Disable` — you can start and stop your island's entire Patchwork score on demand, perfect for dramatic moments like a boss encounter beginning or a safe zone collapsing.

Updated Examples verified on the live UEFN compiler
Watch the Knotmusic_manager_device in ~90 seconds.

Overview

The music_manager_device sits at the heart of UEFN's Patchwork music system. Every Patchwork device on your island — omega synthesizers, note sequencers, note triggers — synchronizes its tempo and key to whichever music_manager_device is active. Think of it as the metronome and key signature rolled into one placed device.

When to reach for it:

  • You want to start a dramatic boss-fight theme when a player enters a combat zone.
  • You need to silence all Patchwork music when a cutscene plays.
  • You want to toggle between two musical moods by enabling one manager and disabling another.
  • Any time you need runtime control over whether your Patchwork instruments are playing.

The Verse API is intentionally minimal: Enable() starts the device (and all synchronized Patchwork instruments resume following it), and Disable() stops it. All the richness lives in the UEFN editor settings — tempo, key, time signature — which you configure on the placed device itself.

API Reference

music_manager_device

Provides a shared tempo, key, and timeline for Patchwork devices to follow.

Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse). Inherited members are merged from patchwork_device.

music_manager_device<public> := class<concrete><final>(patchwork_device):

Methods (call these to make the device act):

Method Signature Description
Enable Enable<public>():void Enables this device.
Disable Disable<public>():void Disables this device.

Walkthrough

Scenario: A dungeon island where eerie ambient Patchwork music plays from the start. When a player steps on a pressure plate to open the boss vault, the ambient music cuts out and the boss battle theme kicks in. When the boss is defeated (a second button press for simplicity), the battle music stops and the ambient track resumes.

You'll need:

  • Two music_manager_device placements: one configured as the ambient theme, one as the boss theme.
  • One button_device acting as the "vault plate" trigger.
  • One button_device acting as the "boss defeated" trigger.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/Patchwork }
using { /Verse.org/Simulation }

# Controls ambient vs boss Patchwork music based on game events.
# Wire up two music_manager_devices and two button_devices in the editor.
boss_music_controller := class(creative_device):

    # The ambient Patchwork music manager — enabled at game start.
    @editable
    AmbientMusic : music_manager_device = music_manager_device{}

    # The boss battle Patchwork music manager — disabled at game start.
    @editable
    BossMusic : music_manager_device = music_manager_device{}

    # A pressure plate / button the player steps on to enter the boss vault.
    @editable
    VaultPlate : button_device = button_device{}

    # A button that signals the boss has been defeated.
    @editable
    BossDefeatedButton : button_device = button_device{}

    OnBegin<override>()<suspends> : void =
        # Ambient music plays from the start; boss music is silent.
        AmbientMusic.Enable()
        BossMusic.Disable()

        # Subscribe to both player-triggered events.
        VaultPlate.InteractedWithEvent.Subscribe(OnVaultEntered)
        BossDefeatedButton.InteractedWithEvent.Subscribe(OnBossDefeated)

    # Called when a player steps on the vault plate.
    OnVaultEntered(Activator : agent) : void =
        # Cut the ambient track — silence the Patchwork conductor.
        AmbientMusic.Disable()
        # Start the boss battle theme.
        BossMusic.Enable()

    # Called when the boss is defeated.
    OnBossDefeated(Activator : agent) : void =
        # Silence the battle music.
        BossMusic.Disable()
        # Restore the ambient atmosphere.
        AmbientMusic.Enable()

Line-by-line breakdown:

Lines What's happening
@editable AmbientMusic Exposes the ambient music_manager_device slot in the UEFN Details panel so you can drag your placed device in.
@editable BossMusic Same for the boss theme manager.
AmbientMusic.Enable() Tells the Patchwork system to start following this manager's tempo/key — all instruments linked to it begin playing.
BossMusic.Disable() Ensures the boss theme is silent at game start.
VaultPlate.InteractedWithEvent.Subscribe(OnVaultEntered) Registers our handler so it fires whenever any agent interacts with the vault plate button.
OnVaultEntered(Activator : agent) Handler receives the agent who triggered the plate. We don't need to use them here, but the signature must match listenable(agent).
AmbientMusic.Disable() Stops the Patchwork conductor — all instruments following this manager go silent.
BossMusic.Enable() Activates the boss conductor — its linked instruments start playing in sync.
OnBossDefeated Reverses the swap: boss music off, ambient music on.

Common patterns

Pattern 1 — Enable music at game start, disable on round end

A simple battle-royale-style device that starts music when the experience begins and cuts it when a trigger fires (e.g., a game-over zone).

using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/Patchwork }
using { /Verse.org/Simulation }

# Starts Patchwork music at game launch and silences it on a trigger.
round_music_device := class(creative_device):

    @editable
    RoundMusic : music_manager_device = music_manager_device{}

    # A button_device wired to a game-over zone or end-round trigger.
    @editable
    EndRoundTrigger : button_device = button_device{}

    OnBegin<override>()<suspends> : void =
        # Music starts immediately when the experience launches.
        RoundMusic.Enable()
        EndRoundTrigger.InteractedWithEvent.Subscribe(OnRoundEnd)

    OnRoundEnd(Activator : agent) : void =
        # Silence all Patchwork instruments following this manager.
        RoundMusic.Disable()

Pattern 2 — Toggle music on and off with a single button

Useful for a jukebox prop or a mute button in a creative hub. A single button_device alternates between enabling and disabling the manager each press.

using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/Patchwork }
using { /Verse.org/Simulation }

# Jukebox toggle: one button press starts the music, next press stops it.
jukebox_toggle_device := class(creative_device):

    @editable
    JukeboxMusic : music_manager_device = music_manager_device{}

    @editable
    JukeboxButton : button_device = button_device{}

    # Track whether music is currently playing.
    var MusicPlaying : logic = false

    OnBegin<override>()<suspends> : void =
        # Start silent; player chooses when to play.
        JukeboxMusic.Disable()
        JukeboxButton.InteractedWithEvent.Subscribe(OnJukeboxPressed)

    OnJukeboxPressed(Activator : agent) : void =
        if (MusicPlaying?):
            JukeboxMusic.Disable()
            set MusicPlaying = false
        else:
            JukeboxMusic.Enable()
            set MusicPlaying = true

Pattern 3 — Swap between two managers (mood transition)

Two distinct Patchwork setups — a calm exploration theme and an intense combat theme — swap instantly when a player enters a danger zone button.

using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/Patchwork }
using { /Verse.org/Simulation }

# Swaps between a calm and combat Patchwork music manager.
mood_swap_device := class(creative_device):

    @editable
    CalmMusic : music_manager_device = music_manager_device{}

    @editable
    CombatMusic : music_manager_device = music_manager_device{}

    # Button in a danger zone that triggers the mood swap.
    @editable
    DangerZoneButton : button_device = button_device{}

    # Button in a safe zone that restores calm music.
    @editable
    SafeZoneButton : button_device = button_device{}

    OnBegin<override>()<suspends> : void =
        CalmMusic.Enable()
        CombatMusic.Disable()
        DangerZoneButton.InteractedWithEvent.Subscribe(OnEnterDanger)
        SafeZoneButton.InteractedWithEvent.Subscribe(OnEnterSafe)

    OnEnterDanger(Activator : agent) : void =
        CalmMusic.Disable()
        CombatMusic.Enable()

    OnEnterSafe(Activator : agent) : void =
        CombatMusic.Disable()
        CalmMusic.Enable()

Gotchas

1. music_manager_device inherits from patchwork_device, not creative_device_base directly. The Enable and Disable methods live on patchwork_device. This is fine for calling them, but be aware the type hierarchy is music_manager_device → patchwork_device → creative_device_base. Don't try to cast it to a plain creative_device.

2. Disabling the manager silences ALL linked Patchwork instruments. Disable() doesn't pause — it stops the conductor entirely. Every omega synthesizer, note sequencer, and note trigger that references this manager goes silent immediately. If you want a graceful fade, you'll need to handle that in your Patchwork device settings, not in Verse.

3. You must configure tempo, key, and time signature in the editor — not in Verse. The Verse API has no methods for setting BPM or key at runtime. All musical properties are set on the placed music_manager_device in the UEFN Details panel before publishing. Verse only controls whether the device is running.

4. Multiple active managers can conflict. If two music_manager_device instances are both enabled simultaneously and Patchwork instruments are linked to both, the results are undefined. Always Disable() one before calling Enable() on another when doing a swap.

5. @editable is mandatory — you cannot construct a music_manager_device in code. Writing music_manager_device{} as a field default is only valid as a placeholder for the editor slot. The real device must be dragged in from your placed scene objects in the UEFN Details panel. A field with no placed device assigned will reference the empty default and Enable()/Disable() calls will have no audible effect.

6. No events on this device. Unlike many Creative devices, music_manager_device exposes zero events — it cannot notify your Verse code when a loop completes or a bar changes. If you need beat-synced logic, you'll need to use a note_trigger_device or timer-based approach instead.

Build your own lesson with music_manager_device

Generate a personalized, step-by-step lesson plan built around this object — grounded in this exact reference and our compile-verified knowledge base.

Build a lesson →