Dear Americans

I feel it would be remiss if I did not post an encouragement for you to go vote. I sent in my absentee ballot already. I understand if you feel a tad discouraged about many things. However, vote for the local stuff at least.

I went to Cologne last weekend for a music festival that involved instrument-playing robots. Normally the mad scientist behind it dances naked with them, but he did not do so this time. Male nudity in high art type situations is, perhaps, under explored. They have a call for scores. I may go to Belgium to see what I can do with robots. However, I don’t think I will do any naked dancing. This sort of reminds me of a post I made a while ago about creatively placed and decorated joysticks. Maybe I could do some sort of virtual nudity/wanking. I worry that the implicit criticism inherent within such an act would adversely effect my reputation, especially since naked-robot-guy is on the admission committee of the Doc Artes program.
If anybody wants to suggest a project ro research thing that I could do for the next few years, I need ideas. I am not well suited to these applications. I want to know something, I just go do research on it. I don’t need a university for that, just a university library. Or the internet.
Things I’m potentially interested in: Spectral processes and improving the Phase Vocoder UGens in SuperCollider. I also have interest in using music or instillations to communicate political ideas without representations like pictures or words, but rather somehow inherent in the sounds or interactions. Can an installation model a political system in a way that the user ‘gets,’ at least subconsciously? And I like bells. And granular synthesis. And want to (eventually) write an opera.
Tag:

Applying myself

It’s that time of year again, when a young person’s heart turns towards PhD applications. I’m alo thinking about starting an M.A. collection and getting one from here. The program director was encouraging. I will talk to him about it on Monday. I’m also thinking about applying to some PhDs, but I dunno where I want to go. I’m leaning towards continental Europe, but most countries here are civilized enough to have not joined the composers-must-have a PhD craze.

What I need to know to teach is the stuff I can get here. What I need for a piece of paper in order to have any chance of surviving in academia is also possibly available through here (sort of). I speak of the Doc Artes program. The downsides are that it is rumored to be poorly organized and I must learn Dutch (which I’m going to start doing anyway . . . any day now). Upsides are that I could study with people here and learn what I need to learn and get the piece of paper I need if I want to return to the US ever. But they only take 5 people from all disciplines and they already have a few composers, so maybe it’s impossible. Therefore, plan B, C, D, etc are required.
There’s Birmingham and some other schools in the UK. Birmingham, especially is supposed to be becoming the center of the SuperCollider universe, which would be nice. I’m not so sure about the English speaking world, though, alas.
I can probably apply to Berkeley again. I heard two rumors recently: one was that they actually did admit a CNMAT-type person who also knew things like how to do 12 tone row blahdyblah (ack, kill me) and would never admit anyone with my reduced more specialized skill set. The other is that they don’t think you’re serious unless you apply to multiple schools.
DocArtes seems like the best bet, but the chances of me getting in are very small.
Anybody got any thoughts about where to apply? SuperCollider focus is good. Technical Sonology-type engineering focus is good. funded is good. In Europe is good. Some combination of all of these things plus a job and social circle for my gf would be perfect. I’m going to start the University of Les and it will have a campus in either Paris, Amsterdam and/or Prague. Courses will be in French and English. PhDs will be issued based on how well you can improvise. Course work will feature classes on how to get gigs in various locations and how to get grant money.
Tags: , , ,

Tutorials

The world has been crying out for my old SuperCollider tutorial. Well, not crying out, exactly. Some of you may recall that I had the idea of a doing a tutorial as a thesis project. My advisor said it was disorganized and error-riddled, and so the project was abandoned. However, some stranger on the internet convinced me to send it to him.
This stranger was my host for my first two weeks here (the house with no hot water). His name is Jeremiah and he’s cool. Anyway, he told me that he liked the tutorial and I should put it on the internet. So here you go. It’s incomplete and disorganized. The errors aren’t serious. (Lines of code are separated by semicolons, not terminated: that means that the last line in any block doesn’t need a semi colon, but can have one anyway if you want. Blocks are not defined by parenthesis, but rather by curly brackets or by highlighting code with the mouse. These are the two most glaring errors. All the examples should work.)

