Website • Package Docs • Native API Docs
A high-performance DSL for curating music queues and playlists - declarative, composable, and music service-agnostic.
Qilletni is a Domain-Specific Language designed to orchestrate and manipulate music queues, playlists, and metadata across multiple streaming platforms.
Where most music platform APIs are either vastly different from one another or require a learning curve, Qilletni abstracts platform-dependent logic and lets you focus on actual algorithms and orchestration. Qilletni treats music concepts as native constructructs, featuring smart conversion across service providers' types. Extension of the language is easy with a package system and native functions that seamlessly invoke Java methods. Qilletni is a statically typed and object-oriented with a familiar C-style syntax that leverages composition over inheritance.
See the Getting Started page in the docs to start using Qilletni.
Native types feature song, collection, album, and weights, all of which can be converted between service providers seamlessly.
The play keyword can put songs in your account's queue, add it to a list, or invoke a callback.
Example:
Playlists may be played as a whole, but may be weighted which changes the distribution of songs, or adds in custom logic for song selection.
Below is an example of playing 20 songs from a playlist "My Songs" which is 10 songs, with weights applied.
The played songs with and without weights applied:
For a more detailed look at this specific example, with more visualizations, see the weights documentation.
And a more exhaustive example of what weights can do:
Current supported platforms are Spotify, Tidal, and Last.fm. These are provided by external packages called service providers, and are not baked into the language.
Service providers can also convert native types across platforms seamlessly.
Qilletni features C-style syntax, with basic objects represented as Entities. The following is a simple example featuring Qilletni's syntax.
Qilletni has full support for publishable packages with the Qilletni Package Manager (QPM). The backend is hosted via Cloudflare Workers, and uses GitHub for authentication.
For information on package management, see the package management docs.
Official Qilletni packages are documented via the custom documentation generator. To view docs of these packages such as postgres, http, or json, see https://docs.qilletni.dev/.