djctl will operate in demonstration mode when launched without a license key. In this mode, all track titles are reported as “Track Title Unavailable in Demo Mode.” To remove this message, a license must be purchased.
Please see the FAQ and the Quickstart documentation for information on compatability and how to setup and launch djctl. If you need extra help, please drop me a note and I’ll get back to you as soon as possible.
- Three new text-only themes added:
--theme.internalflag to use them.
- The last “seen” track is now displayed in the theme when a client connects. No more waiting until a track update occurs for the initial theme load to populate.
- The new substitution variable,
$ELAPSED$, is now available across all sinks.
- Major refactor of sink logic.
- Unconfigured sink destinations no longer trigger during track updates. Previously, all sink destinations triggered regardless of whether they could publish a track update.
- A new substitution variable,
$ELAPSED$, is now available for use in the history file sink. This variable enables the recording of the elapsed time since the first track and can be particularly useful for generating YouTube chapter markers.
- New internal theme
textadded. This theme is the same as
defaultbut without art. Internal themes can be selected using the
- New internal themes added:
sliderartright. These themes can be selected using the new
- Featured track detection algorithm accuracy is greatly improved.
- Configuration parsing is improved.
--theme.internalflag has been introduced to support selection of an embedded theme. Valid theme names include
sliderspotify. These names mirror the example external themes. The preexisting
--theme.dirflag overrides internal theme selection.
--placeholder.art.internalflag has been introduced to support selection of an embedded track art image to use when album art metadata is unavailable. Valid placeholder art names include
pixelimage is a 1 pixel transparent PNG while the
noteimage is a music note.
- When using the album art file sink, a 1-pixel transparent PNG is created in the absence of album art metadata. For example, when no track is featured or a featured track contains no art metadata (and
--placeholder.art.internalis not specified).
- Genre metadata is now available in the webhook JSON and format string variables. Tracks can also be hidden using this metadata with the
- The webhook JSON payload is now configurable. Use the new
--webhook.json.titleflags to specify the ordered list of JSON keys each corresponding value is placed under. A special
--webhook.json.formatflag is available which, when combined with a
--webhook.formatcustom format string, provides a single custom field for the webhook payload. Please note that all of these fields are optional and the default payload format remains unchanged. See the Webhook API documentation for more information.
- Added experimental CUE sheet support to automate track listing data input for Mixcloud uploads. Use
--cue.filenameto output CUE formatted track log to specified file. To supply CUE header fields, use
--cue.header.titleflags. Please see the CUE sheet documentation section for more information.
- Refactor and cleanup of configuration handling throughout application.
- Added experimental OSC destination support. Use
--osc.portto define the OSC destination. Create artist and song name to OSC address mappings using
--osc.address.songrespectively. More details to come in a documentation update. If you are a Resolume user, I’d love your feedback.
- Added an experimental featured track detection algorithm specifically for users with SC players but no X series mixer. Use
--detection.algorithm=altleadto test this mode. Its detection behavior is similar to the
leadalgorithm introduced in 1.3.0-alpha.3.
- New timestamp substitution variables available for file-based outputs. See the substitution variables section of the documentation for more information.
- Fixed a panic that occurred when losing connectivity to a SC player in a pair. djctl now gracefully shuts down.
- Added new featured track detection algorithm called “lead.” A track is lead if you press play and no other track is also in the play state. When you engage play on a new track, this new track doesn’t transition into lead state until the other track has been stopped. You can activate this algorithm with the
- Added option to set a volume percent threshold to the default featured track detection algorithm (“volume”). By setting a percent lower than 100, you can allow a track to become “featured” even when faders are still up on other tracks. As long as all the other faders have dropped below a threshold (calculated as a percentage of the loudest track in the mix), a track can be promoted to “featured.” Use the
--detection.volume.percentparameter to set this percent value.
- Defaults for track detection algorithm are set to
--detection.volume.percentparameter is not applicable and has no effect.
Unreleased private alpha
- Experimental support for SC players paired with X mixers added. Please report success and failures to firstname.lastname@example.org.
- Experimental support for Spotify Codes. See the Spotify section of the CLI reference guide for more information on configuring this feature. Please note that you will need a djctl license and Spotify Premium account in order to use this feature.
- Exit when error encountered during UDP listener setup rather than panic
- Fixed file and Discord sinks not honoring regex extraction
- Better handle non-Websocket client connecting to Websocket path
- Exit when HTTP listener port conflict detected rather than silently failing
- Fixed rare panic that could occur when StateMap service refuses connection after discovery
- Promoted experimental themes to default; removed old default themes
- Optimized thread startup order
- Eliminated several data race conditions
- Refactored sink code to ensure in-order handling of events during rapid transitions
- Sink performance optimizations
- Added experimental themes with more robust Websocket reconnect logic
- Initial public release