Releases: Deep-Symmetry/beat-link-trigger
0.3.8
If you came here from the link in the DJ TechTools article, please look at my instructions for more information about how to install and use Beat Link Trigger!
✨ At this point I strongly encourage everyone to switch to version 0.4.0. It works with current versions of Java, and includes many other improvements.
Version 0.3.8 includes some small improvements to the Carabiner integration discovered when upgrading that project to work with the latest version of Ableton’s Link protocol. It also provides an official entry point for people who want their expressions to be able to automatically open the Player Status window.
Even though this is a small release, I wanted to get it out before starting to work on investigating whether it will be possible to support working in versions of Java more recent than Java 8.
Fixed
- An infinite loop reporting that Carabiner could not be found if you tried to connect to it when it was not running.
- The Carabiner Connection window could show a connected state even after Carabiner had terminated.
Added
- For very special situations, you can configure MIDI Clock and Carabiner tempo sync to ignore the actual track BPM, and sync a fixed tempo value adjusted by the player pitch.
- Provided a safe entry point for expression code to make sure the Player Status window is showing.
0.3.7
This fixes some oversights discovered while helping the larger audience introduced to Beat Link Trigger by the DJ TechTools article build some interesting new integrations. (If you came here from the article, please look at my instructions for more information!)
Because this project is rapidly developing, there is also a
-PREVIEW.jar
file available for download above; this will be more recent than the named release, and will reflect a coherent set of changes to the master branch, planned for the next release. It is posted here to make in-progress downloads available without the need to create a ton of short-lived releases. Once the project settles down, this will no longer be necessary.
Fixed
- Setup expressions are now always compiled before other expressions, so the context they set up is guaranteed to be available even at compile time when Beat Link Trigger is initially launched.
- The Beat Expression is now fired only when beats are received from the player being tracked by the trigger (which is controlled by the Watch Menu, as well as the Enabled Filter if Any Player is
chosen). This makes the Beat Expression far more useful, and an example of synchronizing light shows driven by the Ableton Live timeline locked to actual track positions became practical. I plan
to add that example to the Wiki and/or the User Guide shortly after this release.
Added
- You can now access track album metadata using the
track-album
convenience variable within expressions that work with CDJ status updates (the omission of this was an oversight, prompted by an
oversight in the Beat Link library itself). - If you would like the Player Status Window to be always on top of other windows, you can arrange for that by creating a global variable entry (using the Global Setup Expression) with the key
:player-status-always-on-top
and the valuetrue
before showing the window. - The Beat Link
MetadataFinder
is now imported into the namespace used by the expression compiler, so it is easier to use from your expressions.
0.3.6
This fixes a lingering issue found by the person I originally wrote Beat Link Trigger for, as well as some other small ones reported by the larger audience introduced to it by the DJ TechTools article. (If you came here from the article, please look at my instructions for more information!)
Fixed
- When looping a track that has audio data that extends well past the
final beat in the beat grid, players sometimes report playing a beat
that does not exist in the beat grid. This previously caused an
exception in the log, and the reported playback position would keep
growing without bound as long as the loop continued. The Beat Link
library has been updated to handle this better by interpolating
missing beats at the end of the beat grid, so there is no exception
and the looping of the player is properly reflected in the Player
Status window. - In Windows, the MIDI environment sometimes throws exceptions trying
to find or open devices which do not get thrown on the Mac. These
were interfering with trigger display and event delivery, now they
are more gracefully treated as a missing device, although they still
will get stack traces in the log.
Added
- Now displays the build date in the About box, to make it easier
for people who are kindly testing pre-release versions keep track of
which one they are running. - Also shows the build date and version number at the start of the
log to help remote troubleshooting.
0.3.5
This fixes another issue found by the larger audience introduced to Beat Link Trigger by the DJ TechTools article. (If you came here from the article, please look at my instructions for more information!)
Fixed
-
The embedded CoreMidi4J library which is used to communicate with MIDI devices on the Mac has been upgraded to improve stablity and to better handle working with multiple devices of the same type.
⚠️ Unfortunately, this causes most devices to show up with different names than they used to, so when you upgrade to this version you are going to need to go through all of your triggers that are configured to talk to MIDI devices, and reconnect them to the new device name if it has changed. See the CoreMidi4J project for details.If your device name has changed (and, again, this only affects the Macintosh platform), instead of seeing the Enabled section at the bottom right end of the trigger, you will see “Not found.” in red, just as you would see if the device was unplugged:
-
The embedded Beat Link library which communicates with the Pioneer network has been updated to handle creating metadata caches from playlists that contain more than one copy of the same track. (This would previously fail with an exception when trying to create a duplicate entry in the ZIP file that holds the metadata cache; now extra copies of a track are simply skipped.)
Added
- Taking advantage of the new
TimeFinder
class (which supports the Time and Remain fields in the Player Status window), expressions that run in response to player status updates can use a new convenience variable,track-time-reached
, which will contain how far into the playing track has been reached, in milliseconds. (This value will only be available if theTimeFinder
is running, otherwisetrack-time-reached
will have the valuenil
. The easiest way to make sure theTimeFinder
is running is to open the Player Status window.)
0.3.4
This fixes a problem and adds a feature brought up by the much wider audience finding Beat Link Trigger through the DJ TechTools article. (If you came here from the article, please look at my instructions for more information!)
Fixed
- If you created too many triggers, or your triggers got too large because of complex expressions, they would fail to save because of exceeding the size limit for an entry in the Java Preferences. Even worse, this would happen silently (unless you happened to look in the log file). Now they will be split across multiple entries if needed, and if anything does fail, an error dialog will be displayed.
Added
- A menu item which lets you view the contents of a metadata cache file, so you can work on triggers when you don't have a player or the actual media handy.
0.3.3
This is a small release to improve the new-user experience for the much wider audience that has been introduced to Beat Link Trigger through the DJ TechTools article. (If you came here from the article, please look at my instructions for more information!)
Added
- Log more details of the process of going online, to better support people who are reporting issues with metadata.
Fixed
- Warn that the Player Status window is not very useful until metadata requests are turned on.
- Provide more specific guidance when turning on metadata requests, based on the actual number of physical players detected on the network, and stop offering the unreliable metadata option if there is only one real player, since it cannot be used in that situation.
- Stop logging stack traces on each beat if we are offline but configured to align the master player with Ableton Link.
- Found one more (albeit extremely unlikely) path where trying to create a metadata cache could fail silently, and added an error message there.
0.3.2
This is a small release to fix some issues found by the much wider audience that has been introduced to Beat Link Trigger through the DJ TechTools article. (If you came here from the article, please look at my instructions for more information!)
Fixed
- If there was a problem retrieving metadata when the user asked to create a cache file (for example, if they did not have Request Track Metadata turned on, and there was only one player on the network), it would silently fail with a somewhat cryptic entry in the log file. It now gives a nice error dialog explaining how to fix the situation. It also gives a general error dialog if something else unexpected blows up the process.
- The explanation of the timestamp value inside trigger expressions incorrectly stated they were millisecond values. In order to be compatible with Ableton Link, Beat Link switched to using seconds in its packet timestamps.
- Added information about the
status
value available in the documentation for all triggers where it is present (some were previously missing this important detail). - Improved wording and variable name in grandMA2 example, thanks to suggestions from Alex Hughes.
0.3.1
This is a small release primarily to make it easier for people who discover Beat Link Trigger through
the DJ TechTools article to find the correct version, with on-air indicators and SMPTE integration support.
Added
-
On-Air indicators for players in the Player Status window. If you have the players configured to track and report this, it will be reflected right above the beat phase display.
-
A new version of Beat Link which adds hooks needed to allow triggers to generate SMPTE timecode synced to the track position (with the help of an external daemon).
-
Beat Expressions can now check whether the player sending the beat was on the air by simply looking at the value of
on-air?
as was already possible in Enabled and Tracked Update expressions. (Even though the information is not part of the beat packet itself, Beat Link Trigger will look it up from the last status packet received from the same player.) -
It is now possible to reconfigure the maximum log file size and the number of backlog files by calling, for example:
(beat-link-trigger.logs/install-appenders 1000000 4)
This would allow the log files to grow to a million bytes each, with five backlog files kept. The default maximum size has been doubled to 200,000 bytes, and the default backlog file count remains 5.
0.3.0
This release made a big step forward, taking advantage of some great new information about how to work with the player database server.
Added
- Some major new features taking advantage of the incredible advances
in the Beat Link library over the past month. The most visible are
found in the new Player Status window, available in the Network
menu, providing a detailed view of what the player on the network
are currently doing. - This also provides the foundation for upcoming work to generate
timecode, now that we can keep track of detailed playback location
when a player is playing normally. - There is a whole new infrastructure for creating, attaching, and
using metadata cache files for performance settings with four
players all linked to a single media library, which makes requesting
metadata difficult.
Changed
- Now that metadata has become so fundamental to so many features in
Beat Link Trigger, the user guide assumes that you will be working
with it turned on. You can also make use of the extensive new
metadata cache file mechanism to cope with performance environments
in which requesting the metadata from a player is difficult.
Fixed
- File management is much improved, adding standard file extensions
for configuration and trigger export files, filtering on those
extensions to make it easier to see the right files, asking for
confirmation before overwriting an existing file, and still letting
you load a file with the wrong extension (such as one you saved
before this release) by choosing "All files" in the Open dialog.
0.2.1
Includes the new ability to request track metadata (artist, title, etc.) from the CDJs. This is still more experimental than the rest of the features, but enough people have now used it successfully to make an official release. For other details, see the Change Log.