Edit

Tutorials have moved to http://www.berkeleynoise.com/celesteh/podcast/?page_id=65 . Please update your links.

Bike Woes

The pump was stolen from my bike. It had this shiny black pump that was attached to one of the bars. I had taken the pump off after hearing that it would likely be stolen. Then I decided that it was not doing me any good hidden away and it might as well be put at risk because hidden or stolen, I still don’t have it on my bike. However, this logic failed to account for me being bummed at having lost a pretty good pump. Theft sucks. I wonder if there’s a way I could attach a new one and make it theft proof? I wonder how much the damn pump would cost to replace.
Tags: ,

My 60 second Piece at Mills College Nov 2

60×60 – 60 new works, 60 seconds in length for one hour of new music.

Each year the project grows in artistic and distributive scope. Achieving
its initiative, the 60×60 promotes contemporary composition across the
globe. This year we are having our 3rd annual Pacific Rim Mix. Our premier
will be at Mills College in their Ensemble Room at 8:00 PM this Thursday
November 2nd.

60×60 is a project containing 60 compositions from 60 different composers,
each composition 60 seconds or less in duration. These 60 recorded pieces
are performed in succession without pause for a 1 hour concert. The mission
of the 60×60 project and its presenter, Vox Novus, is to expose the greatest
number of composers and their works to the largest audience possible. 60×60
combines grassroots ideology with cutting-edge methods of presentation and
distribution. Each year the project grows in artistic and distributive
scope. Achieving its initiative, the 60×60 promotes contemporary composition
across the globe.

“60×60 showcases a wealth of brief, contemporary compositions. There are no
live performances, so you can’t really call it a concert. Maybe it would
better be described as a listening party. … It’s like a Whitman’s sampler
of the contemporary new music scene. “
– Sound Sampler Greg Haymes, Times Union, Albany New York February 9, 2006

“60×60 features 60 back-to-back pieces that are each under 60 seconds long,
each by a different modern composer. … It’s like channel surfing through
experimental music.”
Geeta Dayal, Village Voice, New York, New York March 16-22, 2005 Vol. L NO.
11

“… The idea of commissioning sixty pieces each a minute long has elements
of both ingenuity combined with madness: … A minute can be ample time to
express a whole gamut of imaginative sounds, or it can be a constraint which
forces an artist to isolate what is the most important element of a work.
The point of the project is that it enables an audience to take in and enjoy
a cross section of different approaches to new music within a reasonable
duration. And the purpose of Robert Voisey is to promote new music …”
– Ingenuity and madness? Malcolm Miller, Music & Vision, London UK December
24, 2005

60 Composer in this year’s Pacific Rim Mix include:
Nicholas Baldwin, Marc Barreca, Lembit Beecher, John Biggs, Betty Breath,
Darren Buhr, Brigid Burke, Rosalinda Carlson, Sharon Cheslow, Lut Yun
(Lucinda) Chiu, Foster Clark, Jared Commerer, Cindy Cox, Michael Dawson,
A.L. Dentel, Aaron Drake, Alex Eddington, Jessica Gardiner, Kara Gibbs,
David Hahn, Yuko Hamura, Jason Heald, Sungji Hong, Jeffrey Hunkin, Celeste
Hutchins, David Evan Jones, Yasushi Kamata, Koji Kawai, Donald Kepple, Anton
Killin, Nicole Kim, Tuan Hung Le, Cheryl Leonard, James Mason, Beryl Matete,
Deeann Mathews, Dylan Mattingly, Polly Moller, Julia Norton, Rodney Oakes,
Robert Parker, Maggi Payne, Peggy Polias, Carlos Rafael Rivera, Stephen C
Ruppenthal, Simon Munro Rycroft, Margaret Schedel, Jacky Schreiber, Alex
Shapiro, Frank Sprague, Phillip Stearns, Sarah Taylor, Kubilay Uner, John
Villec, Robert Voisey, Shane Watters, Katrina Wreede, Hajime Yabe, Carolyn
Yarnell, and Ivan Zavada

