Clojars release 0.1.6
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 toafterglow.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 theIParam
interface, and simplifying the
implementation of dynamic parameters,
issue 20. - The
:adjust-fn
parameter tobuild-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 theovertone.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 inrhythm.clj
), were cleaned
up.