JSON schemas for Digital Audio Workstation (DAW) file formats
Project description
DAW Schemas
A collection of JSON schemas for Digital Audio Workstation (DAW) file formats. Currently supports Ableton Live .als files, with a framework designed to be extended for other DAW formats.
Overview
This project provides:
- JSON schemas - Structural schemas describing the XML structure of DAW project files
- Schema generation tools - Analyze multiple DAW project files to extract their structure
- Reusable framework - Extensible architecture for analyzing other DAW formats
Ableton Live (.als) Support
Ableton Live project files (.als) are gzipped XML files. This project includes:
Schema Files
daw_schemas/ableton_live/12/schema.json- Structural schema describing XML elements, attributes, and hierarchy for all .als files
Tools
Schema Generation
Generate schemas from your .als files:
After installation:
# Using the command-line tool
daw-generate-schema "/path/to/projects" --sample-size 30
# Or using Python module
python3 -m daw_schemas.ableton_live.generate_schema \
"/path/to/projects/2025" "/path/to/projects/2026" \
--sample-size 30 \
--output 12/schema.json
Options:
directories- One or more directories containing .als files--sample-size N- Number of files to analyze (default: 20)--output FILE- Output JSON file path (relative to script directory)--max-elements N- Maximum elements to analyze per file (default: 40000)
Schema Structure
Structural Schema Format
The schema describes the XML structure of .als files and includes:
{
"schema_version": "1.0",
"daw_format": "Ableton Live .als",
"metadata": {
"versions_analyzed": ["Ableton Live 12.3.2", ...],
"total_element_types": 1798,
"description": "Structural schema describing XML elements, attributes, and hierarchy for all .als files"
},
"root_structure": {
"Ableton": {
"required_attributes": ["Creator", "MajorVersion", ...],
"children": ["LiveSet"]
}
},
"key_sections": {
"Tracks": {
"attributes": [],
"required_attributes": [],
"children": ["AudioTrack", "MidiTrack", ...],
"has_identifiers": false
},
...
},
"track_structure": {
"AudioTrack": {
"attributes": ["Id", ...],
"required_attributes": ["Id"],
"children": ["DeviceChain", "Name", ...],
"identifier_attributes": ["Id"]
},
...
},
"element_catalog": {
"ElementName": {
"attributes": ["attr1", "attr2"],
"required_attributes": ["attr1"],
"parents": ["Parent1", "Parent2"],
"children": ["Child1", "Child2"],
"has_text": false,
"is_identifier": true,
"is_value": false,
"is_key_element": true
}
}
}
The schema is structural - it describes what elements, attributes, and relationships can exist in any .als file, not specific to any particular file.
Extending for Other DAW Formats
The framework is designed to be extended. To add support for another DAW format:
- Create a format-specific analyzer (similar to
ALSComparisonSchemaGeneratoringenerate_schema.py) - Generate structural schemas describing the file format
- Add format detection to identify file types
Example Structure
class DAWFormatAnalyzer:
"""Base class for DAW format analysis."""
def analyze_file(self, file_path: Path) -> bool:
"""Analyze a single file."""
pass
def generate_schema(self) -> Dict[str, Any]:
"""Generate schema from analysis."""
pass
class ALSFormatAnalyzer(DAWFormatAnalyzer):
"""Ableton Live .als analyzer."""
pass
Version Compatibility
Schemas are organized by DAW version in directory structures:
ableton_live/12/- Schemas for Ableton Live 12ableton_live/11/- Schemas for Ableton Live 11logic_pro/12/- Schemas for Logic Pro 12 (when added)
The analysis tools:
- Track which versions were analyzed
- Identify version-specific elements
- Support multiple schema versions
When analyzing files from different DAW versions, the schema will include all element types found across versions. Each version directory contains schemas specific to that DAW version.
Requirements
- Python 3.7+
- Standard library only (no external dependencies)
Usage Examples
Generate Schema from Your Projects
# After installation - analyze projects from multiple directories
daw-generate-schema \
"/Volumes/Music SSD/Music/Projects/2025" \
"/Volumes/Music SSD/Music/Projects/2026" \
--sample-size 30
# Or using Python module
python3 -m daw_schemas.ableton_live.generate_schema \
"/Volumes/Music SSD/Music/Projects/2025" \
"/Volumes/Music SSD/Music/Projects/2026" \
--sample-size 30 \
--output 12/schema.json
Access Schemas Programmatically
from pathlib import Path
import json
from daw_schemas import __file__ as package_file
# Load schema
schema_path = Path(package_file).parent / "ableton_live" / "12" / "schema.json"
with open(schema_path) as f:
schema = json.load(f)
# Use schema for validation, analysis, etc.
print(f"Found {schema['metadata']['total_element_types']} element types")
print(f"Versions analyzed: {schema['metadata']['versions_analyzed']}")
File Structure
daw-schemas/
├── README.md # This file
├── docs/ # Documentation
│ └── COMPARISON.md # Comparison tool guide (temporary)
├── pyproject.toml # Package configuration
└── daw_schemas/ # Python package
├── __init__.py
├── daw_format_base.py # Base framework for extending to other DAWs
└── ableton_live/
├── __init__.py
├── generate_schema.py # Schema generator
└── 12/
└── schema.json # Structural schema for Live 12
Installation
# Install from PyPI (when published)
pip install daw-schemas
# Or install from source
pip install -e .
Notes
.alsfiles are gzipped XML, so they're automatically decompressed- Large projects may take time to analyze
- The schema generation samples files to balance accuracy and performance
- Schemas describe the structure that all
.alsfiles follow, not specific to analyzed files
Future Enhancements
- Support for other DAW formats (Logic Pro, Pro Tools, etc.)
- Additional schema versions for different Ableton Live versions
- Schema validation tools
- Automated schema version detection
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daw_schemas-0.1.0.tar.gz.
File metadata
- Download URL: daw_schemas-0.1.0.tar.gz
- Upload date:
- Size: 70.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98c9b1a65e136e169d88600de4b5dec72a78d1de4b3ab55d8c8587faab5c6acd
|
|
| MD5 |
23bb823ecaf288a5f262fe2e0e7034d2
|
|
| BLAKE2b-256 |
e552cbffb1188ace8880fb4d4332cf48c9024b51ec306274a5bb5957d5e2872a
|
File details
Details for the file daw_schemas-0.1.0-py3-none-any.whl.
File metadata
- Download URL: daw_schemas-0.1.0-py3-none-any.whl
- Upload date:
- Size: 72.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25cae0b844a00c1c65b990e4882e0b196bc22c9ba464fdf4e4ba2d3c0d7f9fff
|
|
| MD5 |
39eb7109bfa66ec700e24f0f0ee2f848
|
|
| BLAKE2b-256 |
adac26da7b9227266f4f61b5b36d29dd87a608292c98f394ac33396ce0c95b77
|