The concert program can be found at the following link:
http://www.voxnovus.com/60×60/2006_Pacific_Rim_Concert_Program.htm

Tag:

I used to have a dog

I miss my dog. A lot. I want to get her in December and bring her here, but that requires some logistical work. For starters, if I bring the dog, that’s a commitment on my part to stay (at least) another year. How will I do that? Can I get a residency someplace? Should I do the MA program at the conservatory? Would they let me in?
Does The Netherlands quarantine pets? If so, can I just take her via France? (France does not quarantine.) Would it be easier on her to rent a car, drive to NYC and fly from there rather than flying from Los Angeles or San Francisco? (If I drive to the East Coast, can I get some gigs on the way?) How much would such a car trip cost?
Can I give her drugs that will make the flight less terrifying? What are the chances the drugs would harm her? What are the chances the trip would harm her? How loud is it in the cargo hold? How often do they forget to heat it? How often do dogs die in transit? Is there a way I can mess with her walking schedule (for example) to make the trip less traumatic? How many hours will she have to spend in a little box?
Will The Netherlands require her health certificate to be diplomatically certified? Can I use the same one that I will use to get her on the plane? (France needs a specific form which must be translated, and the airline needs to have one that’s 3 days old or less, so if I take her via NYC to France I need to first get a certificate from a west coast vet, get that translated, then go to NYC and get another certificate to fly.)
Do dogs need visas?
I didn’t take her last time because I thought the trip would be too traumatic and anyway, I was only going to be gone for a year. Having a dog in a big city can be something of a hassle. She needs to run and there’s not a good place in Paris (except the park where the Eifel Tower is has a lot of running dogs in the evening). On the other hand, there’s places here and I can take her just about everywhere with me: cafés, bookstores, etc, although maybe not to class. Maybe I can get a biiiiiig basket for the front of my bike and take her around with me on the bike, even though she’s a bit too large for the tram.
I think of her alone and terrified in the dark, loud cargo hold of the plane and it makes me sad. So I think about getting another dog here, maybe a small one that would fit in a duffel bag that I really could bring everywhere (even to class if s/he could stay quiet in a bag). A dog small enough to carry on a plane if I need to fly home at the end of the year. But I have a dog! (sorta) The best dog! I just don’t want her to get hurt or too scared. And I don’t want to go to all that trouble of cross country driving plus vet certificates, shipping case and blah blah blah just to have her here until June and then go back to the US.
I wish I could just buy a seat for her.Tags: ,

Ich bin ein Berliner

(I am now back from Berlin, but I wrote this while I was there in the vain hopes of internet access)

I’m in Berlin. I have not yet eaten a berliner, but I have had several apple specialities. Nicole tried the currywurst and the green beer (eww). It also comes in red, but I can’t imagine it’s any better.
What’s with tourists’ need to scribble all over preserved sections of the Berlin wall? Look, here’s our heritage of oppression and the artwork we created from it, says Berlin. Oh, I think I’ll draw my name on it every 2 meters, says tourist.
The Maryanne Amacher installation going on here is really really awesome. If you can get to it, you should go. The photography museum was not so great. Potsdamer place sucks. Alexander platz gets better with time. Kurfürstendamm no. East Side Gallery yes (go quick before somebody else with a sharpie gets all the good spots to scribble on.)
I saw Brandenburg Gate for the first time. (Last time I was here, it was under renovation.) It’s nice looking. Then went to the Reichstag building. The Bundestag was in session. I thought I saw Merkel, maybe. Or perhaps wishful thinking. (A guard told me she was there today and will be back tomorrow.) You can get in for free and walk to the top of a tall dome, from which you can peer down at the assembly. Earlier in the evening, I was walking around and thought I saw the reincarnation of Checkpoint Charlie. It was exactly the same sort of thing, but it appeared to be outside of the US embassy. Why can I be just several meters and a plate of glass away from the Chancellor of Germany, but the American Embassy (arguably a much less important attraction) is blockaded like the cold war?

