
import buttons
import display
import ledfx
import leds
import math
import bhi160
import utime
import power
import light_sensor
import vibra
import os


frequencies = (131,147,165,175,196,220,247,267,294,330,349,392,440,493) #cdefgabcdefgab




# 1/duration, note [0=c, 1=d, 2=e, ..., -1=pause]
melody =   ((16,  5),(16,  6),(16,  7),(16,  8),(16, 13),(16, -1),(16, 13),(16, 12),(16, 13),(16, -1),
            (16, 13),(16, 12),(16, 13),(16, -1),(16, 13),(16, 12),(16, 13),(16, 12),(16,  9),(16,  7),
            (6,  11),(16, 12),(2,  10),(4,  -1),(16, 12),(16, -1),(16, 12),(16, 11),(16, 12),(16, -1),
            (16, 12),(16, 11),(16, 12),(16, -1),(16, 12),(16, 11),(8,  12),(8,  13),(4,  10),(2,   9)) 


        
def play_tone(freq,dur):
    freq=freq//4
    wave_length=50000//freq - 50
    repeat = freq * 32 // dur
    for i in range(repeat):
        vibra.set(True)
        utime.sleep_us(1)
        vibra.set(False)
        utime.sleep_us(wave_length)
        
    
def play_pause(dur):
    wave_length=50000
    repeat = 32 // dur
    utime.sleep_us(wave_length * repeat)
    
#-------------------------------------------------------------- main

note_count = 0

while True:

    duration  = melody[note_count][0] # duration
    note      = melody[note_count][1] # note
    frequency = 0
    if note>=0:
        frequency = frequencies[note]
        print('d:%i n:%i f:%i'%(duration,note,frequency))
        play_tone(frequency, duration)
    else:
        play_pause(duration)
    utime.sleep_ms(50)
    note_count += 1
    if note_count==40:
        utime.sleep(3)
        note_count=0
        

	
#marblezone:d=4,o=5,b=63:16a4,16b4,16c,16d,16b,16p,16b,16a,16b,16p,16b,16a,16b,16p,16b,16a,16b,16a,16e,16c,8g.,16a,2f,p,16a,16p,16a,16g,16a,16p,16a,16g,16a,16p,16a,16g,8a,8b,f,2e
    







	
