Recent Events in My Life

On November 18th, I went to Den Bosch to hear the world premiere of The Game of Life’s Wave Field Synthesis doo-dad. It has 192 speakers. Some of the pieces were quite interesting, but all tended to over-focus on how you can do really nifty panning with so many speakers.

On Monday, I played in the Composition department concert at the Korzo Theatre in Den Haag. I played jaw harp in a sort of piece by Jerimiah. It was an odd and long piece that ended with Jerimiah burning the hell out of his arm with dry ice. Jackass-esque. He had to go to the hospital to get bandaged up at the end. I don’t know about performances that involve the composer injuring him or herself. I also don’t know about that performance artist guy who had his friend shoot him in the arm. anyway, some of the pieces in the concert were nice. Many were boring, alas. Almost all were too long. 17 minutes seems to be the magic length for the composition department. You need 3 or 4 ideas to fill that length. Less than 6 ideas, though, unless they’re all closely related to each other. Most folks had too few ideas. Jerimiah had too many, but he was the only one to error in that direction. The concert lasted about 4 hours. It’s very nice that marijuana is legal here. I enjoyed the second half of the concert immensely.
On Wednesday, I went again to the Korzo to hear a concert that had been done also the previous night for the Gaudeamus Festival. Tom Thalim had a piece in it which I liked very much. Also enjoyed the piece of Barbara Ellison especially. (she was also the composer of one of the better Wavefront pieces on the Staurday previous). Overall, the quality of performance was quie high. It was a good concert.
On Thursday, a bunch of folks came over for Thanksgiving dinner. We had lots of food and fun. Also, we now have a an oven.
On Friday, the department of Sonology put on a little concert backstage at the Theatre at school. It was a short concert. Only 45 minutes. Hooray for short concerts. Also, the pieces presented were very good. Most especially impressive was the first one, which featured speakers having down overhead on hinged boards. Two guys with long polls set the speakers going in a pendulum motion. Audience members walked underneath the swinging speakers. the composer of the piece (I wish I remembered who that was) very wisely picked short sounds with high pitches for a lot of his material. This kind of sound is easier to localize and so the effects of the swinging were very apparent. It was quite nice.
On Saturday, Cola and I went to Amsterdam to hang out a bit. We took in the tulip Museum. The most interesting part was the section on the tulip market crash, when irrationally exuberant day traders bid tulip bulb prices up to astonishing heights. You could have a collection of castles for what one bulb went for. Then the market crashed and all the day traders were screwed. My dad told me about this when I was a little kid. I spent a lot of the dot com boom trying not to think about it, card houses or naked emperors, lest I be perceived as one of those who “just didn’t get it.” Aside from that, the museum was kind of boring and I don’t recommend it.
We also went to a store called “Female and Partners.” I have no idea why this place is world famous. Good Vibrations and Toys in Babeland put it to shame. I was disappointed. However, on the way back to the train station, I did find a really warm, nice jacket. It’s made of hemp and so has some silly features like a special pocket which can dispense rolling papers and a few hidden pockets. It’s got a faux fur lining and is water proof. My life is now that much better / warmer.
On Sunday, we went to Brussels. It’s a day trip to Belgium from here! We went to the Musical Instrument Museum there. The museum is one of the best I’ve been to. A very smart curator came up with the idea of giving people radio headphones. If you stand in front of a display case wearing the headphones, you hear typical pieces of music featuring the displayed instrument. Looking at instruments in glass cases is interesting, but it’s better to hear them too.
The museum has a complete set of Saxhorns. Adolphe Sax was the guy who standardized the tuba family. The actual horns made by Sax! I’d never seen them before. The also had Russian bassoons and something called a Monsterophecliede – a ophecliede with a dragon’s mouth. Think of a sort of bassoon-like instrument, but played with a tuba mouthpiece and instead of coming up like a stove pipe, it comes up like a monster.
Lurking hidden away in the basement, are 20th century inventions, like synthesizers and electric guitars. Also relegated to the forgotten floor are bells. Bells are great and deserved more space.
Anyway, the museum is great and should be seen. Don’t forget the basement.
We then wandered around town for a bit and saw the Hôtel de Ville, which is amazing. And then some overly hyped fountain called Manneken Pis. It’s a boy peeing. Across the street, Cola bought snails from a street vendor. We walked around a bit more and then came home.
Tags: ,

