def startAudioGUI():
    global is_audio_play_active, score_text, result_text, raw_sample_buffer, rd_ptr, wr_ptr
    print "start audio playing/recording!!!" ;
    print "sens = " + str(var_sens.get())+ ", bpm = " + str(var_bpm.get())
    
    
    if is_audio_play_active == 1: 
        return # return immediately if audio play is already active
    else:    
        is_audio_play_active = 1
    
    
    # initialize raw_sample_buffer and rd/wr ptrs
    raw_sample_buffer = []
    for n in range(128*block_size):
        raw_sample_buffer.append(0)
    rd_ptr = 0
    wr_ptr = 0
    
    # clear text field
    score_text, result_text = getDefaultScore()
    var_1.set(score_text)
    var_2.set(result_text)
    label_1.update_idletasks()

    # start audio thread
    thread.start_new_thread(startAudio, (var_bpm.get(),) )

    # initialize audio proc and start audio processing thread
    ap = audioProcessing(var_bpm.get(), (10-var_sens.get()+1)/100.0)
    thread.start_new_thread(audioProcThread, (ap,))
root.title("drumBeatAnalyzer");

# -------------------------------------------------
# top, middle and bottom frames
# -------------------------------------------------
topframe = Frame(root)
topframe.pack()
middleframe = Frame(root)
middleframe.pack()
bottomframe = Frame(root)
bottomframe.pack()

# -------------------------------------------------
# top frame: score text
# -------------------------------------------------
score_text, result_text = getDefaultScore()

var_1 = StringVar()
var_1.set(score_text)
label_1 = Label(topframe, textvariable=var_1, width=75, height=4, font="Menlo 18 bold", relief=RIDGE, justify=LEFT, bg="grey")
label_1.grid(row=0, column=0, padx=10, pady=6, ipady=5)

# clear text field
var_1.set(score_text)
label_1.update_idletasks()

# -------------------------------------------------
# mid frame: result
# -------------------------------------------------
var_2 = StringVar()
var_2.set(result_text)