   takes beats per measure >= 1 as a second param.
   When syncing to a parent btu, it will listen for a first message,
   then it will keep track of time internally for one measure
+  #the default sonic pi eval port is pretty slow on raspberry pi
+  #this loop listens on a different port to speed it up
   """
   def maestro_beat_pattern(parent, beats_per_measure) do
     sync_to_network = case parent do

          msg = $u2.recvfrom_nonblock(2048) # "["hostname,tempo",[..args..]]"
          msg_payload = msg[0].split(",")
          host = msg_payload[0]
          t = msg_payload[1]
          if(host == "#{name}")
            $tempo = t.to_f
            use_bpm $tempo
            synced = true
          end
        rescue

    # Main tempo cueing / UDP broadcasting thread
    live_loop :beat_pattern do
      use_bpm $tempo
      #{if parent != nil, do: sync_to_parent, else: beat_signaling}
    end

    $u3 = UDPSocket.new
    $u3.bind("127.0.0.1", #{eval_port})
