S3 i9300 CM11 min/max volume adjust

My phone is too loud for my ears on minimum settings.  If you have a rooted Samsung s3 i9300 on CyanogenMod ROM you can fix it.

To decrease the minimum volume or increase the maximum volume you must edit the file


For me the easiest way to do this was to download ZipME .  This app allows you to make an update.zip file that you can apply with something like clockwork mod.

Choose the file in zipME and browse through to etc/sound to select the “m0” file.


Extract this file onto your home computer.

Screenshot 2015-12-02 01.02.43.png

Change the values and save the zip file the way you found it.  Place the update.zip on your phone and install it via clockwork mod. (VOLUP,POWER,HOME … install from zip etc)

<device name="earpiece">
    <path name="on">
        <ctl name="RCV Switch" val="1"/>
        <ctl name="AIF1DAC1 Volume" val="96"/>
        <ctl name="AIF1 Boost Volume" val="0"/>
        <ctl name="DAC1 Volume" val="96"/>
        <ctl name="Left Output Mixer DAC Volume" val="7"/>
        <ctl name="Right Output Mixer DAC Volume" val="7"/>
        <ctl name="Output Volume" val="CHANGE_THIS_VALUE"/>

        <ctl name="RCV Switch" val="0"/>
        <ctl name="AIF1DAC1 Volume" val="96"/>
        <ctl name="AIF1 Boost Volume" val="0"/>
        <ctl name="DAC1 Volume" val="96"/>
        <ctl name="Left Output Mixer DAC Volume" val="7"/>
        <ctl name="Right Output Mixer DAC Volume" val="7"/>
        <ctl name="Output Volume" val="CHANGE_THIS_VALUE"/>

<device name="headphone">
    <path name="on">
        <ctl name="HP Switch" val="1"/>
        <ctl name="Headphone Volume" val="CHANGE_THIS_VALUE"/>


Alternatively just download this update.zip and edit where it says <!– Edit here –> and install it on your phone. (zip is set to CM11 default values)

Leisure battery VAN power panel.

I have been working on a simple power panel for a friends van to control the internal lights and provide some protection to overusing the battery.

When talking online to some folks a very nice chap called Mikkel Düring Bech Jeppesen made this beautiful PCB for me!



EL Wire


I’m currently messing with some EL Wire’s.   The driver that came with them had the main IC scrubbed of identifying markings.  I want to control the EL Wire with a separate MCU so I’d like to figure out how to do that.

Choices at the moment are :

  1. Solder into the push button of the driver circuit with MCU output possibly via a transistor.
  2. Triac / Opto-isolator on driver output
  3. Cannibalise driver circuit to roll my own.

This might be how it’s wired (first time drawing a pre-existing board)
Screenshot 2015-02-07 13.55.40

Eagle CAD

I’m not enjoying it, but slowly I’m picking up Eagle for making PCB’s.  Not knowing how to do this has held back a lot of projects that I haven’t posted up here.  This simple single sided PCB hopefully marks the start of a new era of understanding for me 😉

No more using Adobe Illustrator to make circuit boards!! (Eagle need to hire some UX consultants, it feels so dirty trying to work in this software)

Screenshot 2015-01-23 16.02.07

Find the nearest node!

It works !! Step one towards creating the space colonisation algorithm… Onwards and upwards.

ArrayList attractors = new ArrayList();
SmartLine myLine = new SmartLine(0, 0, 0, 0);

int freq, widthCount, heightCount, count;

void setup() {
  size(1280, 720);//1280x720

    // Create attractors

  freq = 80;
  widthCount = width / freq;
  heightCount = height / freq;
  count = widthCount * heightCount;

  for (int j = 0; j < widthCount; ++j) {
    for (int k = 0; k < heightCount; ++k) {
      int randy = int(random(0, +freq*.9));
      attractors.add(new Attractor(j*freq+randy, k*freq+randy));

// Main loop

void draw() {
  for (int i = 0; i < attractors.size (); i++) {
    Attractor a = (Attractor) attractors.get(i);

// Attractor Class

class Attractor {

  PVector p;
  boolean disabled = false;

  Attractor(int _x, int _y) {
    p = new PVector(_x, _y);

  void update() {
    if (disabled==false) {
      fill(255, 255);
      rect(p.x, p.y, 5, 5);
    } else {
      fill(0, 255);
      rect(p.x, p.y, 5, 5);

// Line Class

class SmartLine {

  PVector src, des;

  SmartLine(int x1, int y1, int x2, int y2) {
    src = new PVector (x1, y1);
    des = new PVector (x2, y2);

  void update () {
    line(src.x, src.y, des.x, des.y);
  void find () {
    int arraySize = attractors.size();
    int [] distances = new int [arraySize];

    for (int i = 0; i < arraySize; ++i) {
      Attractor a = (Attractor) attractors.get(i);
      distances[i]= int(src.dist(a.p));

    for (int i = 0; i < distances.length; ++i) {
      if (distances[i] == min(distances)) {
        Attractor a2 = (Attractor) attractors.get(i);

Initial Thoughts for Tree Animation


// Grow a tree
// -----------

// Paint the sky
// Paint the ground

// Populate sky with oxygen and light
// Populate ground with nutrients and water

// Develop white roots
// - towards nutrients and water
// - around obstacles
// kill nutrients when reached

// Make a Green Shoot
// - towards free space, and light.
// ( or into 'searching mode')
// - around obstacles
// kill nutrients when reached

// Grow leaves

// Age existing shoots & alter colour
// if conditions met (no light||weight /length)
 drop branch.

So I’m off to learn about how to make arrays of objects and how to have my plant find them, grow towards and eat them.

Procedural Tree

Trying to simulate plant growth is what kindled my desire to learn about coding.   Wanting to do interesting time-lapses of plants forced me to attempt to learn electronics and micro-controllers.

I still haven’t figured out what my end goal is, but I know I want to be able to make art that glorifies nature.

Slowly, I’m figuring out what it is that I must learn in order to achieve my goals …

My earliest attempt at tree growth is my first 3D animation:

It’s not pretty, but it was a start.

Then I had my first go at procedurally creating trees.  I wasn’t happy with the result and at the time and knew nothing about scripting.  This video never got finished as I left it too late to render before handing it in as an assignment … but i gathered all the renderings i was able to get to make this :

The procedural limbs didn’t always render in this video but it was there in geometry :p    Created in 3DS Max’s particle editor with mostly random attributes.  Most of my time was spent trying to learn realflow for the water.

After reading some papers at Algorithmic Botany @University of Calgary.  I got interested in mathematics and what it could say about the growth of plants.

http://algorithmicbotany.org/papers/abop/abop-ch1.pdfScreenshot 2015-01-04 08.53.55

Starting with L-Systems and just recently discovering Space colonisation algorithms I have been growing an appreciation for what is possible.

Now that I know some of the fundamental concepts of coding I want to make my own growing things!

Here’s some already existing examples of what I wish to achieve:


This is the best interactive 3D plant growth simulation I have tried.   Very awesome.

Michael Goodfellow also made a good one over @ Sea of Memes and was nice enough to share his code too.   I have still to get a good look through it. It will probably take me a while to wrap my head around.

Evgen posted a video of his houdini program to vimeo … It looks spectacular.  I haven’t yet considered learning houdini.

Speed tree has some super sexy results, I like their Lights/Texture/Geometry seaming.

I’ll also be looking through the code of Peter Jacobs  space colonisation tree which he was nice enough to share.

Its hard to know what to start working in … some C++ graphics library, Processing, Unity3D … For now I will try to replicate something simple in Processing like :