Sonic Sutras v0.1 is here! 🎉 Discover what’s new

Tagging

Consistent tagging is the key to building an organised and emotion-aware music library. The Sonic Bhava framework offers two levels of implementation: a simple manual tagging standard for DJs, and a comprehensive JSON schema for software developers and analysis tools.

Manual Tagging (For DJs)

For manual library management in software like Rekordbox, Serato, or Traktor, we recommend using custom metadata fields.

  • Emotion: Create a custom tag field named “Emotion”. Use the “Name + Emoji” format (e.g., “Euphoria / Ecstasy 🙌”).

Schema (For Developers)

For developers building analysis tools, music players, or recommendation engines, the Sonic Bhava framework defines a comprehensive fractal schema.

The Fractal Concept

The schema treats a musical track as a “fractal” structure. This means the Whole Track and its individual Segments (Intros, Drops, Breakdowns) are described using the exact same data structure, called MusicalAttributes.

This structure simplifies analysis: a function written to analyse the “danceability” of a whole song can be reused without modification to analyse just the 30-second breakdown.

The Four Pillars of Analysis

The MusicalAttributes object divides musical data into four intuitive categories:

  1. Psychometrics (The Soul): The internal emotional landscape.
    • Valence: Positivity (Happy vs. Sad).
    • Arousal: Psychological energy and excitement.
    • Dominance: Feelings of control vs. submission.
  2. Physics (The Body): The kinetic and physical properties.
    • Intensity: Physical loudness and magnitude.
    • Danceability: Groove stability and the urge to move.
    • Beat Pattern: The rhythmic grid (e.g., 4x4, Breakbeat).
  3. Harmonic (The Voice): The tonal foundation.
    • Key & Mode: Standard musical notation.
    • Open Key: Notation for harmonic mixing (e.g., 1d, 11m).
  4. Texture (The Skin): The timbral surface.
    • Vocal Density: From Instrumental to Full Song.
    • Percussion Profile: From Beatless to Electronic Grid.

JSON Schema Definition

