Become a member
Become a member

or
Continue with Google
Log in
Log in

or
Log in using a Google account
News

Impromptu Updated to v2.1

Agrandir
Add this product to
  • Mon ancien matos
  • My current gear
  • My wishlist
Impromptu Audio Impromptu v2
Images
1/1
Impromptu Audio Impromptu v2

Other Music Software from Impromptu Audio .

Write a user review
Reviews
Price engine
Classified Ads
Forums

Impromptu has been updated to v2.1.

New Additions in 2.1:
  • Clock: Impromptu now supports a (clock) function that returns real-world time *now* from the system clock. Two additional functions convert to and from impromptu's standard sample time (clock->samples) and (samples->clock). clock returns the time in seconds and parts of seconds since Jan 1 2001.
  • Spaces: Spaces is a new implementation of Tuple Spaces for impromptu. The idea of tuple spaces originated with the Linda language in the mid 1980s and provides a mechanism for a distributed, associative, shared memory. Spaces provides a mechanism for sharing memory and synchronized concurrency control across processes and remote hosts. There is a new example file 58_spaces.scm that outlines spaces in much more detail. Spaces lives in the pseudo namespaces spaces. Spaces is particularly well suited, and was implemented primarily for, the purposes of sharing state between multiple performers during a livecoding performance.
  • TCP: Much improved TCP support with the ability to now build custom TCP server/client code much more easily. See help io:tcp for more details.
  • IPC: Interprocess communication has been tidied up with some significant bug fixing and feature improvements. In particular the IPC mechanism now supports synchronous messaging by default, returning a value to the caller. IPC is now a top level pseudo namespace - ipc:. ipc:call now defaults to synchronous behavior waiting for a returned result just as any normal scheme call would. ipc:call-async now provides the asynchronous version (that does not wait for a result). IPC can still not send Objective-C objects natively - however, you can now serialize objc objects to strings which can be sent over IPC. Additionally, a bug fix, (ipc:new-process) now blocks until it is properly initialized.
  • "Event" Logging: You can now receive a callback for every evaluated expression. This allows you to (a) record a log of activity for future playback or (b) pass all expressions through IPC for evaluation in another process (potentially on a remote machine for example).

Other Changes and Additions:
  • Improved access for programmatic changes to the text buffer through sys:get-text-buffer and syset-text-buffer.
  • The log now displays the code context in which the error occurred (or TOPLEVEL if the error did not occur within the context of a closure). A stop gap until Impromptu grows up and gains proper debug support. Hopefully the additional code context which now gets printed on error conditions will provide some additional help when debugging.
  • io:midi-in can now operate within any available process but must be registered before it will start receiving messages. You must now register before impromptu's input ports (both virtual and standard) start listening for events. (io:midi-register-events [process name]) process name is optional (defaults to "primary process". See example_05 for more details.
  • A regular expression predicate is now available (regex-match string regex-str).
  • gl:draw-ciimage provides a mechanism for drawing ciimages directly into an opengl context.
  • There have been a couple of OSC changes. osc namespace io:oscend io:osc:receive etc. io:osc-register-events has now changed to io:osctart-server. By default impromptu has always sent integers and real values as 32bit numbers. You can now change default behavior to send 64bit version by setting (io:oscet-integer-64bit?) and (io:oscet-real-64bit?).
  • objc:release now returns the first object in its argument list. The time to release is now an optional argument which defaults to 40000 samples. There is also a shortcut to objc:release named objc:r. All of this means that you can now write code like this (let ((frame (objc:r (gfx:get-movie-frame movie time)))) and the returned frame will be automatically released in 40000 samples. See help for details.
  • atan now accepts an optional second argument.

Major Fixes v2.1:
  • Removed ugly network polling.
  • ipc:new-process now blocks until it is properly initialized.
  • Fixed a subtle continuations bug.
  • Fixed nasty GC bug.
  • Fixed some buggy text stuff.
  • Fixed nil's in list printing bug.
  • Added critical section for REPL writes.
  • Some fixes to gfx:load-image.
  • ipc:new-process now blocks such that you can be sure it has loaded all of it's libraries when it returns.
  • Hopefully fixed gfx:get-image-size.

Be the first to post a comment about this news item

    Would you like to comment this news item?

    Log in
    Become a member

    Viewers of this article also read...

    cookies

    We are using cookies!

    Yes, Audiofanzine is using cookies. Since the last thing that we want is disturbing your diet with too much fat or too much sugar, you'll be glad to learn that we made them ourselves with fresh, organic and fair ingredients, and with a perfect nutritional balance. What this means is that the data we store in them is used to enhance your use of our website as well as improve your user experience on our pages (learn more). To configure your cookie preferences, click here.

    We did not wait for a law to make us respect our members and visitors' privacy. The cookies that we use are only meant to improve your experience on our website.

    Our cookies

    Cookies not subject to consent

    These are cookies that guarantee the proper functioning of Audiofanzine and allow its optimization. The website cannot function properly without these cookies.

    Website preferences

    We store your preferences so that you do not have to re-enter them every time your come back (forums options, dark or light theme, classifieds filter, standard or buzz news, newsletters popups...).

    Log in

    This one makes sure you don't have to re-enter your credentials every time you visit Audiofanzine.

    Analytics

    This data allows us to understand the use that our visitors make of our website in an attempt to improve it.

    Advertising

    This information allows us to show you personalized advertisements thanks to which Audiofanzine is financed. By unchecking this box you will still have advertisements but they may be less interesting :)

    We did not wait for a law to make us respect our members and visitors' privacy. The cookies that we use are only meant to improve your experience on our website.

    Our cookies

    Cookies not subject to consent

    These are cookies that guarantee the proper functioning of Audiofanzine and allow its optimization. The website cannot function properly without these cookies.

    Website preferences

    We store your preferences so that you do not have to re-enter them every time your come back (forums options, dark or light theme, classifieds filter, standard or buzz news, newsletters popups...).

    Log in

    This one makes sure you don't have to re-enter your credentials every time you visit Audiofanzine.

    Analytics

    This data allows us to understand the use that our visitors make of our website in an attempt to improve it.

    Advertising

    This information allows us to show you personalized advertisements thanks to which Audiofanzine is financed. By unchecking this box you will still have advertisements but they may be less interesting :)


    You can find more details on data protection in our privacy policy.