Day 15: (Tue Oct 24, Week 9) Introduction to OSC and MIDI¶
Notes for 2023-10-24.
New Assignments¶
New assignment, due in a week: choreograph a light and motion performance at least two minutes long.
Agenda¶
Review of recent progress:
we assembled the current machine right before break
I fabricated new lighting gel holders
I rewrote the control code into separate lighting and motion servers
I wrote a new MIDI translation layer and tested with Logic
I recorded a five-minute performance
We ran at least 108 performances since last Wednesday as per the logs
Introduction to OSC and MIDI. References:
Detailed walkthrough of new theater control software.
Max/MSP interfacing
Ableton Live interfacing
Logic Pro X interfacing
Discussion of next steps.
What’s the next revision of the hardware?
notes on IDeATe Cluster MacBook Pro¶
Currently has Python 3.11.5 installed, but no extra packages.
Audio MIDI Setup.app: configure and enable IAC Driver
Max 8.5.6 installed and authorized via keyserver
Ableton Live 10 Suite installed
Setting up python:
pip3 install mido python-osc scipy matplotlib python-rtmidi PyQt6
download tools.zip and theater.zip
Running the MIDI to OSC bridge client:
set up IAC Driver bus to communicate MIDI out of Live
python3 MIDI-bridge.py --ip 172.24.26.199 --midi 'IAC Driver Bus 1' --console --debug
connect MPD218 or run
virtual-MPD218.py
Recording events with Ableton Live:
from Settings, enable the MIDI busses
set first track output to IAC Driver (Bus 1) Ch 1
set second track output to IAC Driver (Bus 1) Ch 2
set track inputs to either virtual or real MPD218
arm track recording for either channel, press record, perform in real time
Using your own computer¶
You’ll need some kind of MIDI sequencer capable of MIDI output:
This does not include GarageBand
Ableton Live, Logic Pro
Reaper
Max/MSP (not a sequencer, but support for visual programming)
more ideas at Comparison of MIDI editors and sequencers
You’ll need some means of sending MIDI from the sequencer to Python:
macOS: Audio MIDI Setup IAC Bus
Windows: loopMIDI (VirtualMIDI)
You’ll need some kind of input device
recommended: check out MPD218 from Lending
also possible: use virtual-MPD218.py