Astral Physics

Icon

Fontaine

fontaine

I have now publicised my musical alter-ego, Fontaine. The sound is not quite where I want it yet, but I am posting my progress as I create with new tools: Logic Studio 8 and Live 7.

Check out the “Drop It Like It’s Hot” (Snoop Dogg) Remix!

Fontaine on Virb

Crossdomain Security and GIF Images in Silverlight 2

As mentioned in my brief talk at Microsoft MIX 09 a few weeks ago, we are working on a Silverlight application for a major photo-sharing website. This is the first post of a couple that will explain a few issues we ran into while developing a Silverlight 2 application.

First, Silverlight does not support rendering of GIF images with the <Image> component. You can use a component from ComponentOne to display GIF’s, but it uses WebClient or HTTPRequest to grab the raw image data to process, and therefore becomes restricted by cross-domain security policies. You can find a very clear explanation of Silverlight’s URL security restrictions here, but to summarize, the <Image> and <MediaElement> components are more lax when loading from one domain to another (they do not require that crossdomain policy files live on the server) so you are allowed to load content from domains other than the one that the Silverlight app was served from. However, when using WebClient or HTTPRequest directly (or direct sockets, for that matter), you must have crossdomain policy files on the deploying server.

So, how is this worked around? You can do a few things:

1. Set up a web server proxy solution - Server-side code does not have crossdomain restrictions, so you can deploy server-side code (on the server that is serving the Silverlight application) that will broker requests from the Silverlight client application, go out and get data from wherever you need it, and then tunnel it back through to Silverlight. This has been done for years with Flash and AJAX server requests, but in my opinion, it’s still as messy as ever. Thinking about it just makes me feel a bit dirty.

2. Deploy crossdomain policy files to ALL servers hosting image content - This means that the “major photo-sharing website” that I mentioned above will have to do some work. Fortunately for us, they are in the process of doing this anyway, but if they weren’t, this wouldn’t quite be an option. Quite a few public API’s do have crossdomain policy files in place for this very reason, but many don’t (including Twitter’s API).

3. Host the Silverlight application on a subdomain off of the same domain as the images? - In other words, can we host the application on http://search.yourphotosite.com and access images on http://images1.yourphotosite.com and http://images32.yourphotosite.com? The short answer is no, not without crossdomain policy files…which, according to #2 above, would solve our problem anyway. So, that doesn’t get us anywhere either!

4. When the API returns with a list of images, filter out all images ending in “.gif” - Okay, this is easy to filter out, but not so easy when dealing with the total number of results. We pagination results and show the total, so if the API says there are 4000 images and 2000 of those are GIF’s, we’re going to have a completely incorrect count at all times. Since this is public and popular image-sharing, there are A LOT of GIF’s. This option definitely does not solve the problem.

As far as I know, these are the only options available in this particular instance. We are hoping that the photo-sharing site will expedite the installation of the crossdomain policy files on their image content servers, but without that, we’d be out of luck.

The Beginning of Something Beautiful

Work in progress…this was actually an accident while trying to create something that will hopefully be much more badass. Stay tchuned!

Tendrils (make your own!)

tendrilscropped.png

Inspired by:
Like Spinning Plates (Live) - Radiohead

