video of Luz in the wild

October 13, 2009

some live drawing in Luz with Josh Fitz at the wheel:

luz live drawing by josh fitz
(right-click image and “Save As…” to download)

music is Cryptic Light by Lunar


new GUI input device manager for Luz music visualizer

October 11, 2009

Luz is a music visualization studio for VJs and creative couch potatoes. It’s free and open source.

Luz can use any combination of Wiimotes, Wacom Tablets, MIDI keyboards and sliders/knobs, gamepads and joysticks, and laptop touchpads (as X/Y pads) to create any sort of interactive visual toy you want. Hand the devices to your friends, attach them to music instruments, gather around the screen (or projector!) and jam.

Luz Visual Toy

Luz can use all of OpenGL’s features, and lets you connect any device input to any effect setting.

Luz Motion Graphics

Luz is getting quite mature and has already been used for many house parties, live shows at the Hawthorn Theatre, and at Reed College’s end-of-year campus party, Renn Fayre.

And now it’s way easier to get started!

Introducing the Luz Input Manager

Luz Input Manager

Luz Input Manager automatically detects all your USB devices and supports one-click Wiimote association. It reads input from any number of devices and sends them over to Luz (either the studio or a live fullscreen show).

What’s more, it sends them via UDP, and can broadcast them over your local network*. This lets you run Luz Input Managers on multiple computers on your network and hook up devices however is most convenient to you. You could run it on two laptops, using one touchpad with each hand (in absolute X/Y mode– very high resolution, precise and expressive), and have all the input data sent to a single version of Luz running on either computer. Or they could drive multiple versions of Luz, perhaps driving multiple projectors… there really are no limits here.

With the completion of the Luz Input Manager, which replaces a bunch of kludgey-but-functional command-line mini-apps (each reading and broadcasting for one device), the whole Luz experience is now 100% point-and-click! Yeah!! (Finally!!!)

Calling all Package Managers!!

I think it’s time to create .DEB, .RPM, and other distro packages for Luz. If you’re interested in creating packages, please get in touch and I’ll be happy to help you any way I can => ian at openanswers dot org

Technical Details

(For any interested linux coders.)

Luz Input Manager is written in C++ and uses Gtk+ via GtkMM.

It uses libwiimote to talk to Wiimotes (which are standard bluetooth devices).

PortMIDI for MIDI.

XInput for Wacom Tablets.

It uses SDL for joysticks/gamepad support. It would seem that XInput should work for this but some gamepads don’t seem to show up there..?

Touchpad data is read directly from the driver using the SHMConfig shared-memory feature of the driver. This is another candidate for XInput if I can get it to report touchpad data in absolute coordinates (as opposed to relative, like a mouse, which is how it’s normally used).

Each device is handled in a separate thread (using pthreads). I’m not convinced this is totally necessary but some types of input (specifically XInput) don’t seem to have a workable non-blocking API for reading events. The Gtk+ GUI is handled in the main thread.

One mutex was necessary to serialize the send() methods of the output stream, which uses liblo to send OpenSoundControl messages (via UDP). Without the mutex I was seeing a race condition crasher. (Problems were to be expected as they were sharing an snprintf to stack memory! heh).

It also uses libunique to prevent multiple application instances on the same computer, which also made it easier to launch the Input Manager directly from the Luz Studio: just fire and forget, and if it’s already running, the existing process gets a message via libunique (actually via D-Bus) and presents itself to the user.

Future plans include:

  • picking up new devices as they’re plugged in (currently requires a restart to pick up new devices),
  • perhaps (optionally?) perpetually scanning for new wiimotes (or for lost ones, such as an accidentally disassociated one during a live performance),
  • perhaps adding blinky lights to show device activity,
  • perhaps adding extra device-type-specific features, like the ability to ‘buzz’ a wiimote (using its rumble capability) as a way to get the attention of a remote wiimote-wielding performer
  • somehow allow for re-plugging of accidentally disconnected gamepads, something SDL doesn’t handle well
  • adding a GUI checkbox for broadcast-to-LAN*

(* requires liblo 0.25 or higher to work, and is presently disabled until I figure out how best to test for that condition in the Makefile or code)


text support in Luz

September 2, 2009

I’m working on adding text rendering to Luz:

Luz Studio Text Example

With Luz you build visuals by combining the 180+ plugins and attaching their settings to human inputs or animations.

