/**
   * Update the tracklist as received from Ardour
   *
   * @param message
   */
  private void updateTrackList(OSCMessage message) {

    Log.d("A", message.toString());

    /*
    for(int i = 0;i < message.getArgCount(); i++){
    	System.out.println("Message at " + i + " : " + message.getArg(i));
    }

    */
    // First arg
    String s = (String) message.getArg(0);

    if (s.equals("end_route_list")) {

      Long frameRate = (Long) message.getArg(1);

      Message msg = transportHandler.obtainMessage(500, frameRate);
      transportHandler.sendMessage(msg);

      Long maxFrame = (Long) message.getArg(2);

      Message msg1 = transportHandler.obtainMessage(400, maxFrame);
      transportHandler.sendMessage(msg1);

      Message msg2 = transportHandler.obtainMessage(1000, routes);
      transportHandler.sendMessage(msg2);

      state = OscService.READY;
    } else {

      org.ardour.Track t = new org.ardour.Track();

      // System.out.println("Track contains: " + s);

      if (s.equals("AT")) {
        t.type = org.ardour.Track.AUDIO;
      } else if (s.equals("MT")) {
        t.type = org.ardour.Track.MIDI;
      } else if (s.equals("B")) {
        t.type = org.ardour.Track.BUS;
      }

      // Set the name of the track
      s = (String) message.getArg(1);
      t.name = s;

      // Set mute state
      Integer i = (Integer) message.getArg(4);
      t.muteEnabled = (i.intValue() > 0);

      // Set solo state
      i = (Integer) message.getArg(5);
      t.soloEnabled = (i.intValue() > 0);

      // Set remote id
      i = (Integer) message.getArg(6);
      t.remoteId = i.intValue();

      // Set record state
      if (t.type == org.ardour.Track.AUDIO || t.type == org.ardour.Track.MIDI) {
        i = (Integer) message.getArg(7);
        t.recEnabled = (i.intValue() > 0);
      }

      routes.add(t);
    }
  }