New Additions in 2.3:
- Debugger: Impromptu now has
a debugger. It has limited "public"
functionality in this release, primarily
providing more detailed error notifications and
error highlighting in the text editor. The
debugger will automatically jump to an error in
the code (if found) - it will also search across
multiple text buffers to try to find a give
function. If you don't want this automatic error
jumping you can turn it off in preferences. The
debugger is a work in progress with more on the
- Timing Constraints: There
are some new timing constraints. Particularly
there is now an upper limit on the execution
time of any given function call. This "execution
deadline" defaults to 1 minute. This default is
at a per process level and can be set per
process using (sys:set-defaulttimeout samples).
Additionally, any callback (now also aliased as
schedule), can have a specific timeout set for
it. To set a callback execution timeout you cons
a time in samples to the start time (this
replaces the old tagging system which is no
- Compiler Updates: The
compiler is slowly getting there. Lots of
additions for this release. Certainly not ready
for real world use yet but if you're feeling
brave feel free to give it a go. New additions
for the compiler include lambda-lifting,
recursion (with tail support), variable args,
named lets, scheme vectors and lists, better
local stack assignment, cond and case
statements, better type checking and loads more.
- Clock and Spaces related stuff:
- You can now sync clocks and metros using
clock:sync-adjust and clock:update-metro.
The clock can also be called using "natural
language" things like: (clock "16:07:35") ;;
clock value at 4:07pm and 35 seconds and
(clock "tomorrow 16:07") ;; clock value
tomorrow at 4:07pm.
- Added spaces:reade and spaces:takee
which take an element number to return as
their first argument. Using a numeric
conditional in a spaces call now forces the
returned tuples to be ordered (the index of
the tuple to use as the numeric match is the
index of the first conditional).
- Fixed ipc remote name proc alias problem by
adding optional second return process name.
- Fixed some remote comms connection problems
(problems with remote processes closing
- all AudioUnit related MIDI events (i.e.
direct from impromptu to AU) now run in audio
thread -> primarily for East West player. You
can turn this behaviour off in the impromptu
preferences (although you probably shouldn't).
- pasting text now calls colour syntax
- Fixed an audio file loading bug.
- Improved performance of MIDI IO.
Impromptu is a free
Mac OS X programming environment for composers,
sound artists, VJs and graphic artists with an
interest in live or interactive programming.
Impromptu is a Scheme language environment, a member
of the Lisp family of languages.
Time plays a major role in the
Impromptu environment allowing accurate real-time
scheduling of events and code. Impromptu is a
dynamic environment designed for the creation and
manipulation of running programs in live