{
    "$schema": "https://sonicsutras.org/schemas/v1/track_analysis.json",
    "type": "object",
    "description": "Analysis data for audio tracks using a fractal structure where segments mirror the global attributes.",
    "definitions": {
        "MusicalAttributes": {
            "type": "object",
            "description": "Reusable block of musical analysis data including emotional classification.",
            "properties": {
                "classification": {
                    "description": "High-level emotional categorization derived from the attributes.",
                    "properties": {
                        "emotion_id": {
                            "type": "string",
                            "description": "The dominant emotion ID (e.g. SB-001) for this specific scope (track or segment)."
                        },
                        "confidence": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                },
                "psychometrics": {
                    "description": "The 'Soul' of the music (Psychological & Emotional).",
                    "properties": {
                        "valence": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        "arousal": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        "dominance": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        }
                    }
                },
                "physics": {
                    "description": "The 'Body' of the music (Physical & Kinetic).",
                    "properties": {
                        "intensity": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        "danceability": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                        },
                        "bpm": {
                            "type": "integer"
                        },
                        "beat_pattern": {
                            "type": "string",
                            "enum": [
                                "4x4",
                                "Breakbeat",
                                "2-Step",
                                "Beatless",
                                "Waltz",
                                "Polyrhythmic"
                            ]
                        }
                    }
                },
                "harmonic": {
                    "description": "The 'Voice' of the music (Tonal).",
                    "properties": {
                        "key": {
                            "type": "string"
                        },
                        "mode": {
                            "type": "string"
                        },
                        "open_key": {
                            "type": "string"
                        }
                    }
                },
                "texture": {
                    "description": "The 'Skin' of the music (Timbral).",
                    "properties": {
                        "vocal_density": {
                            "type": "string"
                        },
                        "percussion_profile": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    },
    "properties": {
        "track_info": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "artist": {
                    "type": "string"
                },
                "version_type": {
                    "type": "string"
                },
                "duration_ms": {
                    "type": "integer"
                },
                "genre": {
                    "type": "string",
                    "description": "The primary musical genre."
                }
            }
        },
        "attributes": {
            "$ref": "#/definitions/MusicalAttributes",
            "description": "Weighted averages representing the whole track."
        },
        "segments": {
            "type": "array",
            "description": "Chronological breakdown using the exact same attribute structure.",
            "items": {
                "type": "object",
                "properties": {
                    "range": {
                        "type": "object",
                        "properties": {
                            "start_ms": {
                                "type": "integer"
                            },
                            "duration_ms": {
                                "type": "integer"
                            }
                        }
                    },
                    "type": {
                        "type": "string"
                    },
                    "significance": {
                        "type": "number",
                        "description": "Weighting for global calculation (0.0 - 1.0)"
                    },
                    "attributes": {
                        "$ref": "#/definitions/MusicalAttributes",
                        "description": "Specific analysis for this time slice, including its own emotional classification."
                    }
                }
            }
        }
    }
}

Examples

Example 1: Standard Electronic Track

This example demonstrates a standard electronic track. Notice how the Intro is mixable (Percussion = Electronic, Vocals = None) and has low significance, while the Drop defines the track’s primary identity as Euphoria / Ecstasy.

{
  "track_info": {
    "id": "urn:uuid:a1b2c3d4...",
    "title": "Solar Rising",
    "artist": "Lumina",
    "version_type": "Original Mix",
    "duration_ms": 360000
  },
  "attributes": {
    "classification": {
      "emotion_id": "SB-001",
      "confidence": 0.95
    },
    "psychometrics": {
      "valence": 0.9,
      "arousal": 0.9,
      "dominance": 0.7
    },
    "physics": {
      "intensity": 0.85,
      "danceability": 0.9,
      "bpm": 128,
      "beat_pattern": "4x4"
    },
    "harmonic": {
      "key": "G",
      "mode": "Major",
      "open_key": "2d"
    },
    "texture": {
      "vocal_density": "None",
      "percussion_profile": "Electronic"
    }
  },
  "segments": [
    {
      "range": {
        "start_ms": 0,
        "duration_ms": 60000
      },
      "type": "Intro",
      "significance": 0.1,
      "attributes": {
        "classification": {
          "emotion_id": "SB-013",
          "confidence": 0.6
        },
        "psychometrics": {
          "valence": 0.5,
          "arousal": 0.6,
          "dominance": 0.5
        },
        "physics": {
          "intensity": 0.5,
          "danceability": 0.8,
          "bpm": 128,
          "beat_pattern": "4x4"
        },
        "harmonic": {
          "key": "G",
          "mode": "Major",
          "open_key": "2d"
        },
        "texture": {
          "vocal_density": "None",
          "percussion_profile": "Electronic"
        }
      }
    },
    {
      "range": {
        "start_ms": 60000,
        "duration_ms": 120000
      },
      "type": "Drop",
      "significance": 1.0,
      "attributes": {
        "classification": {
          "emotion_id": "SB-001",
          "confidence": 0.98
        },
        "psychometrics": {
          "valence": 1.0,
          "arousal": 1.0,
          "dominance": 0.8
        },
        "physics": {
          "intensity": 1.0,
          "danceability": 1.0,
          "bpm": 128,
          "beat_pattern": "4x4"
        },
        "harmonic": {
          "key": "G",
          "mode": "Major",
          "open_key": "2d"
        },
        "texture": {
          "vocal_density": "None",
          "percussion_profile": "Electronic"
        }
      }
    }
  ]
}

Example 2: Structural Evolution

This example demonstrates the power of segment analysis. The track begins as a Beatless ambient piece (Intro) suitable for meditation, but transforms into a Breakbeat rhythm (Drop). The schema captures this structural evolution, allowing a DJ to know exactly when the beat changes.

{
  "track_info": {
    "id": "urn:uuid:e5f6g7h8...",
    "title": "Shifting Sands",
    "artist": "Nomad",
    "version_type": "Extended Mix",
    "duration_ms": 420000
  },
  "attributes": {
    "classification": {
      "emotion_id": "SB-016",
      "confidence": 0.88
    },
    "psychometrics": {
      "valence": 0.6,
      "arousal": 0.8,
      "dominance": 0.8
    },
    "physics": {
      "intensity": 0.7,
      "danceability": 0.75,
      "bpm": 130,
      "beat_pattern": "Breakbeat"
    },
    "harmonic": {
      "key": "D",
      "mode": "Minor",
      "open_key": "12m"
    },
    "texture": {
      "vocal_density": "Sparse",
      "percussion_profile": "Electronic"
    }
  },
  "segments": [
    {
      "range": {
        "start_ms": 0,
        "duration_ms": 90000
      },
      "type": "Intro",
      "significance": 0.3,
      "attributes": {
        "classification": {
          "emotion_id": "SB-020",
          "confidence": 0.90
        },
        "psychometrics": {
          "valence": 0.5,
          "arousal": 0.3,
          "dominance": 0.2
        },
        "physics": {
          "intensity": 0.2,
          "danceability": 0.1,
          "bpm": 130,
          "beat_pattern": "Beatless"
        },
        "harmonic": {
          "key": "D",
          "mode": "Minor",
          "open_key": "12m"
        },
        "texture": {
          "vocal_density": "Sparse",
          "percussion_profile": "None"
        }
      }
    },
    {
      "range": {
        "start_ms": 90000,
        "duration_ms": 180000
      },
      "type": "Drop",
      "significance": 1.0,
      "attributes": {
        "classification": {
          "emotion_id": "SB-016",
          "confidence": 0.95
        },
        "psychometrics": {
          "valence": 0.7,
          "arousal": 0.9,
          "dominance": 0.9
        },
        "physics": {
          "intensity": 0.9,
          "danceability": 0.95,
          "bpm": 130,
          "beat_pattern": "Breakbeat"
        },
        "harmonic": {
          "key": "D",
          "mode": "Minor",
          "open_key": "12m"
        },
        "texture": {
          "vocal_density": "None",
          "percussion_profile": "Electronic"
        }
      }
    }
  ]
}