The creations you make can be played live using MIDI devices, OpenSoundControl, Gamepads, Wiimotes, laptop touchpads, and Wacom Tablets.

Get Involved!

Luz needs a tutorial video! Do you have a fast linux computer? Interested in visualization?

If you think you could create a good instructional video, I will personally teach you how to use Luz first. Interested? shoot me an email => ian at openanswers.org


now hear this! Audioverse 0.2 audio demo!

July 28, 2009

Audioverse is a new open source, multiplayer, 3d-audio interactive fiction framework.

New in 0.2:
- Environmental audio, now spaces have realistic reverberation
- Proper occlusion modeling using a low-pass filter (sounds are muffled behind walls)
- Narrator support

Listen to the stereo audio demo in ogg or mp3 format. Wear headphones!

In case it’s not clear, that’s a recording of me playing via keyboard. Once I figure out a good audio menu system/GUI, the player can recline with a gamepad/wiimote, headphones, eyes closed, imagination open.

The narrator in this video is Festival using an improved voice but it’s still a little kludgey in places. It can use other text-to-speech technologies.


Occlusion in Audioverse

July 21, 2009

Audioverse got basic occlusion today. That means it knows what’s between your character and a sound source, and can adjust the sound accordingly. When a door closes, sound from behind the door changes.

Currently, we’re only changing the volume to reflect the occlusion, but later we’ll also be applying a low-pass filter to the sound. (I need to improve the Ruby OpenAL bindings to support effect filters!)

Download the OGG video demonstrating occlusion.

(I’ve noticed that gtk-recordMyDesktop insists on producing single-channel audio in the videos. Even when I set it to 2 channels, it only records one. Any ideas?)


Introducing Audioverse — a new multiplayer, 3D-sound interactive fiction framework

July 20, 2009

Audioverse is a framework for creating immersive 3D-audio-enhanced environments as backdrops for interactive fiction.

Audioverse supports 3D-sound placement, natural distance-based attenuation, looping sounds, and the doppler effect to paint the audio world.

Occlusion is in the works, to make sounds change when, for example, someone closes the door between you and the sound source. Realistic reverb and echo effects will also be added for large rooms, cave environments, etc. Update Jul 25 2009: Occlusion (using low-pass filters) and environmental effects (sound reverberation based on room size, wall material, air quality, etc.) have since been added and sound rad.

Audioverse’s server and client are both written in Ruby so they’re super easy to work on. New types of objects can be created quickly, since a great scripting language is built right in.

The client and server communicate via Google Protocol Buffers. The client uses OpenAL to render the sound, and a simple GTK+ terminal provides ANSI colored text and background images.


Audioverse
Download the OGG video of Audioverse in action.
(Wear headphones!)

You can grab Audioverse from Bazaar like this:
bzr co --lightweight lp:~ian-mcintosh/audioverse/trunk audioverse

This project could use an audio engineer to create or find audio samples. Please leave a comment if you’re interested!


OpenStreetMap 2008: A Year of Edits

June 2, 2009

If you’re interested in the OpenStreetMap project, open collaboration, or great data visualization, I recommend OSM 2008: A Year of Edits.


ScreenRuler Interface Design Question

December 24, 2008

Which of these options do you prefer?

Option A

screenruler-0881

Glade file for this version.

Option B

screenruler-090

Glade file for this version.

Comments are open.  Glade files are provided in case you want to make a new mockup.


Announcing ScreenRuler 0.88

December 22, 2008

ScreenRuler 0.88 uses a better method for determining pixels-per-inch and allows you to override it, ensuring that the real-world metrics (inches, mm, etc.) are accurate.  (Pixel and percentage metrics have always been accurate.)

ScreenRuler 0.88

Available in the repo: bzr co lp:screenruler


ScreenRuler update

December 14, 2008

The newest ScreenRuler adds mouse tracking, helping you get precise measurements:

ScreenRuler Mouse Tracking

This is by far the most requested feature so I’m happy to finally get it done. :)   It works for all metrics: pixels, centimeters, inches, picas, points, and percentage.

The arrow keys now move the ruler by 1 pixel, and Shift-ArrowKeys move it by a bigger step, which is the reverse of previous versions.  I hope this makes single-pixel adjustment easier to use and more discoverable.

This release also includes a fix for the only known bug and adds the icon made by Jaanos:

Screenruler About Dialog

After some testing and feedback I’ll update the Ubuntu package.