Visit the new site! Link Search Menu Expand Document


Table of contents
  1. Sounds
    1. Folder Structure
    2. Sound Formats
  2. sound_definitions.json
    1. Top Level Keys
      1. Categories
      2. min_distance
      3. max_distance
    2. Sound definitions
      1. name
      2. stream
      3. volume
      4. load_on_low_memory
      5. pitch
    3. Example
  3. sounds.json
    1. Adding Entity Sounds
    2. Example
  4. Adding sounds to Animations
  5. Adding sounds to Animation Controllers


In bedrock, we have the ability to add custom sounds, without overwriting any vanilla sounds. This is done by adding files to the resource pack.

protip: The best way to learn about sounds is downloading and playing around with the default resource pack.

Folder Structure

There are two main files that we edit when we want to add sounds. Note how sound_definition is nested inside sounds.

    │   sounds.json

Sound Formats

The following sound formats are accepted:

  • .ogg (reccomended)
  • .wav
  • .mp3 (Not executable with /music!)
  • .fsb (difficult to work with)


sound_definitions.json is where we define new sound short-names. This should be thought of as typing a short-name or id to a physical sound path. Here is an example sound_definitions.json that adds a new trumpet sound called example.toot.

    "format_version": "1.14.0",
    "sound_definitions": {
        "example.toot": {
            "category": "neutral",
            "sounds": [

Sounds added in this way can be triggered using /playsound. Please note that playsound does not auto-correct, so you will need to be careful in your typing.

note: New files that are referenced by file path, such as sounds, DO need a full client restart in order to load. This means that if sounds don’t work, you should restart your entire MC client, rather than just reloading the world.

Top Level Keys

In the example above, I showed two top-level fields: category, and sounds. Sounds will be discussed in further detail bellow, but the other top-level keys will be discussed here:


Categories are used internally by the engine to decide how each sound is played. We can utilize different channels to get different effects.

Category Note
ui Sounds in this category will ignore range limit


The minimum distance away the source of the sound that the client needs to be within to hear. Must be a float (1.0) or the argument will be ignored.


The maximum distance to the source of the sound that the client needs to be within to hear. Must be a float (1.0) or the argument will be ignored.

Sound definitions

In the example above, I showed sounds as simply a list with a single path. This is good for simple sounds, but does not have much power. For starts, I can add multiple sounds into the list. These sounds will be randomized when played:

"sounds": [

Additionally, we can define each sound as an object, instead of a string. This allows us finer control, and unlocks some new settings. The string/object style can be mixed and matched.


The path to the file, such as: "sounds/music/game/creative/creative1"


Limits the sound to only be played a limited number of instances at a time. Good for improving preformance on sound heavy worlds.


How loud the sound should play, from 0.0 to 1.0. Sounds cannot be made louder than originally encoded.


Forces the loading of the sound even when nearing low memmory. “load_on_low_memory” is now deprecated as of 1.16.0


The pitch of the sound (how low/high it sounds). Ranges from 0.0 to 1.0 (normal), but can be higher, such as 1.48.


Here is a more realistic example containing these options:

"block.beehive.drip": {
    "category": "block",
    "max_distance": 8.0,
    "sounds": [
            "name": "sounds/block/beehive/drip1",
            "load_on_low_memory": true


If we want our sounds to run automatically, we can add them into the sounds.json file. This will tie the sound definitions directly to game events, and cause them to play, without needing to trigger with /playsound.

Sounds can be added into various categories:

Category Note
individual_event_sounds Contains sounds like beacon activation, chest-close, or explode
block_sounds Contains hit, step, and break sounds for blocks
entity_sounds Contains death, ambient, hurt, etc sounds for entities (Including custom ones!)
interactive_sounds WIP

Adding Entity Sounds

I assume that sounds can be added in other categories, but I personally only have experience adding sounds into the entities category. Entity sounds are automatically played at various points in the entities life-cycle.

Common events:

Events Note
ambient Played randomly, such as grunts, clucks, or ghast noises
hurt Played when damaged
death Played when it dies
step Played when the entity moves along the ground
fall.big For hitting ground form a high-height
fall.small For hitting ground from a low height
splash For splashing in the water
attack For melee attacking
shoot For shooting projectiles

There are also many sound events, which most likely trigger automatically, but which I don’t have details for, such as:

Unknown Categories


    "entity_sounds": {
        "entities": {
            "sirlich:elephant": {
                "volume": 1,
                "pitch": [
                "events": {
                    "step": {
                        "sound": "elephant.step",
                        "volume": 0.18,
                        "pitch": 1.1
                    "ambient": {
                        "sound": "elephant.trumpet",
                        "volume": 0.11,
                        "pitch": 0.9

Adding sounds to Animations

Sounds played in animations function based off of short-name definitions in the RP entity file.

This example shows playing a wing-flap sound, synced with an animation.


"sound_effects": {
    "wing_flap": "wiki.dragon.wing_flap" //where wiki.dragon.roar is a sound definited in sound_definitions


"sound_effects": {
    "3.16": {
        "effect": "wing_flap"

Adding sounds to Animation Controllers

You can play sounds within animation controllers in a similar way that animations can be.

This example shows playing an explosion sound, synced using an animation controller.


"sound_effects": {
    "explosion": "wiki.custom_tnt.explosion" //where wiki.custom_tnt.explosion is a sound definited in sound_definitions just like animation sounds.


"states": {
  "default": {
    "transitions": [
        "explode_state": "query.mark_variant == 1"
  "explode_state": {
    "sound_effects": [
        "effect": "explosion"
    "transitions": [
        "default": "query.mark_variant == 0"