The next day, I went to the Jewish Museum in Berlin. I am going on the record officially as saying that comparisons between Republicans and Nazis are overblown. However, there are disturbing parallels. In spite of these, there are important differences. Fortunately, the American economy is not as bad off as the German economy was during the time of the Nazis. The democracy (as such) is longer established and more stable. And we aren’t winning any of our foreign military adventures. If these conditions were not true, the current crisis in American government could be much worse.
The Jewish museum is ok. I wish it could have talked more about culture and practices rather than highlighting a few super-wonderful people. If most Jews were living at sustenance levels, for example, it doesn’t make sense to only highlight the life styles of the tiny rich minority.
Today, Cola bought a very old accordiany lens kind of camera. It takes the same kind of file as another of her weird cameras. I got her a battery-powered sewing machine. She is much more taken with the camera. There is a weekly flea market across from our hotel. I almost bought a very cheap, old hand-powered coffee grinder, but, as Cola noted, it was rusty. The café near my apartment in The Hague has it’s cheapest coffee grinders starting at 50€ (!!!), so I thought it might have been worth fixing the antique up, but I’m not sure of a food safe way to de-rust metal.
Today, we also met Ellen’s friend Jörg. He’s cool.
Tags: ,

Things I’m thinking about and doing

I recently went to the M.C. Escher Museum, so I’ve now seen the originals of his crazy drawings. They are really mind-bending. I felt kind of dizzy as I left. The museum is cool, if a bit pricey. If you go, skip the top floor.
Yesterday, my new bike arrived. It is gigantic. It weights 50% of my body weight. I always get things that are too big. My clothes. My bass speaker cabinet. I’m such a size queen. This is probably why I play tuba. Anyway, the bike is awesome. I think I’m going to swap the seat for a leather one. (I so suck at being vegan-ish.) This weekend, we’re going to bike to the sea. The next weekend, we’re going to bike to Delft. Bike = awesome. I love bikes.
I started trying to integrate my joystick into my cheesy live sampling application that I built. It’s educational. Also, I’m wondering if I should make the action more like the action for SCButton. That passes itself as the sole argument. If you want the value, you ask the button for the value. It’s kind of more logical. All of the things that I pass to the button action are things that the element (read: particular sensor) already knows. So, I’m pondering another re-write of my class. I think I probably will.
The school’s fire alarm is going off. I wonder if this has any implications.
Tags: ,

Concert Report

On Sunday afternoon, I played a couple of pieces at the <TAG> Gallerie in The Hague. I got this gig through a myspace connection. Myspace actually works for composers and musicians! You should sign up and post mp3s. It’s a way to get people to listen to your music and maybe go to your real website. Plus you can come up with a metric for judging your self-worth by the number of people who “friend” you. Since hardly anybody will ever de-friend you, your list of friends will keep growing. I have 300 “friends” including dead composers, fictional characters, porn stars, people I know in real life, and Luc, the guy who arranged the gig.
Anyway, the concert started with a trio of Han Buhrs, Guy Harries and Luc Houtkamp doing a sort of planned improv. Then Kader Abdolah talked for a while in Dutch about the history of music and text in Persia. Music was disallowed for a while, but the Qur’an is very rhythmic and so it was declaimed in a very musical manner, but not called music. Also, Dutch has many cognates with English, French and German, but I really need to take a class. Then I played Meditations pour les Femmes, then there was a break, then I played Faux-bourdon Bleu, then the previous trio came back but with the addition of Joseph Bowie on trombone. They did sort of improv cabaret stuff, which was fun.
During the whole thing there was a pair of stereo mics in the back for recording, next to a tripod-mounted video camera. Two people had handheld cameras and were also filming from either side. A guy was also taking pictures. Afterwards, two of the video cameras were used to interview everybody who had been on stage. Cola noted that it was the single most documented concert that she had ever been to.
The guy who interviewed me was surprised to hear that I was new in town, because he was hanging out in the studio of a radio station last week and they were playing a piece of mine Virtual Memory. That piece is truly irritating and terrible. He said that they stopped it before it was finished because it was too awful. The good news is I’ve been played on the radio in The Netherlands. The bad news is that it’s an irritating piece that will not bring me fame, fortune and women.
(You may wonder why I posted it to my web site if it is so fingernails-on-chalkboard. I did because to me it sounds very similar to some of the results of using Gendyn oscillators, which are Xenakis-designed algorithms for using stochastic noise to produce wave forms. They sound like data and Virtual Memory IS data, specifically the contents of my virtual memory buffer on OS 9.)
Anyway, I talked to the guy who (I think) was the DJ who played this harsh mp3 and I might be on the radio in person next month. The time for the show is very nocturnal for Europe, but it’s also webcast and is in the middle of the day for America.
My friend Polly was on the radio in California on KFJC and the next week, she was the most requested artist on the radio station. Which is awesome for her and is a testament to her music, but also shows the power of an interview. But, alas, I have no record out to promote, although I have one out of print and one never-in-print and enough cohesive material for one or two more. Maybe the album paradigm is dead and the future will all be mp3s on the web? On a theoretical level, I’m in favor of low-fi. I use the headphone outs on my computer instead of an expensive d->a converter. But there is noticeable quality loss for the mp3s, even at the relatively high compression rate that I use. (Can I be both lo-fi and rue a loss in richness?) (Obviously the album paradigm is dead, as I haven’t been approached by a record company.)Tags: ,

