Auction score – Baldor 532 cutter tool gringer
New book! – Barry Klein – electronic music circuits
Design idea: Shure sm7b sm7 with interchangeable capsules
Dumore sensitive jig boring machine – Very cool very rare
Beskar2d2 shoulder motors
Metric system – better by a thousand
Table adjustment knob for dumore sensitive drill
Dall-e – Canadian animals using an intercom
neopixel party lights
import board
import neopixel
import time
# Define the number of pixels in the strip and the pin it is connected to
num_pixels = 60
pixels = neopixel.NeoPixel(board.D18, num_pixels)
# Define the party LED sequence
sequence = [
(255, 0, 0), # Red
(0, 255, 0), # Green
(0, 0, 255), # Blue
(255, 255, 0), # Yellow
(255, 0, 255), # Purple
(0, 255, 255) # Cyan
]
while True:
for color in sequence:
for i in range(num_pixels):
pixels[i] = color
pixels.show()
time.sleep(0.05)
The home forge
Python: move a fader in protools using Avid pro tools SDK
import pro_tools_sdk
# Connect to Pro Tools
session = pro_tools_sdk.Session()
# Get a reference to the fader you want to control
fader = session.get_fader("Fader 1")
# Set the fader's level to -12 dB
fader.set_level(-12)
# Close the Pro Tools session
session.close()
Pan: You can use the set_pan() method to control the pan position of a channel.
Mute: You can use the set_mute() method to mute or unmute a channel.
Solo: You can use the set_solo() method to solo or unsolo a channel.
Input or output routing: You can use the set_input_routing() and set_output_routing() methods to control the input and output routing of a channel.
Inserts: You can use the get_inserts() method to get a list of inserts on a channel, and then use the enable() and set_parameter() methods to control the settings of each insert.
Automation: You can use the get_automation_parameters() method to get a list of automation parameters on a channel, and then use the enable() and set_value() methods to control the settings of each automation parameter.
Python: SNMP put into a Google Sheet:
from pysnmp.hlapi import *
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# SNMP query function
def snmp_query(ip, community, oid):
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData(community),
UdpTransportTarget((ip, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print(‘%s at %s’ % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) – 1][0] or ‘?’))
else:
for varBind in varBinds:
return varBind[1].prettyPrint() Continue reading
The OG – AES72 at Catherine North studio Hamilton
python: maps Reaper DAW mixer volume and mute and solo to GPIO
import pythoncom
import reapy
import RPi.GPIO as GPIO
# Set up the GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT) # Volume pin
GPIO.setup(27, GPIO.OUT) # Mute pin
GPIO.setup(22, GPIO.OUT) # Solo pin
def set_track_volume(track, volume):
track.volume = volume
if volume > 0.5:
GPIO.output(17, GPIO.HIGH)
else:
GPIO.output(17, GPIO.LOW)
def set_track_mute(track, mute):
track.mute = mute
if mute:
GPIO.output(27, GPIO.HIGH)
else:
GPIO.output(27, GPIO.LOW)
def set_track_solo(track, solo):
track.solo = solo
if solo:
GPIO.output(22, GPIO.HIGH)
else:
GPIO.output(22, GPIO.LOW)
# Create a function to map Reaper tracks to GPIO pins
def map_track(track):
# Connect to Reaper
reapy.connect()
# Get the track from Reaper
track = reapy.Track(track)
# Set the track’s volume, mute, and solo status
set_track_volume(track, track.volume)
set_track_mute(track, track.mute)
set_track_solo(track, track.solo)
# Disconnect from Reaper
reapy.disconnect()
# Map Reaper track 1 to GPIO pins
map_track(1)
# Clean up the GPIO pins
GPIO.cleanup()
Python OSC device – Motarized fader for volume + mute switch and solo switch
import reapy
import OSC
# Create an OSC client to send messages to Reaper
client = OSC.OSCClient()
client.connect(("127.0.0.1", 8000))
# Create an OSC server to receive messages from the fader and switches
server = OSC.OSCServer(("127.0.0.1", 9000))
def handle_volume(path, tags, args, source):
volume = args[0]
# Set the volume of the track using the Reaper API
reapy.connect()
track = reapy.Track(1)
track.volume = volume
reapy.disconnect()
# Add a callback for the volume fader
server.addMsgHandler("/volume", handle_volume)
def handle_mute(path, tags, args, source):
mute = args[0]
# Set the mute of the track using the Reaper API
reapy.connect()
track = reapy.Track(1)
track.mute = mute
reapy.disconnect()
# Add a callback for the mute switch
server.addMsgHandler("/mute", handle_mute)
def handle_solo(path, tags, args, source):
solo = args[0]
# Set the solo of the track using the Reaper API
reapy.connect()
track = reapy.Track(1)
track.solo = solo
reapy.disconnect()
# Add a callback for the solo switch
server.addMsgHandler("/solo", handle_solo)
# Run the OSC server
st = threading.Thread(target=server.serve_forever)
st.start()
I made a shirt for my friend Stephan
The le crueset collection
CSV with a time and label to the reaper time line markers
python script that sends a CSV with a time (in seconds) and labels to the reaper API and converts them into timeline markers
import csv
from reaper_python import *
# Open the CSV file
with open('markers.csv', 'r') as csvfile:
# Read the CSV file
reader = csv.reader(csvfile)
next(reader) # skip the header
# Iterate through the rows
for row in reader:
time = float(row[0])
label = row[1]
# Convert the time to a Reaper time format
reaper_time = int(time * 1000)
# Create a new marker at the specified time
RPR_AddProjectMarker2(0, False, reaper_time, 0, label, -1, 0)