Files
virtual-controller/app/midi_sender.py
T
Paul Lipscomb 4db7165797 Initial tablet POC: project restructure + WebSocket/HTTP server + JS client
- Restructured project into /app, /server, /client with run.py entry point
- WSServer (QWebSocketServer) with log_signal, start/stop, client tracking
- HTTP server serves /client on port 8080
- Vanilla JS client: faders, toggles, transport, drag-to-arrange, lock/save layout
- Start Tablet button + floating Tablet log window in app UI
- Preset broadcast on load/switch, DAW state relay, hardware sync via widget_update
- Widget colors synced from app palette, toggle state fixed (sends 0/127 correctly)
- Layout saved per preset UUID back to presets.json

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 23:44:30 -04:00

27 lines
764 B
Python

import rtmidi
from midi_receiver import midi_receiver
MIDI_CH = 0
TRANSPORT_MIDI_CH = 0
midi_out = rtmidi.MidiOut()
transport_midi_out = rtmidi.MidiOut()
available_ports = midi_out.get_ports()
print("Available MIDI ports:", available_ports)
def send_cc(cc_number, value, channel=None):
ch = (channel - 1) if channel is not None else MIDI_CH
msg = [0xB0 | ch, cc_number, value]
if midi_out.is_port_open():
midi_out.send_message(msg)
midi_receiver.midi_out_signal.emit(msg)
def send_transport_cc(cc_number, value):
msg = [0xB0 | TRANSPORT_MIDI_CH, cc_number, value]
if transport_midi_out.is_port_open():
transport_midi_out.send_message(msg)
midi_receiver.midi_out_signal.emit(msg)