New Phone Numbers

Hello all, I have some new phone numbers. +31(0)614132676 works right now. The other number, +31(0)708888187 will start working by the end of the week. My French number still works also: +33(0)667382191

If you are calling from within the Netherlands (or France, for the French number), you leave off the +31 (or +33 for France) and dial the 0 in the parenthesis. If you are calling from another country, like the USA, you dial 00 31, skip the zero, and dial the rest of the numbers. I pay roaming charges for the French phone, so I’d prefer if you call the Dutch numbers unless you’re in France, or if you know that I’m in France when you call.
Tags: ,

Women Take Back the Noise

The new anthology, Women Take Back the Noise is now available via http://ubuibi.org/wtbtn. It looks really cool. Alas, I am not on it because I was confused by the context of the call for works.
The blurb on the webpage says that the CD case actually makes noise when you touch it. I think these little circuit things people are starting to do for distribution are the future. Anway there are only 1000 of these available (well, 999, since one is mine), so order quick if you want one.

Tags: ,

How to write a SC plugin / Biquad filter!!!

The tutorials in the SC distro are not really great on how to do plugins, so here’s my version. After you get the SC source code (an exercize left to the reader), you’re going to want to build your own copy of SC. This should not be the same copy that you use for doing your music, because development tends to break things and you don’t want to break your instrument. First build the Server, then the Plugins, then the Lang.
Once you’ve done that, open the plugin project with Xcode. In the Project Window, pick a target and ctrl-click on it to duplicate it. Then option click the new target to rename it to [whatever]. Double click on it to bring up the target inspector. In the summary, rename Base Product Name to [whatever].scx .  Then click on “Settings” in the list on the left. Change Product Name to [whatever].scx .  Close the target inspector menu and go back to the project menu. Drag your new target into the list for All, so it gets built when you build all.

Ctrl-click on your new target again to Add. Add a new C++ file. Don’t generate a header file for it. This is my example, a biquad filter:

