http://www.myspace.com/dhlxstudios
Videos of five presentations at the 2011 Global Competitiveness Forum (GCF) discussing extraterrestrial life have been released. The presentations were part of a panel titled “Learning from Outer Space” held on the first day of the forum. Each presentation discussed extraterrestrial life from the perspective of technological innovation, and the implications for humanity. The Global Competitiveness Forum is convened each year by the Saudi Arabian General Investment Authority, and encourages business and political leaders to discuss ways of promoting business competitiveness. The videos that follow were posted by the GCF on youtube and for the first time are available to the general public. The presenters were Nick Pope, Stanton Friedman, Dr Zaghioul El Naggar, Dr Michio Kaku, and Dr Jacques Vallee.
Sunday, April 10, 2011
Friday, April 8, 2011
Sticky sweet animatronic Peep show
http://www.myspace.com/dhlxstudios
posted Apr 7th 2011 11:47am by Mike Nathan
filed under: arduino hacks, led hacks, misc hacks
With Easter quickly approaching, [Kyle] decided to finally build a project that is as tasty as it is wrong.
Behold, the Animatronic “Peep” show! Using nearly a dozen marshmallow Peeps, he constructed a stage for his “performers” and a seating area for their “clients”. The structure was built mostly from balsa wood and foamboard, featuring a retractable curtain, stage lighting, and music.
Once triggered, the embedded Arduino gets to work animating the stage lights and blaring “Cherry Pie” while the sugar-coated onlookers await their entertainment. The curtain is drawn back and a trio of winged dancers emerge one by one, ready to entertain the crowd. The onlookers even offer up dollar bills to the dancers via a servo-mounted arm.
The project uses a total of 10 servos driven by the Arduino, along with an audio decoder chip to provide the proper ambiance for the marshmallow debauchery. [Kyle] says that he put together about 650 lines of code to get the whole thing running, but there doesn’t seem to be any way to download it at the moment – hopefully we’ll see something posted soon.
It might not be high-brow, but it sure beats blowing up old, stale Peeps in the microwave!
Stick around for a trio of videos demonstrating the Peep show as well as revealing some of the stage’s inner workings.
posted Apr 7th 2011 11:47am by Mike Nathan
filed under: arduino hacks, led hacks, misc hacks
With Easter quickly approaching, [Kyle] decided to finally build a project that is as tasty as it is wrong.
Behold, the Animatronic “Peep” show! Using nearly a dozen marshmallow Peeps, he constructed a stage for his “performers” and a seating area for their “clients”. The structure was built mostly from balsa wood and foamboard, featuring a retractable curtain, stage lighting, and music.
Once triggered, the embedded Arduino gets to work animating the stage lights and blaring “Cherry Pie” while the sugar-coated onlookers await their entertainment. The curtain is drawn back and a trio of winged dancers emerge one by one, ready to entertain the crowd. The onlookers even offer up dollar bills to the dancers via a servo-mounted arm.
The project uses a total of 10 servos driven by the Arduino, along with an audio decoder chip to provide the proper ambiance for the marshmallow debauchery. [Kyle] says that he put together about 650 lines of code to get the whole thing running, but there doesn’t seem to be any way to download it at the moment – hopefully we’ll see something posted soon.
It might not be high-brow, but it sure beats blowing up old, stale Peeps in the microwave!
Stick around for a trio of videos demonstrating the Peep show as well as revealing some of the stage’s inner workings.
Thursday, April 7, 2011
Introducing RUIS
http://www.myspace.com/dhlxstudios
Do you want to create fun applications that take advantage of the latest state-of-the-art game controllers? Our work aims to make that possible, even if you don’t have background in computers or programming.
RUIS (Reality-based User Interface System) from Roberto Pugliese on Vimeo.
In the above video you see us with motion tracked Wiimotes doing simple manipulation of objects and navigating in an example application. The application is built on our RUIS (Reality-based User Interface System) platform, which runs on Processing, a development environment that is favored by many artists, designers, and architects among others ( http://processing.org/about/ ).
RUIS-platform connects controllers like Nintendo’s Wiimote to Processing, so you can use them easily in your Processing applications, without the usual hassle that is associated with getting new hardware to work in custom-made software.
Developed in Aalto University’s Department of Media Technology, RUIS-platform is open source and currently in its early stages. We have initiated this project because novel user interfaces (with gestures, 3D tracking, multitouch surfaces, etc.) is an exciting field that still needs many innovations and standards to become more mature.
We believe that hobbyists and amateur software developers have enormous potential for coming up with not only cool applications, but also major contributions to the way we interact with computers. Just consider how our use of technology has been redefined by amateurs like Shawn Fanning (Napster and music distribution) and Mark Zuckerberg (Facebook and social media).
Do you want to create fun applications that take advantage of the latest state-of-the-art game controllers? Our work aims to make that possible, even if you don’t have background in computers or programming.
RUIS (Reality-based User Interface System) from Roberto Pugliese on Vimeo.
In the above video you see us with motion tracked Wiimotes doing simple manipulation of objects and navigating in an example application. The application is built on our RUIS (Reality-based User Interface System) platform, which runs on Processing, a development environment that is favored by many artists, designers, and architects among others ( http://processing.org/about/ ).
RUIS-platform connects controllers like Nintendo’s Wiimote to Processing, so you can use them easily in your Processing applications, without the usual hassle that is associated with getting new hardware to work in custom-made software.
Developed in Aalto University’s Department of Media Technology, RUIS-platform is open source and currently in its early stages. We have initiated this project because novel user interfaces (with gestures, 3D tracking, multitouch surfaces, etc.) is an exciting field that still needs many innovations and standards to become more mature.
We believe that hobbyists and amateur software developers have enormous potential for coming up with not only cool applications, but also major contributions to the way we interact with computers. Just consider how our use of technology has been redefined by amateurs like Shawn Fanning (Napster and music distribution) and Mark Zuckerberg (Facebook and social media).
Wednesday, April 6, 2011
Tuesday, April 5, 2011
Max/MSP Development with Eclipse
http://www.myspace.com/dhlxstudios
This article explains how to setup an environment to develop Java externals for Max/MSP using Eclipse, the popular free open source IDE. Eclipse is cross platform, so these instructions will work on OS X or Windows. No prior experience with Eclipse is assumed. If you already know Eclipse and want a more concise setup guide, see Nick Rothwell's article "Configuring Eclipse for MXJ".
Conventions
When I say "right click", OS X users should understand this is the same as ctrl+click.
[Max installation] refers to the topmost folder of your Max/MSP installation. This is normally /Applications/MaxMSP 4.6 on OS X or :\Program Files\Cycling '74\MaxMSP 4.6 on Windows. (Or Max5 instead of MaxMSP 4.6 if you are using the latest version)
Step by Step Instructions
1.Install Eclipse. Go to the Eclipse downloads page and choose a package. For most people the basic "Eclipse IDE for Java Developers" package is fine. Unpack the download and put the eclipse folder in the location of your choice.
2.Start Eclipse. If this is your first time it will prompt you to select a workspace. This is where your all your Eclipse projects and files will be stored. Check the "Use this as the default and do not ask again" option.
3.Setup your workbench. If this is your first time you'll see a welcome screen. Eclipse can be confusing, so here's a simple but effective way to setup your workbench:
Go to Window -> Open Perspective -> Java. Close the welcome tab if it is still open.
Click Window -> Show View -> Navigator. This will add a file browser tab to the left pane.
Close the Task List and Outline tabs on the right (this should get rid of the right pane) and close the Package Explorer and Hierarchy tabs on the left. We don't need any of these now. You can get them back by selecting them from the Window -> Show View menu.
4.Create a Java project. Right click in the navigator tab and select New -> Java Project. Enter the name max. Then click finish. You should now see a folder named max in the Navigator.
5.Add the Max Jar to your project:
In your Eclipse project, create a folder named lib by right clicking the max folder and selecting New -> Folder.
Copy the max.jar file, found at [Max installation]/Cycling '74/java/lib/max.jar, to your project's lib folder.
Back in Eclipse, right click your max folder and select Refresh. This is so Eclipse will notice max.jar.
Right click your max folder again and select Properties -> Java Build Path -> Libraries -> Add JARs...
Select max.jar and click OK
If you have Jitter, also add jitter.jar to your project. Later you will probably want to download other libraries, and you can add them to your project the same way.
Note: It is not necessary to copy these jars into your project. I consider it a best practice to keep all the files required to build your project inside the project itself. This way you can move your environment to another machine and everything will continue to compile. The downside is when a new version of max.jar is installed, you must remember to manually copy it over to your Eclipse project. If you prefer not to worry about that, choose "Add External Jars..." in the Build Path -> Libraries menu and select the max.jar file under your Max installation instead of copying the jar file to your Eclipse project.
At this point your workspace should look like this (click to enlarge):
6.Set up Max's classpath to find your Java externals. Go to the file [Max installation]/Cycling '74/java/max.java.config.txt. Make a backup! Edit the file and find the line:
; max.dynamic.class.dir /Users/topher/myclasses ;
Make a copy of this line and remove the leading semicolon and change the path to the bin folder of your Eclipse project, so it should look something like this:
max.dynamic.class.dir /Users/adam/Documents/workspace/max/bin
Note: you need to restart Max after making changes to this file.
7.Create your first external. In Eclipse, right click the src folder and select New -> Class. Enter MaxTest for the name and click Finish. Paste this into the MaxTest file: import com.cycling74.max.*;
public class MaxTest extends MaxObject {
public void bang() {
outlet(0, "Congratulations!");
}
}
When you save the file, MaxTest.class should appear in the bin folder. If not check the Project menu: the "Build Automatically" setting should be turned on. This way, every time you save a file Eclipse will compile it automatically.
8.Use your external. Finally! Fire up Max/MSP and add the object [mxj MaxTest]. Connect it's left outlet to a [print] object and send it a bang. In the Max window you should see: Congratulations!
The patch:
#P button 48 46 15 0;
#P newex 48 94 32 196617 print;
#P newex 48 68 70 196617 mxj MaxTest;
#P connect 2 0 0 0;
#P connect 0 0 1 0;
9.Change your external.. Change "Congratulations!" to say something else. Save the file and Eclipse will build it automatically. Go back to Max and click the button again. What's going on here? It still says Congratulations!
Max already loaded the object into memory. It didn't notice your changes. We need to force it to reload the object. Luckily here is an easy way: Delete the object then immediately undo. This will keep your patch in order but the Java code will have reloaded. Now click the button again and it should do what you expect.
Remember this step! If you can't figure out why the code isn't working, maybe you forgot to delete-undo. Some other tips:
Sometimes it takes a moment for Eclipse to build your changes. Be careful of doing the delete-undo too fast or you might load the old code again. When in doubt, delete-undo again.
To save time if you have multiple copies of the object in Max, select them all and delete-undo them together.
Next Steps
Read [Max installation]/java-doc/WritingMaxExternalsInJava.pdf and take a look at the tutorial files in that folder.
To code in Java you need to know the API (application programming interface). Here is the API for Java 5 (you might have Java version 4 or 6 instead, run "java -version" to find out). Cycling '74 provides another API for connecting Java to Max (that's the max.jar file we put in your project). Cycling's API documentation can be found at [Max installation]/java-doc/api/index.html. You will be referring to these a lot so you probably want to bookmark them in your browser.
BUT! The API reference is not an effective resource for learning the Java language. Try googling for tutorials or consider investing in a book on Java.
If you are interested in embedding Ruby in Java, check out my article on doing that. For Ruby in Max, try my ajm.ruby max object.
This article explains how to setup an environment to develop Java externals for Max/MSP using Eclipse, the popular free open source IDE. Eclipse is cross platform, so these instructions will work on OS X or Windows. No prior experience with Eclipse is assumed. If you already know Eclipse and want a more concise setup guide, see Nick Rothwell's article "Configuring Eclipse for MXJ".
Conventions
When I say "right click", OS X users should understand this is the same as ctrl+click.
[Max installation] refers to the topmost folder of your Max/MSP installation. This is normally /Applications/MaxMSP 4.6 on OS X or :\Program Files\Cycling '74\MaxMSP 4.6 on Windows. (Or Max5 instead of MaxMSP 4.6 if you are using the latest version)
Step by Step Instructions
1.Install Eclipse. Go to the Eclipse downloads page and choose a package. For most people the basic "Eclipse IDE for Java Developers" package is fine. Unpack the download and put the eclipse folder in the location of your choice.
2.Start Eclipse. If this is your first time it will prompt you to select a workspace. This is where your all your Eclipse projects and files will be stored. Check the "Use this as the default and do not ask again" option.
3.Setup your workbench. If this is your first time you'll see a welcome screen. Eclipse can be confusing, so here's a simple but effective way to setup your workbench:
Go to Window -> Open Perspective -> Java. Close the welcome tab if it is still open.
Click Window -> Show View -> Navigator. This will add a file browser tab to the left pane.
Close the Task List and Outline tabs on the right (this should get rid of the right pane) and close the Package Explorer and Hierarchy tabs on the left. We don't need any of these now. You can get them back by selecting them from the Window -> Show View menu.
4.Create a Java project. Right click in the navigator tab and select New -> Java Project. Enter the name max. Then click finish. You should now see a folder named max in the Navigator.
5.Add the Max Jar to your project:
In your Eclipse project, create a folder named lib by right clicking the max folder and selecting New -> Folder.
Copy the max.jar file, found at [Max installation]/Cycling '74/java/lib/max.jar, to your project's lib folder.
Back in Eclipse, right click your max folder and select Refresh. This is so Eclipse will notice max.jar.
Right click your max folder again and select Properties -> Java Build Path -> Libraries -> Add JARs...
Select max.jar and click OK
If you have Jitter, also add jitter.jar to your project. Later you will probably want to download other libraries, and you can add them to your project the same way.
Note: It is not necessary to copy these jars into your project. I consider it a best practice to keep all the files required to build your project inside the project itself. This way you can move your environment to another machine and everything will continue to compile. The downside is when a new version of max.jar is installed, you must remember to manually copy it over to your Eclipse project. If you prefer not to worry about that, choose "Add External Jars..." in the Build Path -> Libraries menu and select the max.jar file under your Max installation instead of copying the jar file to your Eclipse project.
At this point your workspace should look like this (click to enlarge):
6.Set up Max's classpath to find your Java externals. Go to the file [Max installation]/Cycling '74/java/max.java.config.txt. Make a backup! Edit the file and find the line:
; max.dynamic.class.dir /Users/topher/myclasses ;
Make a copy of this line and remove the leading semicolon and change the path to the bin folder of your Eclipse project, so it should look something like this:
max.dynamic.class.dir /Users/adam/Documents/workspace/max/bin
Note: you need to restart Max after making changes to this file.
7.Create your first external. In Eclipse, right click the src folder and select New -> Class. Enter MaxTest for the name and click Finish. Paste this into the MaxTest file: import com.cycling74.max.*;
public class MaxTest extends MaxObject {
public void bang() {
outlet(0, "Congratulations!");
}
}
When you save the file, MaxTest.class should appear in the bin folder. If not check the Project menu: the "Build Automatically" setting should be turned on. This way, every time you save a file Eclipse will compile it automatically.
8.Use your external. Finally! Fire up Max/MSP and add the object [mxj MaxTest]. Connect it's left outlet to a [print] object and send it a bang. In the Max window you should see: Congratulations!
The patch:
#P button 48 46 15 0;
#P newex 48 94 32 196617 print;
#P newex 48 68 70 196617 mxj MaxTest;
#P connect 2 0 0 0;
#P connect 0 0 1 0;
9.Change your external.. Change "Congratulations!" to say something else. Save the file and Eclipse will build it automatically. Go back to Max and click the button again. What's going on here? It still says Congratulations!
Max already loaded the object into memory. It didn't notice your changes. We need to force it to reload the object. Luckily here is an easy way: Delete the object then immediately undo. This will keep your patch in order but the Java code will have reloaded. Now click the button again and it should do what you expect.
Remember this step! If you can't figure out why the code isn't working, maybe you forgot to delete-undo. Some other tips:
Sometimes it takes a moment for Eclipse to build your changes. Be careful of doing the delete-undo too fast or you might load the old code again. When in doubt, delete-undo again.
To save time if you have multiple copies of the object in Max, select them all and delete-undo them together.
Next Steps
Read [Max installation]/java-doc/WritingMaxExternalsInJava.pdf and take a look at the tutorial files in that folder.
To code in Java you need to know the API (application programming interface). Here is the API for Java 5 (you might have Java version 4 or 6 instead, run "java -version" to find out). Cycling '74 provides another API for connecting Java to Max (that's the max.jar file we put in your project). Cycling's API documentation can be found at [Max installation]/java-doc/api/index.html. You will be referring to these a lot so you probably want to bookmark them in your browser.
BUT! The API reference is not an effective resource for learning the Java language. Try googling for tutorials or consider investing in a book on Java.
If you are interested in embedding Ruby in Java, check out my article on doing that. For Ruby in Max, try my ajm.ruby max object.
Friday, April 1, 2011
6. THE SOFTWARE BEHIND VERSUM
http://www.myspace.com/dhlxstudios
On a software level, Versum consists of four separate
pieces of software written in different programming
languages, working together as one.
First of all, there is the graphical user interface,
visible in the form of the Control- and Navigator
Window. This interface is written in Java with heavy use
of the Processing library1.
Secondly, there is the core program, also written in
Java. Messages are sent from the interface to this core
and back by use of the User Datagram network Protocol
(UDP). The core program calculates the time, it keeps
track of all the positions of the entities, it determines the
exact speed at which the actor moves, it writes and opens
files, etc.
1See www.processing.org
For the three-dimensional graphical output I use a
third program made in the Max/MSP/Jitter environment.
Via the “mxj” object in Max, messages are sent from the
core to the graphical objects within Max, producing the
moving images that are presented in the Actor Window.
Finally, for calculating the sounds and sending them
to the computer’s sound card there is a fourth program
written in Supercollider. The core program sends
messages to this program via the Open Sound Control
network protocol (OSC), telling it what kind of sounds to
produce at any moment.
Thanks to the UDP and OSC protocols for the
exchange of messages it was easily possible to split the
Versum software into these separate specialized pieces of
software. Making the software modular in this way has
had the great advantage of being able to employ all these
programming languages (Java, Supercollider, Max/MSP)
specifically for what they do best. None of these
languages by themselves would have been sufficient for
producing the end result so efficiently.
On a software level, Versum consists of four separate
pieces of software written in different programming
languages, working together as one.
First of all, there is the graphical user interface,
visible in the form of the Control- and Navigator
Window. This interface is written in Java with heavy use
of the Processing library1.
Secondly, there is the core program, also written in
Java. Messages are sent from the interface to this core
and back by use of the User Datagram network Protocol
(UDP). The core program calculates the time, it keeps
track of all the positions of the entities, it determines the
exact speed at which the actor moves, it writes and opens
files, etc.
1See www.processing.org
For the three-dimensional graphical output I use a
third program made in the Max/MSP/Jitter environment.
Via the “mxj” object in Max, messages are sent from the
core to the graphical objects within Max, producing the
moving images that are presented in the Actor Window.
Finally, for calculating the sounds and sending them
to the computer’s sound card there is a fourth program
written in Supercollider. The core program sends
messages to this program via the Open Sound Control
network protocol (OSC), telling it what kind of sounds to
produce at any moment.
Thanks to the UDP and OSC protocols for the
exchange of messages it was easily possible to split the
Versum software into these separate specialized pieces of
software. Making the software modular in this way has
had the great advantage of being able to employ all these
programming languages (Java, Supercollider, Max/MSP)
specifically for what they do best. None of these
languages by themselves would have been sufficient for
producing the end result so efficiently.
Labels:
3d games,
installations,
music,
performances,
programming,
storytelling
versum
http://www.myspace.com/dhlxstudios
Versum is a realtime virtual 3D world that forces both the audience and the composer to look at the music and listen to the visuals.
The virtual world is seen and heard from the viewpoint of a moving virtual camera with virtual microphones attached, that moves through space, like in a first person shooter game. Within this space, I placed objects that can be both seen and heard, and like in reality, the closer the camera is to them, the louder you hear them. So when the camera moves past several visual objects, you simultaneously hear several sounds fading in and out. Consequently, by carefully choosing the placement of objects, the way that each of them sounds, and the way the camera travels past them, I can create melodies and compositional structures, which are both seen and heard.
All of this is controlled in realtime during live performances: both the path of the camera and the objects which it meets during its travels can be changed according to the whishes of the composer. 'Go' is my second composition made in Versum.
Versum is created with: Max/MSP, Processing, Java, Supercollider, GLSL. Read more about Versum in this pdf.
Thanks to Jorn van Dijk for adding some wicked sounds. And loads of thanks to the Open Source communities developing Supercollider, Processing and Java without whom I couldn't possibly have created all of this fanciness.
Versum is a realtime virtual 3D world that forces both the audience and the composer to look at the music and listen to the visuals.
The virtual world is seen and heard from the viewpoint of a moving virtual camera with virtual microphones attached, that moves through space, like in a first person shooter game. Within this space, I placed objects that can be both seen and heard, and like in reality, the closer the camera is to them, the louder you hear them. So when the camera moves past several visual objects, you simultaneously hear several sounds fading in and out. Consequently, by carefully choosing the placement of objects, the way that each of them sounds, and the way the camera travels past them, I can create melodies and compositional structures, which are both seen and heard.
All of this is controlled in realtime during live performances: both the path of the camera and the objects which it meets during its travels can be changed according to the whishes of the composer. 'Go' is my second composition made in Versum.
Versum is created with: Max/MSP, Processing, Java, Supercollider, GLSL. Read more about Versum in this pdf.
Thanks to Jorn van Dijk for adding some wicked sounds. And loads of thanks to the Open Source communities developing Supercollider, Processing and Java without whom I couldn't possibly have created all of this fanciness.
Labels:
3d games,
installations,
kinetic,
modelling,
music,
performances,
programming,
storytelling
Subscribe to:
Posts (Atom)