SyntaxTree(SoundClip[] aClipArray, Macro[] aMacroArray) {
        iClipArray = aClipArray; //new String[TYPE_LENGTH];
        iMacroArray = aMacroArray; //new Macro[TYPE_LENGTH];
        //iClipDurationArray = new int[aClipArray.length];//just in case
        
        //find the start ids;
        startMacroIdArray = new int[TYPE_LENGTH];
        for (int i= 0; i< aMacroArray.length;i++) {
            if (aMacroArray[i].getMacroName().equals("SoundListNormal")) {
                startMacroIdArray[TYPE_TURN_INSTRUCTION] = i;
            } else if (aMacroArray[i].getMacroName().equals("SoundListSpeedCam")) {
                startMacroIdArray[TYPE_SPEED_CAMERA] = i;
            } else if (aMacroArray[i].getMacroName().equals("SoundListOffTrack")) {
                startMacroIdArray[TYPE_OFF_TRACK] = i;
            } else if (aMacroArray[i].getMacroName().equals("SoundListAtDest")) {
                startMacroIdArray[TYPE_DESTINATION_REACHED] = i;
            } else if(aMacroArray[i].getMacroName().equals("SoundListGpsChange")) {
                startMacroIdArray[TYPE_GPS_NOTIFICATION] = i;
            }
        }
    }