Saturday, January 14, 2012

Upgrading Android on my Huawei IDEOS 8150 .. was easy!

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.

Conclusion
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.


Friday, November 4, 2011

Living the Dream - LIVE Electronic Music

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.


Tuesday, September 6, 2011

Home Made Rubber Insoles

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.

Monday, August 29, 2011

I Made An LED Matrix


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

Why:
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...

Squeezer - Pure Juice (Haszari remix)

I have a new remix out - on Newclear Music. The original is by Squeezer, who are from Auckland (NZ). I don't know too much about Squeezer, but when I heard the parts I put my hand up and said "yes please". I haven't really done that before, because I know it takes me a long time to complete a remix (note - this was probably almost a year ago).

Anyway what drew me to the track was the beautiful guitar part - which for me evoked certain 80s film soundtracks, e.g. John Hughes movies, or Twin Peaks. I aimed for a slightly seventies disco downgrade, drenched in acid 303 lines against a chilled out bass and beat. In all, quite a different sound for me, and I'm pleased!

Also on the EP are diverse takes from none other Newclear honcho nsu, AK deep d&b slow burner Soul Science, breakbeat champion Will Marshall, as well as a new remix from Squeezer (the TSV remix).

Go out and buy the EP! This week!

Saturday, August 27, 2011

What Am I Looking For In Music Software

I have spent a lot of time in my life playing with different music-making software, getting excited about what can be done, and ultimately getting bogged down or frustrated. I have also spent a reasonable amount of time working on custom tools for making music. So what am I looking for? And why haven't I found it yet?

It seems in the past ten or so years, music software and technology has become much more powerful, usable, and accessible (i.e. cheap). This, combined with the convenience and ease of digital distribution, is why Cartoon Beats came about - we are mucking around making our own music, and if we are going to be hustling around labels and DJs trying to get them to promote our music, we might as well release it ourselves. So that's great, but something's still missing for me.

Producing a track, and DJing it out have become completely separated for me - one of them involves sitting at a desk, endlessly tweaking and fiddling with a timeline UI in software, the other involves standing up, bashing buttons, waggling my arms and/or nodding my head while subtly adjusting various aspects of a fixed and unchanging recording. I crave the ability to combine all this into one activity - the power and flexibility of composition and production with the immediacy of DJing.

Alongside this I feel a huge disconnect between how I used to make music, when I was in metal/rock band - jamming, noodling on riffs with other players for hours on end. The music was definitely not locked to any timeline, and often evolved in front of you, even if many of the elements were pre-planned or rehearsed. I miss that! And I thought that by now (ten years later, surrounded by supercomputers and extremely affordable USB MIDI gear) it would be much easier to achieve!

So I have tried out lots of software with these kinds of goals in mind. And always found myself wanting more..

So what is it that I want?

Power & Flexibility or Expandability

I don't want a system to present arbitrary limitations or obscure or prevent cutting edge algorithms/processing from being used. A simple example - I want completely flexible routing, which most software provides these days (GarageBand doesn't; Reaper does). A more complex example - should I read about some clever DSP technique, I don't want to have to wait for someone to write a plugin, or attempt to write one myself; ideally the technique can be implemented/prototyped directly in the software (e.g. Pd contains many units which can be used as building blocks to build up arbitrary processing; the same technique in Reaper might require a custom plugin, or a complex mess of routing connecting many plugins). Another way of looking at this: if I happen upon some interesting technique in a tutorial or academic paper, it should be possible to apply/adapt the technique.

Modularity or Abstraction

This is essentially the flip side of flexibility - a complex graph of processing units, or a sequence of audio samples, or notes, should be able to be treated as a single unit, with useful parameters exposed. I have found that this is a limitation with timeline-based software (e.g. Reaper or GarageBand) - a channel is a single level. You cannot for example sequence some audio and then treat the sequence as a unit; you have to paste it, warts-and-all, around the timeline to reuse it, and of course, you can't easily adjust something in all these pasted copies. MIDI clips are one way around this. Also I find myself wanting to package up snippets of automation data.

Visibility

By this I mean not obscuring things. VST plugins for example, are really great units with lots of expressive power packed into them; but more often than not the actual core of what the plugin does is obscured from the user. This is especially frustrating when you have lots of plugins that do subtle variations on the same thing. I don't want these things to be a black box - I want to be able to find out or understand. Note that this is distinct from abstraction above, which allows the user to package things up and (temporarily) obscure the details. Also important here is that the techniques, musical information and processing used in a track should be as easy to get out of the system as they are to put in (so you aren't locked in to the system).

Casualness or Immediacy

Traditional musical instruments and musical gear have presented a very casual kind of interface - you pick the thing up and start playing it, or connect it to a sound system and turn knobs. I want this kind of expressive power to be possible or available to me. What I don't want is for production to be something that I have to lock myself in a room for hours to do - I want it to be more like a toy, and something that I can attempt to involve my kids in (or expose them to). You know, like picking up a guitar.

Conciseness or Efficiency (or Scalability)

I have only recently realised how important this is to me. As my projects got more complex, I found that I was more constrained by previous decisions. With modular software such as Jive (or Pd), while it might technically be possible to play a complete live set of a few original tracks, to do so would not really be feasible. This really ties in with modularity mentioned above, being paranoid about backing up/losing work, and the fact that my day job is writing software. A text-based file format (as in Pd), or even text-based user interface (SuperCollider, or any one of many audio programming languages) is a huge advantage from the point of view of organising the content in a project. On the other end of the scale for example, a binary file format that folds in midi information and audio samples etc is not ideal.

So I'm delighted to announce, I have found a system that appears to do well in all these respects - SuperCollider. In future blogs I will go into why I am so happy with SuperCollider, and what I have been doing with it - but rest assured, I have been jamming with it, playing with it as a musical/audio toy, experimenting with the low-level nuts and bolts of audio processing, and even working towards playing live with it.

Of course this is my own idiosyncratic view, and I don't have much experience with non-free/cheap musical software. In particular, Ableton Live, AudioMulch and energyXT all seem potentially very useful. So feel free to chime in with your experiences...
  • What do you love about the software/system you use to make music?
  • What do you hate?
  • How do you (or how would you like to) perform electronic music live?
  • What do you wish your system could do?

Sunday, June 6, 2010

QtzRendang - Open Source Quartz Composer Movie Renderer

QtzRendang in action

Announcing QtzRendang, a little utility app for rendering Quartz Compositions to movie files. I cobbled this together from example code for my own purposes, and since I couldn't find anything on the web. "My own purposes" typically involve rendering a loopy composition to a six or seven minute movie to make simple but effective videos for Cartoon Beats releases.

By the way, there is another app for this purpose developed by the Kineme crew - QuartzCrystal - which supports spatial and temporal oversampling to reduce temporal and visual jagginess. At US$18 this is a great little app, but as I'm a bit of a nerd and a cheapskate, and there wasn't an open source solution, I decided it was worth writing QtzRendang.

CoGe is another great project on Google code. It's an open source visualisation/VJ mixer/live sequencer.

Back to QtzRendang


Drag & drop a composition, specify frame resolution, duration, and frame rate & output filename. Optionally tweak composition parameters, then click render.

Why is it called QtzRendang? Well it renders .qtz files to movies, and the instant noodles I had that week were rendang flavour. Rendang is a slow-cooked Indonesian dish which seems like it would be pretty yum. I've never had it.

Any questions about the software itself please feel free to ask in the comments.