One of the many neat little touches in Figure (a fun music app/toy for iPhone/iPad/iOS) is how it names documents.

Instead of using the typical "Untitled 1" (or similar) approach, it generates a nonsense word. I like this because you're not forced to think up a name but you still still get a "meaningful" name/handle to use to refer to your lil song doodle thing. Examples: Dukadygo, Hudolyka, Tejugy.

I really liked this idea, and wanted to use it in SuperCollider, so I wrote a little String extension to generate pseudowords.

+ String {
  // Generate a random "word" between 2-5 syllables.
  * randomWord { | minSyllables=2, maxSyllables=5 |
    consonants = "bcdfghjklmnpqrstvwxyz",
    vowels = [
      'a', 'e', 'i', 'o', 'u'
    longvowels = [
      'ee', 'oo'
    dipthongs = [
      'ae', 'ai', 'ao', 'au',
      'ea', 'ei', 'eo', 'eu',
      'ia', 'ie', 'io', 'iu',
      'oa', 'oe', 'oi', 'ou'
    word = Array.fill(rrand(minSyllables, maxSyllables).round, {
      var syllableMode = 20.rand;
      // 10% chance of a diphthong vowel
      {syllableMode >= 18} {consonants.choose ++ dipthongs.choose}
      // 10% chance of a long vowel
      {syllableMode >= 16} {consonants.choose ++ longvowels.choose}
      // 5% chance of no vowel!
      {syllableMode == 6} {consonants.choose}
      // otherwise "typical" syllable (75% chance)
      {syllableMode >= 0} {consonants.choose ++ vowels.choose}

I'll be using this in SuperCollider for naming little midi patterns, song sections etc, as opposed to beat, bass1, bridgechords etc.

Other potential applications of this concept:

  • blog post 'slug' - the url key for a post (coming soon to drongo)
  • names of characters, technologies, plants or animals in creative writing
  • name for your new company/brand.

I made a little animation in html5 canvas of circles that grow. It's pretty slow/unoptimised at the moment. I used the oCanvas library; it seems pretty handy. It starts off with another "clock radio" animation.

Click here for a full-browser-window version.

Here's a playlist of circle related songs.

The Nomad is running a remix contest for his forthcoming album 7.

It seems there's nothing that gets me fired up quite like a remix comp. I heard about this on Saturday afternoon, grabbed the stems, and finished the mix that evening. Pretty happy with that given that I've not completed a track/remix in about a year!

The original is a hip-hop track featuring UK artist Lotek. I've bumped it up a bit (0.3), resulting in a dark bass-house slash vocal-breakbeat thumper. Best thing about this: the vocal. Huge fun layering a nice beat under that flow.

Anyway, have a listen to the track and let me know what you think. Also check out all the other remixes in the soundcloud group.

There are now at least two iOS apps that allow you to DJ using Spotify - Pacemaker and djay.

Spotify logo

I find this really intriguing; I really like the idea of having such a huge catalogue to draw from. I also really like the idea of not having to manage/buy/own all the music I DJ with; being able to focus solely on selection, playlisting, curation, could be really liberating.

Note that it appears you need to be a Spotify Premium subscriber for this to work.

On the other hand, this could open the floodgates to "do you have youtube on there" requesters too ..

This latest genre-bending release features originals from Haszari and SoNic Smith + remixes from nsu.

delicious, healthy fruit

Blood Orange re-presents an iconic film theme (and royal funeral march) as an epic indie electro rock anthem. SoNic brings a unique slice of dark dubstep to the party, and nsu's atmospheric breakbreat-step interpretation takes the tune to another level.

Equally monumental RE: Memory comes from a similar place - glitch beats and choral samples in an archaic, cavernous hall. nsu's remix again whips these elements into unsurpassed breakbeat, while Haszari's minimal tech-house treatment provides groove and disquiet in equal measure.

OUT NOW on Spotify, iTunes, Juno Download and Amazon.

I finally got Traktor to sync with something else - Reaper - using MIDI Clock (running on Mac OS X, on the same machine). Here's how I did it..

  • Start Traktor.
  • Start Reaper.
  • Open Reaper Preferences, select Devices > MIDI Devices.
  • Double click "Traktor Virtual Input" and select "use this device" and "send midi clock to this device".
  • In Traktor, open the sync panel thing up the top by clicking the metronome.
  • Click "EXT" button - this tells traktor to listen for MIDI Clock.

Now get a track (with an accurate grid!) loaded into a Traktor deck. In Reaper, set up something locked to the Reaper beat grid - for example, an audio or midi loop.

Press play in Reaper so your loop plays forever. In Traktor, the sync panel should show a tempo similar to the tempo in Reaper. You'll notice that it wavers about a bit. Press play on your gridded track and click Sync.

The Traktor deck should be roughly in sync with Reaper! (In fact, it is loose enough that it sounds a bit like a real DJ is nudging it.)


  • If we send the MIDI over a network or MIDI connection to a different machine, will this sync well enough to bother with?
  • Can we sync two copies of Traktor (on different machines) this way?

If you have problems (or corrections), comment below so we can determine what I really did to make this work.

I recently (in the last 3 months) bought a new cheapo Android phone Huawei IDEOS 8150. The excuse for this was that my daughter was turning 10, so consequently HAD to have a phone. I figured this was the push I needed to get on the Android train, and maybe simplify things like listening to mp3s on the way to work, having a synced calendar in my pocket, etc etc.

Before getting the phone I did some googling and it appeared that it was possible to make this cheap phone work even better by upgrading from Android 2.2 to some other custom Android based on 2.3. Why? These things were mentioned, and all were compelling:

  • multitouch support (really?);
  • better battery life/power management, aka..
  • ..overclocking/underclocking (hmm...);
  • support running newer apps;
  • something about running apps of the SD card rather than internal storage;
  • generally improved UI performance (aka "snappier")
  • a nice suite of standard software with gesture support (CyanogenMod looks great as a complete environment with documentation..).

So I thought I'd attempt the upgrade before I started using the phone. I figure if I start using it, and get some data on it, I'll be too scared to upgrade later.

Which ROM?
This is actually a really tricky question, because ROMs only tend to be available on dodgy-looking forums as links to even less comforting download sites, and half the time they're down. Also they tend to have cumulative, confusing release notes.

I settled on DroniX (v0.4) eventually, because it didn't seem to have any problems. (Yes - the site is in italian..)

The problems with the others:

  • IDEOS Dev Team's Gingerman - wifi was broken on the one I tried, and getting hold of later builds seemed impossible (lots of broken links, generally disorganised archives of releases)
  • FusionIdeos - Google chat didn't work for me, and there was a permanent notification telling me the network was down (grr!)

Some ROMs appeared to download and install fine, but after the final reboot did not appear to have changed anything about the phone. Possibly they were meant to be used as a skin over another ROM (file sizes for these ROMs vary wildly), or the upgrade process did not complete. So that ruled out other ROMs, e.g. one of the many CyanogenMod ports (possibly from IDEOS Dev Team).

Another thing I didn't like about some ROMs was a generally cruddy UI, with over-the-top boot animations and cluttered home screen/launcher.

Also related to this issue is how to obtain the ROM image. A popular app ROM Manager is available via the Android Market. This simplifies things, maintaining lists of links to various ROM images so you can select and download them directly to the device. This didn't seem to be an option for me - the ROM I needed (there weren't many listed for IDEOS, possibly only one) appeared to be a broken link. So I would download an image from a website and transfer it to the SD card manually (via USB).

Note however that ROM Manager was integral to the process, as it also allows you to backup your current ROM, which is fundamentally useful.

Performing the Upgrade
The process is as follows:

  1. backup anything on phone
  2. install the phone's driver (on a Windows PC)
  3. root the phone (using SuperOneClick, Windows-PC only) 
  4. install ROM Manager app on the phone
  5. backup current ROM
  6. install new ROM 
  7. test, rinse, repeat if desired.

Some details for the above items:

Installing phone drivers on PC:
  • turn on USB debugging on phone:
    • Settings>Applications>USB Debugging > ON
  • connect phone to PC via USB, new hardware wizard
  • select "search for drivers in specific location"
  • browse to adb something folder on phone, next
  • "setting up Android Composite ADB Interface" .. done.
Rooting phone:
  • download latest SimpleOneClick from xda forum:
  • unzip to desktop
  • (re)connect phone to PC via USB cable
    •  don't mount SD card/turn on USB file sharing
  • run SuperOneClick
  • click "Root" button
    •  progress...
  • "do you want me to install busybox?" yes (what is busybox?)
  • "do you want me to run a test?" yes - test successful
  • look in launcher, I now have SuperUser app, success
Installing ROM Manager is straightforward as it is available on the Android Market (unless you've installed a ROM that has broken your network access, or doesn't have the Market app installed).

Backup current ROM image:

  • first, need to install recovery ROM
  • select "Flash ClockworkMod Recovery"
  • failed.. reboot phone first perhaps?
    • disconnect phone from PC
    • reboot phone (off & on)
  • launch ROM Manager, select "Flash ClockworkMod Recovery"
  • select "Huawei U8150 Ideos"
    • progress bar
    •  SuperUser allow? Yes
    • success!
  • ROM Manager, select Backup Current ROM
    • enter a file name, go
    • auto reboots
    • terminal thing with android picture and it says it is backing up
    • various things happen
    • generating md5 sum takes ages
    • auto reboots
  • where is this image saved?
    • it is in the menu of ROM Manager's Manage and Restore Backups
    • it is on the SD card in a folder under clockworkmod
    • it is ~240 mb

Installing new awesome ROM:

  • downloading via ROM Manager menu doesn't seem to work (bad dropbox link?)
  • download a good ROM (see above!) - I downloaded from this forum:
  • mount SD card, copy file, unmount
  • launch ROM Manager, select "Install ROM From SD Card"
    • browse to zip file, select
    • ROM preinstall ok defaults
    •  backup existing NO (default + I just backed up)
    • wipe data and cache NO (default)
    •  wipe dalvik cache YES (default)
      • (dalvik cache is the java virtual machine cache)
    • OK to reboot and install
    • quick console stuff
    • boots into new phone .. is it better?
It's really that simple.

So is it better?

The Truth About Multitouch
As it turns out, you can't magically make this device have multitouch by installing a new ROM. The screen can see both your fingers, but it may confuse the x and y coordinates of them. You can install multitouch test apps which make this clear.

However, even with this limitation, pinch-to-zoom works well in (for example) Google Maps, which is reasonably nice.

What Else is Improved?
Not much really. There is an over/underclocking app preinstalled, so I can tweak the CPU speed, but I don't really use this - I leave the minimum CPU speed at 61 MHz, and max at 652 Mhz, which is probably a little different than the defaults. Perhaps the phone is running a little better and smoother, I can't be sure.

Battery life seems reasonable, probably improved - 2-3 days or more, but I don't do much with the phone.

If Music Playback Stutters This Might Fix It
The only time I used the CPU app was to fix a problem with FusionIDEOS. When the phone was idle (screen blank) and playing music, music playback would stutter. Somehow it occurred to me to raise the lower CPU limit, which was at something like 30 MHz, and this remedied the problem.

I appear to have mainly done this for "the fun" of it, so if you're not that keen, feel free to stick with the standard ROM, it's probably fine. Also note that I gave up attempting to run Android 2.3, I think because I couldn't find any 2.3 ROMs that worked, so I'm ended up running 2.2.1 (an upgrade of 0.0.1).

Thanks to these websites which I found useful, you may too:

I had hoped that this post would be a reassuring and clear step-by-step guide to this process on this device, but time has passed. However if you have any questions feel free to comment below and I may be able to track down details.

If you're looking for incredible new electro - go get some!

As mentioned in a previous post, I have long dreamed about being able to play electronic music live. I've finally done it!

Here's the audio (freely downloadable if you want to listen later, and I may put it on the beats reality podcast too).
Haszari's First Ever Truly Live Set by haszari

A Rudimentary Approach

As far as live electronic music goes, this is a somewhat primitive performance. There are four songs, each has approximately 3-4 parts, and there are a small number of effects/parameters available for me to tweak. Also I'm relying heavily on a great-sounding dub delay effect which can feedback; I've used it to fill things out, give things dynamics and shape, and also used it (screaming feedback like a guitar amp) for short-term sound effects.

Also, of the four songs, 2 are built from short loops of (my own) previously recorded material - i.e. the notes are not being sequenced live, and there is no synthesiser producing the notes live.

Another limitation is that there are no stabs or manually-played samples/notes/effects; everything is in some kind of pattern which is triggered quantised. (The main reason for this is I ran out of time.)

Limitless Possibility

But I'm really excited about what is happening in this live set. Even though I've heavily used samples, I had a huge amount of control available to me live, and more importantly, it was easy and fun to perform with no plan in an underground bunker (through my low rent sound system, running the whole night off a single power outlet). I had a lot of flexibility, nothing much was planned. What did I have control over?
  • Within each song, I had a level fader for each part, meaning the songs were mixed (in a primitive sense) live. These faders could be set up differently depending on the part, for example one synth strings part had the fader pre-reverb.
  • Each part had at least one other parameter on a knob; this could be a filter cutoff for a synth part, or a fader between two drum sounds for a drum part. 
  • All parts had one or more (looped) patterns, which could be triggered/untriggered (quantised to an appropriate interval) with a button. In the case of multiple patterns, a button allowed me to navigate up/down to select the pattern to play next time around.
  • Some parts had a triggerable variation or fill - for example, hold down a button to play a randomised (schizofrenic funk drummer) fill until the button is released.
  • Each song was assignable to a global (DJ-ish) channel - with a level fader, 3-band EQ, and a send to the global dubdelay. Assigning a song also made its parts available - i.e. I could only trigger parts etc when a song was "loaded" into a channel.
  • Although I only had two songs' worth of hardware control, this was live-mappable and I could easily manage (parts of) all four songs playing at once if I want to.
Of course this was all implemented in handy SuperCollider. I spent a bit over a month or so of occasional evenings and bits-of-weekend developing things and jamming it out. Most of my time was spent on infrastructure - things like setting up the code to live-map a song to a hardware channel, implementing a simplistic EQ/band compressor for the channel strip, factoring out the dub-delay effect so all songs can opt-in to using it, etc.

What made this really exciting and fun for me is that I could treat this like a software project. I could start small, implement a simple beat that I could drop & interact with live, building in more complexity later. It felt like prototyping - sketching out a framework of how things should work, and revisiting different aspects later until I had something much more complex, organic and live up and running.

I may post again with more detail about how SuperCollider supports writing and performing like this - so comment if you want to find out more about something.

shoe component trio

This is my shoe blog post. (I think someone else did one but I can now only find that one to link to, comment if you did a shoe blog post.)

I made some rubber insoles for my shoes, to make the soles thicker. I walk to work most days, and I also buy a lot of $30 shoes off 1-day, which usually are pretty lightweight and thin, so I might do this a lot more. The rubber is from one of my favourite shops, Para Rubber.

I've only been wearing them for ten minutes so they might be completely hopeless, we shall see.

Of course I have been meaning to do this for a while (this and about fifty billion other things..).

So the picture is almost self-explanatory. The container lid is drilled with 4x4x2 holes (I bent the 1mm drill bit, so the first 2 holes are 1mm, the rest 1.5mm). The LEDs are inserted, all facing the same direction (oriented so the flat, negative side of each LED is on the same side!). The legs are then bent and soldered together horizontally, and then vertically. In between, I taped (masking tape!) over the previous soldered connections as a crude insulator.

Then I tested it with the multimeter (also a gift from my bro, but one that I got to build myself (with the soldering iron he gave me!)). Handily, the test current from the meter actually lights the LEDs up, which is great for "it's now lights out time, stop reading please" demonstrations to kids (at about 8.10 pm at our house).

Needless to say it works perfectly.

What next for my LED matrix?

Well, about a year ago I bought a whole lot of electronics components for my planned (predicted? hypothetical) USB-MIDI controller project. So the plan is to try driving the LEDs (simple strobed animations, etc) from an AVR brain through two 4051 multiplexers. I don't know much about how to do this but I will learn! Hopefully this will be then form a good light-up part for underneath a 4x4 button array in this supposed controller...