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:
- Psychometrics (The Soul): The internal emotional landscape.
- Valence: Positivity (Happy vs. Sad).
- Arousal: Psychological energy and excitement.
- Dominance: Feelings of control vs. submission.
- 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).
- Harmonic (The Voice): The tonal foundation.
- Key & Mode: Standard musical notation.
- Open Key: Notation for harmonic mixing (e.g., 1d, 11m).
- 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"
}
}
}
]
}