Oxytrol
Cheap Ephedrine
Cheap Hydrocodone
Buy Vasodilan
Purchase Lincocin
Purchase Pamelor
Buy Himcocid
Order Mobic
Female Viagra
Purchase Revia
Purchase Cipro
Zyban
Purchase Trandate
Methocarbam
Purchase Vasotec
Order Atarax
Order Prilosec
Buy Brite
Human Growth
Buy Septilin
Order ZeritPurchase Carisoprodol
Buy Ophthacare
Cheap Ventolin
Buy Purim
Cheap Mentax
Buy Ultram
Wellbutrin SR
Order Zithromax
Buy Seroquel
Buy Hydrochloride
Tentex Royal
Purchase Vicodin
Order Nirdosh
Buy Darvocet
Buy Clarinex
Order Depakote
Cheap Prograf
Buy Hydrocodone
Order Rhinocort
Cheap Valium
Cheap Cozaar
Buy Trazodone
Order Exelon
Trandate
Purchase Adalat
Order Tulasi
Buy AyurSlim
Order Imdur
Buy Mentax
Purchase Flexeril
Order Isordil
Order Norvasc
Buy Copegus
Order Kytril
Levlen
Cheap Levaquin
Purchase Alprazolam
Buy Norco
Purchase Monoket
Purchase Crestor
Cheap Phentrimine
Buy Revia
Cheap Micardis
Purchase Hydrocodone
Buy Kamagra
Cheap Mobic
Order Zestril
Buy Capoten
Cytotec
Buy Ativan
Buy Diakof
Order Famvir
Accupril
Cheap Kytril
Buy Ephedrine
Cheap Prednisone
Cheap Nonoxinol
Buy Ismo
Purchase Cytotec
Clomid
Zyvox
Buy CLA
Cheap Feldene
Buy Bactroban
Buy Calan
Order Levlen
Lexapro
Purchase Accutane
Buy Methocarbam
Purchase Isoptin
Order Fosamax
Order Brahmi
Order Eurax
Purchase Acomplia
Buy Herbolax
Cheap Lotrisone
Order Avandia
Purchase Effexor
Order Monoket
Purchase Pletal
Order Neurontin
Cheap Mexitil
Tiberius Erectus
Order Lopid
Butalbital
Biaxin
Purchase Renalka
Cheap Speman
Cheap Pletal
Nizoral
Buy Chitosan
Order Keftab
Order Himcocid
Order Lamisil
Purchase V-Gel
Order Norco
Ultimate Male
Order Levitra
Cardizem
Cheap Accutane
Diflucan
Purchase Mevacor
Order Zelnorm
Buy Diabecon
Cheap Vantin
Purchase Dilantin
Order CLA
Buy Lukol
Purchase Bactroban
Order Premarin
Buy Deltasone
Purchase Cyklokapron
Sustiva
Buy Bonnisan
Purchase Zocor
Buy Azulfidine
Buy Keftab
Buy Sarafem
Order Mysoline
Purchase Noroxin
Purchase Prilosec
Buy Lasuna
Cheap Diarex
Buy Dostinex
Acyclovir
Cheap Tramadol
Norvasc
Altace
Buy Levaquin
Purchase Cialis
Meridia
Purchase Shallaki
Cheap Tenuates
Order Hytrin
Purchase Accupril
Buy Brahmi
Glucophage
Mysoline
Effexor
Lopressor
Buy Imdur
Cheap Coreg
Fastin
Buy Zyloprim
Zovirax
Cheap Plendil
Buy Soma
Order Snoroff
Buy Avandia
Order Buspar
Cheap Aceon
Buy Pletal
Buy Leukeran
Prozac
Order Xeloda
Cheap Claritin
Purchase Maxaquin
Buy Prednisone
Cheap Procardia
Purchase Zanaflex
Purchase Azulfidine
Noroxin
Order Shallaki
Buy Noroxin
Order Evecare
Order Prevacid
Purchase Trimox
Zocor
Buy Lopid
Purchase Allegra
Buy Tenuate
Buying Ultram
Cheap Azulfidine
Pletal
Lozol
Phentrimine
Order Cephalexin
Order Evista
Buy Alprazolam
Purchase AyurSlim
Buy Casodex
Buy Zyvox
Cheap Purinethol
Purchase Zebeta
Order Clonazepam
Cheap Norvasc
Buy Allegra
Buy Codeine
Buy Stromectol
Buy Propecia
Purchase Septilin
Purchase Mysoline
Buy Nicotinell
Order Didrex
Order Paxil
Purchase Geodon
Buy Nonoxinol
Lanoxin
Cheap Clarina
Cheap Pravachol
Cheap Geodon
Yerba Diet
Buy Adalat
Cheap Trazodone
Sarafem
Order Clarina
Abana
Order Lortab
Cheap Amoxil
Purchase Ashwagandha
Lisinopril
Order Septilin
Cheap Cephalexin
Buy Menosan
Buying Tenuate
Purchase Requip
Cheap Cytotec
Buy Zebeta
Cheap Oxytrol
Buy Zelnorm
Order Avandamet
Ativan
Differin
Purchase Protonix
Purchase Lipitor
Order Arimidex
Purchase Watson
Order Procardia
Purchase Coumadin
Celebrex
Buy Micardis
Order Sumycin
Cheap Flexeril
Aldactone
Buy Avapro
Buy Geodon
Buy Parlodel
Purchase Abana
Buy Combivent
Order Naprosyn
Purchase Synthroid
Imdur
Order Femara
Cheap Xanax
Purchase Brafix
Cheap Vytorin
Order Acomplia
Order Soma
Danazol
Order Plavix
Order Adipex
Buy Tablet
Superman
Purchase Zimulti
Order StretchNil
Purchase Clarina
Tenuate
Buy Differin
Order Clarinex
Order Fioricet
Buy Femcare
Cheap Emsam
Order Serevent
Cheap Rimonabant
Order Cyklokapron
Buy Omnicef
Cheap Arava
Buy Diovan
Buy Aciphex
Cheap Mentat
Purchase Feldene
Buy Ashwagandha
Purchase Differin
Cheap Femcare
Buy Lariam
Cheap Flovent
Antabuse
Women Attracting
Order Nimotop

