CAE Project Format
Note: this is internal information, project format may change at any time.
The CAE raw project json format is based on the EAO project format (currently it is more or less equal to it).
Project.json and CAE container
A raw CAE project is a JSON formatted file describing the used essences, the timeline (sequence) and other metadata.
Example:
{
"EAO": {
"Comment": "",
"Text": "",
"Duration": 60000,
"LastChange": {
"User": "Unknown",
"Date": 1657088850613
},
"Files": [
...
],
"Media": [
...
],
"Sequence": {
"Tracks": [
...
],
"Markers": [
...
],
"Groups": [
...
]
},
CustomData: {
}
}
}
The raw CAE project.json file together will locally created content is stored inside a CAE container file with file extension .cae (also often called a CAE project). A CAE container file is a zip file of the following structure:
- project.json
- audio sub folder containing locally created content, referenced in project.json
Example:
project.json
audio
82b5ea20-2dbe-4306-b1e6-a5abb2dd105b
Top-level entities
Property | Description |
---|---|
Comment | MKL? Free text? |
Text | MKL? Is this something like a title? |
Duration | MKL? Which duration is this? Sequence duration? |
LastChange | MKL? Stored in UTC or local time? |
Files | An essence file can be...
|
Media | A medium description has a one-to-one relationship to a file? A medium description additionally contains Clips and TranscriptionData. |
Sequence | |
CustomData |
Files
Property | Description |
---|---|
Filename |
|
Format | e.g. Linear, Peakfile, Transcript |
FileType | e.g. WAV, WAVEFORM, S2T |
Duration | in milliseconds |
MediumIdRef | Reference to a medium in Media |
SampleRate | |
SampleCount |
Example:
"Files": [{
"Filename": "https://dpe-demo.davidsystems.com/DpeWebApplication/Media.ashx?tableid=DigaSystem\\playground&entryid=17",
"Format": "Linear",
"FileType": "WAV",
"Duration": 55379,
"MediumIdRef": "226cc802-60c0-44f9-b131-c6fd743dcfae",
"SampleRate": 44100,
"SampleCount": 2442239.2575000003
}, {
"Filename": "",
"Format": "Peakfile",
"FileType": "WAVEFORM",
"Duration": 55379,
"MediumIdRef": "226cc802-60c0-44f9-b131-c6fd743dcfae",
"SampleRate": 44100,
"SampleCount": 2442239.2575000003
}, {
"Filename": "",
"Format": "Transcript",
"FileType": "S2T",
"Duration": 0,
"MediumIdRef": "226cc802-60c0-44f9-b131-c6fd743dcfae",
"SampleRate": 0,
"SampleCount": 0
}, {
"Filename": "blob:https://demo-cae-latest.davidsystems.com/8b9db916-0524-457d-8b3e-2946cdead3ef",
"Format": "Linear",
"FileType": "WAV",
"Duration": 3000,
"MediumIdRef": "82b5ea20-2dbe-4306-b1e6-a5abb2dd105b",
"SampleRate": 44100,
"SampleCount": 132301
}, {
"Filename": "",
"Format": "Peakfile",
"FileType": "WAVEFORM",
"Duration": 3000,
"MediumIdRef": "82b5ea20-2dbe-4306-b1e6-a5abb2dd105b",
"SampleRate": 44100,
"SampleCount": 132301
}
]
Media
Property | Description |
---|---|
MediumId | One-to-one relationship to a file |
Clips | Clips |
TranscriptData | Transcription data |
Example:
"Media": [{
"MediumId": "226cc802-60c0-44f9-b131-c6fd743dcfae",
"Clips": [{
"Title": "Clip created from file import",
"Id": "0eeafbea-fe2e-4bf3-9e98-d3af4108da37",
"StartPosition": 0,
"Duration": 55379,
"Comment": "",
"Markers": []
}
],
"TranscriptData": {
...
}
}, {
"MediumId": "82b5ea20-2dbe-4306-b1e6-a5abb2dd105b",
"Clips": [{
"Title": "Clip created from file import",
"Id": "6af746d7-117d-4bba-9050-794be15073bb",
"StartPosition": 0,
"Duration": 3000,
"Comment": "",
"Markers": []
}
]
}
Clips
Clips allow to specify which part of a medium should be used.
Clips are the entities that are referenced from TrackElements.
Property | Description |
---|---|
Title | Clip title |
Id | Unique identifier referenced from a TrackElement |
StartPosition | Start position (offset) inside its medium |
Duration | Duration inside its medium |
Comment | Clip comment |
Markers | MKL? Is this used? How do they relate to Markers on top-level sequence? |
TranscriptData
Sequence
Property | Description |
---|---|
Tracks | Array of tracks |
Markers | Array of markers |
Groups | MKL? |
Tracks
Property | Description |
---|---|
TrackName | Track name |
TrackElements | Array of track elements |
Muted | true/false |
Placeholders | MKL? What is this? |
Locked | true/false |
Color | MKL? which formats are supported? Example: #1879c7 |
TrackElements
Property | Description |
---|---|
Id | Unique identifier |
RefId | Reference to Clip |
Position | Offset on track |
Label | |
Comment | |
Gain | Example: 1 |
Locked | true/false |
Color | MKL? which formats are supported? Example: #1879c7 |
FadeIn | |
FadeOut | |
GainAutomation | MKL? |
TrackElementTranscript | MKL? |
Markers
Groups
How do Files, Media, Clips, Tracks and TrackElements relate to each other?
Files and Media
- There is a one-to-one relationship between a File (property MediumIdRef) and a Medium (property MediumId)
- A file contains information about the essence, e.g. where is it stored and what kind of essence is it
- A medium adds the ability to define clips (parts of a file) and transcription data
Tracks, TrackElements and Clips
- Tracks contain TrackElements
- The TrackElement property Position specifies the offset on the track
- The TrackElement property RefId references a Clip
- The Clip is part of a Medium
- The Clip properties StartPosition and Duration specify the part of the medium that is used
- The Medium is linked to a File by the File property MediumIdRef
Sequence => Track => TrackElement => Clip => Medium => File