HID Update

Download a new version of my HID classes.
So I think some of my original features were overzealous, so some of them have been removed. For instance, no more specifying a ControlSpec for an HIDElementExt. If you want to use a ControlSpec, you should attach the HIDElementExt (or HIDElement Group) to a CV by means of the action. Remember that CVs are really useful objects. See their help file for more information. For example of how to attach one:

element.action_({arg vendorID, productID, locID, cookie, value;

 var scaled, mycv;
     
 scaled = element.scale(value);
         
 mycv = cvDictionary.at(element.usage.asSymbol);
 mycv.input_(scaled);
});

Note the name and order of arguments, as this is a change. In this example, cvDictionary is an IdentityDictionary where CVs are stored according to the element.usage as a key. scale is a message you can pass to an element in which a value is scaled according to the min and max to be a number between 0 and 1. You can still set the min and max of an element based on what you’ve discovered to be the range of your HID, regardless of what lies the device may whisper in your ear about it’s ranges.
The HIDDeviceExt.configure message was not really needed, so it’s gone.
Here is some code to automatically generate a GUI for every HID that you have attached. Note that you will need the Conductor class for it, which is part of the Wesleyan nightly build. This GUI will give you one line for every reported piece of the device. You can then try moving everything around to see what their actual ranges are (if they are smaller than reported) and the correlation between reported names and the elements.

(

 var elems, names, cv, conductor;

 HIDDeviceServiceExt.buildDeviceList;
 
 HIDDeviceServiceExt.devices.do({ arg dev;
 
  elems = [];
  names = [];

  dev.queueDevice;

  dev.elements.do ({ arg elm;
  
   cv = CV.new.sp(0, elm.min, elm.max, 0, 'linear');
   elems = elems.add(cv);
   names = names.add(elm.usage.asSymbol);
   elm.action_({ arg vendorID, productID, locID, cookie, value;
     
    var scaled, mycv;
     
    scaled = elm.scale(value);
         
    mycv = conductor.at(elm.usage.asSymbol);
    mycv.input_(scaled);
   });

  });
 
  conductor = Conductor.make({ arg cond; 
  
   elems.do({ arg item, index;
   
    cond.put(names[index], item);
   });
   
   cond.argList = cond.argList ++ elems;
   cond.argNames = cond.argNames ++ names;
   cond.valueItems = cond.valueItems ++ names;
   cond.guiItems = cond.valueItems;
  });
  
  conductor.show;
  
 });
 
 HIDDeviceServiceExt.runEventLoop;

)

Then stop it with:

HIDDeviceServiceExt.stopEventLoop;

But what if the returned values are outside of the range? And what are the cookies? You should then generate a little report to correlate everything.