Processing Hearts AIR While Merapi Lends a Hand

As promised at my brief demo at 360|Flex San Jose last week, I’m now releasing the Merapi library for Processing.

Processing is a Java-variant built mostly for artists or for anyone who wants to create quick prototypes.

Merapi is an opensource Java library that gives access to Java from AIR - Adobe’s own OS-agnostic runtime (for the desktop, not a browser plugin) built around the Flash Player.

But most of you already knew that.

It’s really nothing too complicated (just wrapping the JAR file correctly), but it will make it a bit easier for you to get started with Merapi in Processing.

What to do:
1) Download Merapi Processing Lib Beta - Merapi is not being publicly released yet.
2) Wherever your actual Processing binary resides, you will find a folder called “libraries”. Unzip merapi.zip into this directory. (Your directory structure should be {ProcessingDir}/libraries/merapi/library/… which will contain all the necessary JAR files for Merapi.)
3) Open your Processing IDE (restart if it’s already open), go to the Menu->Sketch->Import Library->merapi. This will import the necessary packages, but there’s one last step before you’re in the clear. The way that Processing imports all of the packages becomes a bit troublesome. If you simply try to create an instance of the Merapi “Bridge” class, you will get a compile error. To resolve this… (See Step 4)
4) Change the import line import merapi.*” to “import merapi.Bridge;”

Also, Adam Flater whipped up this quick video demonstrating the Lego Mindstorm robot cruising around thanks to Bluetooth<->Java/Merapi<->AIR.

Life

“Speak your mind, even if your voice shakes.”
-Bumper Sticker

“The best things in life aren’t things.”
-Bumper Sticker

“Life will give you whatever experience is most helpful for the evolution of your consciousness.”
-Ekhart Tolle

“Don’t ask yourself what the world needs. Ask yourself what makes you come alive…And then go, and do that. Because what the world needs is people who have come alive.”
-Harold Whitman

Sketchy

Processing is a sketching language. It is very nice for prototyping!

I have been enamored with astronomy and astrophysics lately, and I’m really wanting to model a supernova or galaxy formation, but my skills are just not quite there. I need to better understand the math behind the physics, and the physics behind OpenGL.

Anyway, I made some of these little spherical doodles today.

picture8thumb.jpg

picture9thumb.jpg

picture7thumb.jpg

picture10thumb.jpg

Fibonacci

Fibonaaci was a real swell guy. He figured out some things about life and nature. And numbers. He was neat. Boy, I like smart people.

I did this the other day because I needed a distraction. It’s kinda the Fibonacci sequence. It looks like hair. The calculation choked and took a long time to draw all of the points. This computer was working hard for the money.

picture-6.png
Figure 1: Not Hair
picture-11.png

Inspired by: Fantaisie Impromptu - Frederic Chopin

Art Part Deux: The Update

The art show on Friday went well. We didn’t face any technical difficulties, the art was good, the music was good. I played keys with The Novelist, and our performance went well. Jake Hand recorded it and it actually sounds great for a little stereo mic. I’ll post the full recording when it’s uploaded.