/*
 *  LesUGens.cpp
 *  xSC3plugins
 *
 *  Created by Celeste Hutchins on 16/10/06.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

// all plugins should include SC_Plugin.h
#include "SC_PlugIn.h"

// and this line
static InterfaceTable *ft;

// here you define the data that your plugin will need to keep around
// biquads have two delayed samples, so that's what we save

struct Biquad : public Unit
{

    // delayed samples
    float m_sa1;
    float m_sa2;
};


// declare the functions that your UGen will need
extern "C"
{
 // this line is required
 void load(InterfaceTable *inTable);

 // calculate the next batch of samples
 void Biquad_next(Biquad *unit, int numsamples);
 // constructor
 void Biquad_Ctor(Biquad* unit);
 
}

//////////////////////////////////////////////////////////////////////////////////////////////////


// Calculation function for the UGen.  This gets called once per x samples (usually 66)

void Biquad_next(Biquad *unit, int numsamples) 
{

 // pointers to in and out
 float *out = ZOUT(0);
 float *in = ZIN(0);
    
 // load delayed samples from our struct
 float delay1 = unit->m_sa1;
 float delay2 = unit->m_sa2;

 // the filter co-efficients are passed in.  These might change at the control rate,
 // so we re-read them every time.
 // the optimizer will stick these in registers
 float amp0 = ZIN0(1);
 float amp1 = ZIN0(2);
 float amp2 = ZIN0(3);
 float amp3 = ZIN0(4);
 float amp4 = ZIN0(5);
 
 
 float next_delay;
 
 // This loop actually does the calculation
 LOOP(numsamples,

  // read in the next sample
     float samp = ZXP(in);

  // calculate
     next_delay = (amp0 * samp) + (amp1 * delay1) + (amp2 * delay2);

  //write out result
     ZXP(out) = next_delay - (amp3 *delay1) - (amp4 * delay2);

  // keep track of data
     delay2 = delay1;
     delay1 = next_delay;
     
 );
 
 // write data back into the struct for the next time
 unit->m_sa1 = delay1;
 unit->m_sa2 = delay2;
 
}


// The constructor function
// This only runs once
// It initializes the struct
// Sets the calculation function
// And, for reasons I don't understand, calculates one sample of output

void Biquad_Ctor(Biquad *unit)
{

 // set the calculation function
    SETCALC(Biquad_next);
    
 // initialize data
    unit->m_sa1 = 0.f;
    unit->m_sa2 = 0.f;

 // 1 sample of output
    Biquad_next(unit, 1);

}

// This function gets called when the plugin is loaded
void load(InterfaceTable *inTable)
{

 // don't forget this line
    ft = inTable;

 // Nor this line
    DefineSimpleUnit(Biquad);
}

Ok, when you build this, it will get copied into the plugin directory. But that’s not enough. The SCLang also needs to know about your new UGen. Create a new class file called [whatever].sc .&nbsp You can stick this in your ~/Library, it won’t mess up your other copies of SuperCollider. This is my file:

Biquad : UGen {

 *ar { arg in, a0 = 1, a1 = 0, a2 =0, a3 =0, a4 =0, mul = 1.0, add = 0.0;
  ^this.multiNew('audio', in, a0, a1, a2, a3, a4).madd(mul, add)
 }
 
 *kr { arg in, a0 = 1, a1 = 0, a2 =0, a3 =0, a4 =0, mul = 1.0, add = 0.0;
  ^this.multiNew('control', in, a0, a1, a2, a3, a4).madd(mul, add)
 }
 
}

The multiNew part handles multiple channel expansion for you. The .madd ads the convenience variables mul and add. Your users like to have those.
I don’t know if a biquad filter comes with SC or not. I couldn’t find one. They’re useful for Karplus-Strong and a few other things. For more information, check out the wikipedia article on Filter Design
Tags: ,

HID, SuperCollider and whatnot

My HID classes are now in version 1.0 and I’m not going to change them again without good reason. The change is that the call back action passes the changed element back as the first parameter, followed by all the other parameters. It’s redundant, but it matches how the subclasses work. This should be usable for HID applications. a helpfile will be forthcoming.
I am trying to write a Biquad filter UGen and also to compile a FFTW UGen that my friend wrote. Jam fails when I try to compile, on both files. I think there is a step missing in the howto document on Ugen writing. My code is simple and the syntax looks ok. I’ve done every step (as far as I know) in the howto. bah. I could use a better error message than “jam failed.” sheesh. I like XCode, but it’s got nothing on the Boreland compilers I used to use back in the 90’s as far as usability and usefulness of error messages.
Workaround: Take an existing target and duplicate it and use that for your target. Rename it and replace the files in it with your own. Ctrl-click on the target to bring up a menu with the option to duplicate.
Tags: ,

Chez mois est chez vous

I would like to start by noting that I can’t connect to blogger for some reason from my school network lately, so I’m posting this via lynx in a shell account I have in the US.
Just wanted to post a note to folks I know in Real Life (TM). If you want to come visit me, my futon is your futon. I don’t live in Holland’s most exciting town, but I’m a short and cheap train ride away from some more exciting towns, like Amsterdam. Also, near to Belgium, a bit farther to Cologne. (the most exciting thing about going to Cologne, IMHO, is not Europe’s largest cathedral, but rather that the train passes through Gouda!! Home of cheese! (sort of))
Last year, about one person a month came through. It was nice to have people around. I got caught up in ‘merican stuff and went and did touristy things with them. Touristy things are fun, but I tend not to do them unless I have some sort of reason. However, yesterday I went to a couple museums in The Hague. They were a bit small, but not bad. I purchased a museum card which will gain me free entry into nearly every museum in the Netherlands. Huzzah.
Also, recently, I went to Cologne for the Computing Music festival. (Did I blog this already?) Twas fun. They had instrument-playing robots. The robots have a call for scores, so I will have to make a journey to Gent, Belgium to try out some robot stuff. I need to download some robot manuals to figure out what to do.
I’ve 60% decided that I should enlist Cola to retrieve Xena when she sees her parents. Xena would then fly direct from L.A. to Amsterdam. I need to confer with a vet to see what risks this entails for my poor dog. Also need to confer with the landlord.
If I sell my house in Berkeley, what will I do with all my stuff? I don’t think I should ship my grandmother’s piano to Europe . . .. I wish I could find a job as a composer that would pay to relocate me.
In other news: Nicole is going nuts from boredom and some mother fucking spammer keeps listing me as a return address, which means my inbox fills up with hundreds of bounce messages every day, which aren’t spam-filtered out because they’re not spam. augh. kill.
Tags: ,

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.