(
 HIDDeviceServiceExt.devices.do({arg dev;
  [dev.manufacturer, dev.product, dev.vendorID, dev.productID, dev.locID].postln;
  dev.elements.do({arg ele;
   [ele.type, ele.usage, ele.cookie, ele.min, ele.max, ele.minFound, ele.maxFound].postln;
  });
 });
)

You can use the minFound and maxFound data to calibrate the device.
This is my current code to configure my (crappy) joystick:

HIDDeviceServiceExt.buildDeviceList;
HIDDeviceServiceExt.queueDeviceByName('USB Joystick STD');

(

 var thisHID, simpleButtons, buttons, stick;
 
 thisHID = HIDDeviceServiceExt.deviceDict.at('USB Joystick STD');
 simpleButtons = HIDElementGroup.new;
 buttons = HIDElementGroup.new;
 stick = HIDElementGroup.new;
  
 thisHID.deviceSpec = IdentityDictionary[
   // buttons
   trig->7, left->9, right->10, down->8, hat->11,
   // stick
   x->12, y->13,
   wheel->14,
   throttle->15
  ]; 
  
  
 simpleButtons.add(thisHID.get(trig));
 simpleButtons.add(thisHID.get(left));
 simpleButtons.add(thisHID.get(right));
 simpleButtons.add(thisHID.get(down));
  
 buttons.add(simpleButtons);
 buttons.add(thisHID.get(hat));
  
 stick.add(thisHID.get(x));
 stick.add(thisHID.get(y));
  
 // make sure each element is only lsted once in the nodes list, or else it
 // will run it's action once for each time a value arrives for it
  
 thisHID.nodes = [ buttons, stick, thisHID.get(wheel), thisHID.get(throttle)];
  
 // When I was testing my joystick, I noticed that it lied a bit about ranges
  
 thisHID.get(hat).min = -1;  // it gives back -12 for center, but -1 is close enough
  
 // none of the analog inputs ever went below 60
  
  
 thisHID.get(wheel).min = 60;
 thisHID.get(throttle).min = 60;
 // can set all stick elements at once
 stick.min = 60;
)

Setting the min and the max for each element is used for the scale message. If you don’t want to bother scaling the values to be between 0 and 1 (or some other range) and you set the threshold to 0, then you can skip setting the min and the max.
Here is a silly example of using the x and y axis of my joystick to control the frequency and amplitude of a Pbind in a GUI. Note that it would work almost identically without the GUI.

(

 HIDDeviceServiceExt.runEventLoop;

 Conductor.make({arg cond, freq, amp;
 
  var joystick;
 
  freq.spec_(freq);
  amp.spec_(amp);
  
  joystick = HIDDeviceServiceExt.deviceDict.at('USB Joystick STD');
  
  joystick.get(y).action_({ arg vendorID, productID, locID, cookie, value;
  
   freq.input_(joystick.get(y).scale(value));
  });
  
  joystick.get(x).action_({ arg vendorID, productID, locID, cookie, value;
  
   amp.input_(joystick.get(x).scale(value));
  });
  
  cond.name_("silly demo");
  
  cond.pattern_( Pbind (
  
   freq, freq,
   amp, amp
  ));
  
 }).show;
  
)

Don’t forget to stop the loop when you’re done:

HIDDeviceServiceExt.stopEventLoop;

As you may have guessed from this EventLoop business, HIDs are polled. Their timing, therefore, may not be as fast as you’d like for gaming. They may be more suited to controlling Pbinds like in the silly example, rather than Synth objects. You will need to experiment on your own system to see what will work for you.
The HIDElementExt all have a threshold of change below which they will not call their actions. This defaults to 5%, which is a good value for my very crappy joystick. You can set your own threshold. It’s a floating point number representing a percent change, so you can put it between 0 and 1. Again, you may want to experiment with this. Most HIDs have a little bit of noise and flutter where they report tiny actions where none occurred. Also, do not buy a 5€ joystick from a sketchy shop. It’s range will suck and it will will flutter like crazy and it will be slow and you will end up buying a more expensive joystick anyway.

joystick.threshold_(0.01); // 1% 

Tags: , ,