180 lines
3.4 KiB
Python
180 lines
3.4 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
miredis
|
|
v0.1
|
|
|
|
Forward midi events to a redis.
|
|
|
|
# CC rotary -> midi CC.
|
|
|
|
cross 49
|
|
joystick UD 57
|
|
joystick LR 56
|
|
|
|
LEFT:
|
|
|
|
menu 7
|
|
play/pause 8
|
|
cue 9
|
|
|
|
beat 10
|
|
|
|
pitch + 19
|
|
pitch - 20
|
|
jog 54
|
|
headset 21
|
|
volume 50
|
|
load deck 27
|
|
beatlck 22
|
|
1 15
|
|
2 14
|
|
3 13
|
|
bass 46
|
|
medium 47
|
|
trebble 48
|
|
track - 11
|
|
track + 12
|
|
|
|
|
|
RIGHT:
|
|
|
|
menu 1
|
|
play/pause 2
|
|
cue 3
|
|
|
|
beat 4
|
|
|
|
pitch + 23
|
|
pitch - 24
|
|
jog 55
|
|
headset 25
|
|
volume 51
|
|
load deck 28
|
|
beatlck 26
|
|
1 16
|
|
2 17
|
|
3 18
|
|
bass 43
|
|
medium 44
|
|
treblle 45
|
|
track - 5
|
|
track + 6
|
|
|
|
by Sam Neurohack
|
|
from /team/laser
|
|
|
|
"""
|
|
from libs import log
|
|
|
|
print()
|
|
log.infog('Miredis v0.1')
|
|
|
|
import argparse
|
|
import redis
|
|
from libs import midix
|
|
import traceback
|
|
|
|
|
|
#myHostName = socket.gethostname()
|
|
#print("Name of the localhost is {}".format(myHostName))
|
|
#gstt.myIP = socket.gethostbyname(myHostName)
|
|
#print("IP address of the localhost is {}".format(gstt.myIP))
|
|
|
|
#gstt.myIP = "127.0.0.1"
|
|
#print('Used IP', gstt.myIP)
|
|
|
|
|
|
|
|
argsparser = argparse.ArgumentParser(description="Miredis")
|
|
# General Args
|
|
argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose")
|
|
# Redis Args
|
|
argsparser.add_argument("-i","--ip",help="IP address of the Redis server ",default="127.0.0.1",type=str)
|
|
argsparser.add_argument("-p","--port",help="Port of the Redis server ",default="6379",type=str)
|
|
# OSC Args
|
|
argsparser.add_argument("-o","--oscip",help="IP address of the OSC server to forward midi events.",default="127.0.0.1",type=str)
|
|
argsparser.add_argument("-q","--oscport",help="Port of the OSC server ",default="9000",type=str)
|
|
argsparser.add_argument('-link',help="Enable Ableton Link (disabled by default)", dest='link', action='store_true')
|
|
argsparser.set_defaults(link=False)
|
|
|
|
args = argsparser.parse_args()
|
|
redisIP = args.ip
|
|
redisPORT = args.port
|
|
midix.oscIP = args.oscip
|
|
midix.oscPORT = int(args.oscport)
|
|
midix.debug = args.verbose
|
|
|
|
# with Ableton Link
|
|
if args.link == True:
|
|
from libs import alink
|
|
|
|
alink.Start()
|
|
linked = True
|
|
else:
|
|
print("Link DISABLED")
|
|
linked = False
|
|
|
|
r = redis.StrictRedis(host=redisIP , port=redisPORT, db=0)
|
|
midix.r = r
|
|
|
|
|
|
|
|
|
|
def Osc():
|
|
|
|
p = r.pubsub()
|
|
p.subscribe('updates')
|
|
print("Artnet updates subscribed")
|
|
|
|
while True:
|
|
|
|
# Handle OSC based changed
|
|
OSCframe()
|
|
|
|
# Handle Artnet change via redis key 'updates' subscription
|
|
message = p.get_message()
|
|
|
|
if message:
|
|
messageCC = message['data']
|
|
# print(type(messageCC))
|
|
#print("Updates said: %s" % messageCC)
|
|
if messageCC != 1:
|
|
#if ":" in str(messageCC.decode('utf_8')):
|
|
messageCC = messageCC.decode('utf_8')
|
|
artnetCC = messageCC.split(":")
|
|
if len(artnetCC) > 1:
|
|
cc(int(artnetCC[0]), round(int(artnetCC[1])/2))
|
|
print()
|
|
|
|
#time.sleep(0.0)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
import traceback
|
|
import time
|
|
|
|
midix.check()
|
|
|
|
midix.toKey("/beats","0.0")
|
|
midix.toKey("/bpm",120)
|
|
|
|
try:
|
|
|
|
while True:
|
|
time.sleep(0.001)
|
|
if linked:
|
|
alink.BeatEvent()
|
|
|
|
except Exception:
|
|
traceback.print_exc()
|
|
|
|
#finally:
|
|
|