preview: Emotion Forecast at the Big Screen Plaza, NYC. Image by Nina Colosi. Art by M. Benayoun & yours truly.
if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){ ?> } else { ?> } ?>
preview: Emotion Forecast at the Big Screen Plaza, NYC. Image by Nina Colosi. Art by M. Benayoun & yours truly.
First heads up in 2013: I got nerd-sniped shortly after x-mas and reverse-engineered the Digi 003 Firewire protocol with Damien Zammit. The details are a long story, but linux-support for it is underway:
The rebased driver code is at http://gareus.org/gitweb/?p=alsa-driver.git and the broken-out digi003 driver is available from https://github.com/x42/003amdtp.
The submission deadline for the 3rd Computer Art Congress - PostDigital Art - has been extended until June, 18.
CAC.3 invites artists, intellectuals, engineers and scientists to share and discuss their imaginations, creations, inventions and visions of the post digital art. The Call for Papers and Artworks can be found here.
Prototype of automatic backend-switching for JACK2 using dbus.
You may know this Mac/OSX feature: one plugs or unplugs an external audio-interfaces and the system automatically switches the sound to the new device. - It may not always be what you want, but it is an very handy feature especially for mobile systems. and here's how to set this up for JACK on GNU/Linux..
First, we need a mechanism to switch the “JACK backend” in order to switch between audio-interfaces. The task includes taking care of re-connecting physical I/O ports in case they're different on each device.
Second, said mechanism needs to be triggered automatically when a new device is connected or if a device goes away. Here's a short annotated demo-video:
(If Flash is installed JavaScript is activated, you can watch a video inside this web page.)
(well yes, I should have ripped out that USB cord more visibly.. sorry, next time. I might use a real camera too, then.)
myjackctl.sh
myjackctl - or similar program to switch JACK-backends.dbus-triggerd
- or a similar tool that runs a hook-script on receiving dbus-signals.Download:
Note: dbus-triggerd
and a jack2
debian packages (source and i386) are available from
deb http://rg42.org/deb/ sid main
jack2
, dbus-triggerd
(or get the debian package).myjackctl.sh
to PATH (~/bin
or /usr/local/bin
), chmod +x
.tail -f ~/.log/jack/jackdbus.log
killall -9 jackd jackdbus # clean start jack_control eps verbose true # tell jackdbus to be verbose myjackctl.sh alsa hw:0 1024 48000 3 # launch jackd on first ALSA interface -p1024 -r48000 -n3 myjackctl.sh alsa hw:1 # switch to second ALSA interface
Launch some jack clients, players etc and repeat testing with myjackctl.sh
.
dbus-triggerd is a tool to trigger shell-commands upon receiving a given dbus-signal.
It can be used to invoke myjackctl.sh
in order to change the JACK-backend if
org.freedesktop.Hal.Manager,member=DeviceAdded
) → use the newly connected device.org.freedesktop.Hal.Manager,member=DeviceRemoved
) → switch to a fallback audio-interface.org.jackaudio.JackControl,member=DeviceError
) → switch to a fallback audio-interface.
The two last are redundant and exclusive. JACKd still needs a patch to send a DeviceError
. Using HAL's DeviceRemoved
may be problematic for setups with more than two sound-cards if the removed device was not currently the one used by JACK.
Example to launch dbus-triggerd
:
#!/bin/sh make || exit killall dbus-triggerd ### switch to sound 'hw:0' on any DeviceError # This requires a patched JACK2, that sends a DeviceError ./dbus-triggerd $@ "type='signal',path=/org/jackaudio/Controller,interface=org.jackaudio.JackControl,member=DeviceError" --shell "myjackctl.sh alsa hw:0" & # This an alternative to the above, using the HAL message #dbus-triggerd $@ --system "type='signal',path=/org/freedesktop/Hal/Manager,interface=org.freedesktop.Hal.Manager,member=DeviceRemoved,arg0=/org/freedesktop/Hal/devices/usb_device_582_74_noserial_if0_sound_card_2" --shell "myjackctl.sh alsa hw:0" & ### switch to external USB sound device 'hw:2' when it's connected ./dbus-triggerd $@ --system "type='signal',path=/org/freedesktop/Hal/Manager,interface=org.freedesktop.Hal.Manager,member=DeviceAdded,arg0=/org/freedesktop/Hal/devices/usb_device_582_74_noserial_if0_sound_card_2" --shell "myjackctl.sh alsa hw:2" &
Here be dragons…
The mechanism for backend-switching is implemented by a shell-script myjackctl.sh
(which call dbus-send
) that controls jack2d by exchanging dbus-messages.
myjackctl.sh
is started with different command-line parameters on-demand by dbus-triggerd
.
org.freedesktop.Hal.Manager,member=DeviceAdded
org.jackaudio.JackControl,member=DeviceError
(requires patch to jack2)org.freedesktop.Hal.Manager,member=DeviceRemoved
Note that myjackctl.sh
uses the org.jackaudio.PatchBay
dbus-API which is broken in jack2-r4120 (see ticket below) and fixed by Nedko in jack2-r4366.
Future: Instead of patching jack2 to send additional messages (here: org.jackaudio.JackControl,member=DeviceError
), the trigger functionality should be built into jackd, but requires a callback to the control API to be added to JACK.
The shell hook-script (myjackctl.sh) could be implemented easier and more flexible using python (jack-control API bindings) or similar language more suitable to parse and provide audio-port mapping and configuration.
Taking a leaf out of Merkel's book, another German is trying to influence the French elections..
Last week I received a phone call by my collaborating artist and previous supervisor Maurice_Benayoun that there is interest to show a customized version of our project Emotion-Forecast during the final stages of the presidential election campaign for François_Hollande.
My first reply was: “I'm not interested in political statements. Yet the project is free-software, everyone can use and customize it for their needs.”
As citizen of the European-Internet, I am not allowed to vote in France - so here's my change to take some influence nonetheless. While I can't say that I'd vote for Mr. Hollande, I am certain that I don't want to continue living in a country ruled by Sarkozy. Decision-making by exclusion, fine.
So I spent a few hours hacking - which is fun anyway - and a few hours carefully translating English into French.. et voila. La prévisualisation est disponible en ligne.
I'm still undecided what I'd actually vote on next Sunday. Pretty much both options seem like dead-ends to me. Still, I'm happy that people's emotional-concerns are included in an election campaign, which otherwise is pretty much focused on the economic situation: jobs, taxes, dept-crisis,.. sprinkled of immigration and security concerns.
Even though this “emotional weather forecast” will likely be presented out of context of our initial intention, I very much welcome the opportunity that it may inspire some people at least.
Update: it is going to be presented on Sunday, May/6 at Place de la Bastille.
Update: article in huffingtonpost about the project[ion].
There could not be a better motto for the Linux Audio Conference 2012 than the one Stanford already chose: “videtis illam spirare libertatis auram”1). The 10 year anniversary of LAC marks the first time that LAC takes place outside of Europe, and the conference is packed with exciting and interesting presentations, concerts and installations. There's a good amount of sessions on Ambisonics, FAUST, Pure Data, and - although LAC unfortunately takes place parallel to the SuperCollider symposium - SC presentations as well as many other interesting projects.
The Conference Schedule has just been published and I'm eager to visit CCRMA which has been a supporting institution of Linux Audio ever since there has been any sound on GNU/Linux.
Besides reuniting with fellow LADs and meeting creative people from various fields, I'm looking forward to experience the 3D 22 channel sound system with speakers above, around and below the audience level in the CCRMA Listening Room.