#!/usr/bin/python3 # -*- coding: utf-8 -*- # -*- mode: Python -*- ''' alink v0.1 Ableton Link bridge to OSC & Redis v0.2 available in miredis LICENCE : CC Sam Neurohack Get: git clone --recursive https://github.com/gonzaloflirt/link-python.git Build: Make sure python 3 is installed on your system. mkdir build cd build cmake .. cmake --build . ''' #import midix import sys prevphase = 0 bpm = 120 def Start(): global lnk import link print("Link ENABLED") lnk = link.Link(120) lnk.enabled = True lnk.startStopSyncEnabled = True linked = True def BeatEvent(): global lnk, prevphase lnkstr = lnk.captureSessionState() link_time = lnk.clock().micros(); tempo_str = '{0:.2f}'.format(lnkstr.tempo()) bpm = float(tempo_str) #beatstep.SendOSCUI('/bpm', [bpm]) beats_str = '{0:.2f}'.format(lnkstr.beatAtTime(link_time, 0)) playing_str = str(lnkstr.isPlaying()) # always False ??? phase = lnkstr.phaseAtTime(link_time, 4) # new beat ? if int(phase) != prevphase: prevphase = int(phase) #print("LINK BPM:",bpm) sys.stdout.write("Beat "+str(beats_str) + ' \r') sys.stdout.flush() #midix.SendUI('/beats', [beats_str]) #alink.SendOSCUI('/states/cc/'+str(ccnumber), [value]) currentbeat = float(beats_str) #midix.SendAU('/aurora/beats', beats_str) #AllStatus("Beat "+str(beats_str)) # Change current Link Tempo. def newtempo(tempo): global lnk #print("val2", val2, "tempo", tempo) if linked == True: lnk.enabled = False lnk.startStopSyncEnabled = False lnk = link.Link(tempo) lnk.enabled = True lnk.startStopSyncEnabled = True bpm = tempo print(("New BPM", bpm)) #midix.SendUI('/bpm', [bpm]) else: print("Link is disabled") # def BPMAdj(val1, keyname): print((gstt.currentbpm)) # + 1 if val1 == 1: newtempo(gstt.currentbpm+1) # -1 if val1 == 127 and gstt.currentbpm > 0: newtempo(gstt.currentbpm-1)