LA2L for developers

The package description

Every package carries a short JSON description of its sounds, app2live/1. The SDKs write it from what you pass to send(); with the REST API you send it to POST /packages yourself.

{
  "schema": "app2live/1",
  "title": "Treinbeat",
  "source": { "app": "Web808", "app_version": "1.0.0", "platform": "web" },
  "tempo": { "bpm": 92 },
  "items": [
    { "id": "kick", "file": "kick.wav", "bytes": 1693484, "sha256": "…", "name": "Kick", "kind": "loop", "role": "drums", "length_beats": 16 },
    { "id": "robot", "file": "robot.wav", "bytes": 420112, "sha256": "…", "name": "Robot hallo", "kind": "oneshot", "role": "vocal" }
  ]
}

In Live this becomes a scene "Treinbeat (Web808)" with two tracks, "Kick (Web808)" and "Robot hallo (Web808)". The kick is a loop of 16 beats, warped at 92 BPM in Beats mode. The voice plays exactly as the app recorded it.

The package

Field
schemaRequired: "app2live/1".
titleThe name of the scene, with the app after it, and of the folder on disk. Default "Untitled".
source.appAdded to every track name: "Kick (Web808)". Default "App".
source.app_version, source.platformFor your own use, and for support.
tempo.bpm20 to 999: the tempo of every loop without a bpm of its own.
items1 to 32 sounds, 200 MB together.

A sound

Field
fileRequired. A letter or digit first, then letters, digits, space, ., _ or -, ending in .wav, at most 100 characters, unique in the package.
bytes, sha256Required by the server: the exact size of the file, and its SHA-256 in hex.
kind"loop" or "oneshot". Without it the sound is a one-shot, so always send it for a loop.
nameThe name of the sound, at most 40 characters: letters of any language, digits, space and _ - ( ) . ' & + # !. Live adds the app name to the track: "Kick" becomes "Kick (Web808)", so never add it yourself. Default "Sound 1", by position.
roledrums, bass, melodic, vocal, texture or fx: it picks the warp mode of a loop.
bpmThe tempo of this loop, when it differs from tempo.bpm.
length_beatsThe length of the loop in beats.
warp_modeOverrides the role: beats, tones, texture, repitch, complex or complex_pro.
color"#RRGGBB"; Live takes the nearest colour of its palette. Without it, all tracks of a package share one colour, and the next package gets the next one.
gain_dbThe clip gain in dB, from -70 to +24.
idYour own id, sent back with the result of this sound. Default: the position, from 1.

What LA2L does with it

app2live-1.schema.json is the JSON Schema of a description as an app sends it.