Also, I modified the original visualization a little bit. It was really just a starting point, and once I got all the technical kinks worked out (related to analyzing the audio spectrum data without playing the audio in real-time) I was able to modify the visuals a bit. As you might have noticed, the original was based partially on Brendan Dawes’ Sonic Dots - with some important modifications - but based on it nonetheless. I changed the code up to add some different flare, and I was in the process of changing it more when I ran out of room on my hard drive. Processing tried to save my sketch and since there was no room, it actually deleted all of my code. I can re-write (probably best to refactor now anyway), but this was two days before the show and I took it as a sign that I should just get on with it and turn in what I had. I ended up displaying both versions because I couldn’t decide which I liked more. Here’s version two of the visualization based on Jesse Cohen’s “My First Music Toy.”

Look Mom! I’m an artist!

This is round 1 of what I’m doing for this new-fangled art show coming up on Friday, here in Oklahoma City.

The music was created by Jesse Cohen of The Weather Inside. Yes, I’m in this band, but Jesse writes most of the music, and this is one of my favorite songs he’s done.

NetStep : Browser-based Step Sequencer in Silverlight 2.0

netstepcool.jpg

I was finally able to put some time into making sure that the NetStep application runs using the most recent (publicly) available Silverlight runtime. I have tested this version on the Mac (pretty good performance!) and in Windows (through Parallels on my MacBook Pro). The performance in my particular setup was much better in OSX, but I have a feeling that would be different if I had a dedicated Windows machine.

NetStep is a collaborative musical step sequencer. While this isn’t an electronic music primer, I’ll give a brief overview of what NetStep actually is.

A step sequencer is an electronic music device that allows the musician to program patterns of various “samples,” or sounds. One sample may be a bass drum kick, another might be a snare hit. The musician can use a sequencer to control when these samples are played back, the tempo in which they are played, and usually what effects are applied to the samples.
NetStep is collaborative. In two-player mode, each user is given two “tracks” to work with. (A track is simply a row of “steps” where each step is tied to a sample. When a step is active, the associated sample is played when the playhead moves over that step). When a user hits the “Play” button, NetStep syncs itself with the other user’s sequence, and the two sequences are played back simultaneously. In this way, two musicians can work separately, but preview the joint composition at any time.

Currenty, NetStep only supports built-in samples. In my initial tests, it seems that not all samples are playing correctly, but I’m sure this will be worked out (most likely by a future release of Silverlight).

To get started with NetStep, click here.

**EDIT** - Patrick Hansen, my designer cohort in this NetStep affair, made an informative and attractive user manual.

1. Enter whatever username and password you’d like; this functionality is only used for identification with the other NetStep user.
2. Select single- or multi-user mode. Currently, multi-user is very very primitive. It will only work for two users at a time, and it’s a bit buggy. I hope to improve the backend in the future, or I might just set it up to run as an MSN Messenger application and use the real-time chat network for data transport…we’ll see.
3. Click on the samples in the top 3 “Sample Boxes” in order to preview them. As I said before, it seems that not all samples are playing, so click around until you find some that work.
4. When you find a sample you like, drag it onto a “step.” (The little orange buttons in the main part of the app.) The step will light up, indicating that a sample has been dropped and activated.
5. Play around with different samples, placing them on different steps. If you’re unfamiliar with step sequencers, just play around until you get the hang of how these things work.
6. When you’re ready to test your creation, hit the big orange “Play” button on the bottom. It doesn’t say “Play,” but if you don’t know what a Play button looks like, turn off your computer and pick up a shovel and kill a moose.

You’ll notice the numbers near the play button on the bottom. These represent “pages.” When you start the app, you are automatically on the first page, but the sequencer actually goes through 4 pages before it cycles back around to the beginning. Think of each page as a separate canvas, where all 4 canvases are linked together back-to-back.

I hope this brief tutorial helps the beginner get into this program. Keep in mind that this was built very quickly and is still quirky; I would call this release a Pre-Public Alpha v .2 Super Deluxe Hi-Five. So, please give me feedback; tell me what makes sense, what doesn’t…what works, what features you’d like to see (unless it’s already the most perfect piece of interactive software you’ve EVER seen).

Cheers, Enjoy.