Skip to content

Clojars release 0.1.6

Compare
Choose a tag to compare
@brunchboy brunchboy released this 12 Jan 00:15

This release takes advantage of the new CoreMIDI4J project to finally solve all issues in working with Java on a Mac: you can now connect and disconnect controllers and MIDI clock sources while Afterglow is running without having to restart. It also includes some significant new features based on (or improved by) user suggestions.

Added

  • Support for CoreMIDI4J,
    to preferentially use MIDI devices returned by this new lightweight
    open-source Java MIDI service provider implementation for Mac OS X.
    CoreMIDI4J is compatible with current Java and OS versions, and
    addresses long-standing defects in the standard Java MIDI
    implementation, such as support for System Exclusive messages, and
    reconfiguration of the MIDI environment as devices are connected and
    disconnected. Afterglow's MIDI implementation now gracefully handles
    changes in the MIDI environment, cleaning up bindings, synced
    metronomes, grid controllers, and cue feedback functions associated
    with devices which no longer exist, and making new devices available
    for use.
  • MIDI device watchers, which can set up bindings whenever a specified
    device is connected. These also allow effortless recovery from a
    temporary disconnection from a device during a show.
  • Code cues, making it easy to trigger arbitrary activity from a cue
    grid, issue 34.
  • Links to graphs and expanded discussion in the oscillator API docs.
  • Dimmer effects can now work with dimmer function ranges on
    multipurpose channels as well as full dedicated dimmer channels.
  • Dimmer effects can now also create virtual dimmers for RGB-mixing
    fixtures that don't have any actual dimmer channels, allowing them
    to participate as if they did, by modifying the color effects being
    sent to them.
  • Step parameters can now have interval ratios, like oscillators.
  • When building step parameters, you can now use dynamic parameters as
    inputs.
  • When mapping a MIDI control to a show variable, you can now supply a
    custom function to transform the incoming value into whatever you
    need it to be,
    issue 32.
  • When mapping a midi control to launch a cue, if your controller
    supports velocity (and perhaps also aftertouch, or polyphonic key
    pressure), you can have those values affect cue variables which have
    been defined as velocity sensitive, in the same way that Ableton
    Push pads do.
  • A variation of the sparkle effect which uses dimmer channels,
    issue 35.
  • Some more examples of how to get started working with Afterglow.
  • A variety of other documentation improvements.

Changed

  • Oscillators have been completely redesigned in order to be more
    flexible and easy to create and work with, and to support dynamic
    parameters so their configuration can vary over time or location,
    issue 9. The old
    oscillator and oscillated parameter functions have been deprecated,
    and are now stubs wich delegate to the new implementation. They will
    be removed in an upcoming release.
  • The functions add-midi-control-to-cue-mapping and
    remove-midi-control-to-cue-mapping have been moved from the
    afterglow.show namespace to afterglow.effects.cues, to solve a
    circular dependency conflict which arose in implementing velocity
    and aftertouch support. There are stubs in the old location which
    delegate to the new ones, but they are less efficient than calling
    them in the new location directly, and are deprecated. The stubs
    will be removed in an upcoming release.
  • The former IHeadParam interface has been eliminated, folding its
    semantics into the IParam interface, and simplifying the
    implementation of dynamic parameters,
    issue 20.
  • The :adjust-fn parameter to build-variable-param has been
    renamed :transform-fn to be consistent with the equivalent
    mechanism added for MIDI control mappings in
    issue 32. The
    documentation has been improved a bit as well.
  • The maps which track MIDI bindings now use the underlying Java
    MidiDevice object for their keys, which allows for more efficent
    lookup than the overtone.midi :midi-device map which was
    previously used.
  • The functions which add and remove bindings to MIDI control, note,
    and aftertouch messages have been simplified so they no longer
    require you to come up with a unique keyword to use when later
    removing the binding. Instead, you simply pass the same function
    that was used when establishing the binding to remove it.
  • All functions which allow you to select a MIDI device have been made
    consistent, and now allow you to filter devices by a variety of
    criteria, not just the name and description.
  • Various maps used to manage Afterglow state, such as shows, cue
    grids, Push controllers and auto-binding watchers, are now tagged
    with type metadata to make it easier to recognize them.

Fixed

  • Clicking on the BPM slider in the web interface now updates the BPM
    (previously you had to actually drag it),
    issue 18.
  • Launching :held cues from generic MIDI controllers, the Ableton
    Push, and the web interface, would not succeed if the previous
    effect created by the cue was still in the process of ending,
    issue 33.
  • Make sure MIDI inputs are connected when sync-to-midi-clock is
    called,
    issue 10.
  • Also make sure the MIDI inputs are opened when rendering the web UI,
    so that the sync button will be able to list available sources of
    MIDI clock messages.
  • Clarified that syncing to Traktor beat phase still requires Traktor
    to be configured to send MIDI clock,
    issue 37.
  • Added more detail about how to safely import and configure the
    Afterglow Traktor device mapping.
  • A variety of issues ranging from questionable style through misplaced
    documentation, unused or inaccessible code, preconditions that would
    not take effect, and actual problems, were identified by Kibit and
    Eastwood (after discovering how to work around a crash in Eastwood
    caused by the protocol definitions in rhythm.clj), were cleaned
    up.