The idea here is to have an array of buttons on an HTML page which, when pressed, cause OSC messages to be sent somewhere (like [Reaper](https://daw.allsup.co/reaper/)). See also [this simple tabbed pages example](/lang/html/examples/SimplePager_01) for how to get more buttons than will fit on a screen. This is [my second attempt](OscControlPanel_02). # Server ```py #!/usr/bin/env python3 # Python 3 server example from http.server import BaseHTTPRequestHandler, HTTPServer from subprocess import run, PIPE import time import sys import re from datetime import datetime from threading import Thread hostName = "" serverPort = 4041 from myosc import Osc osc = Osc("localhost",2708) class MyServer(BaseHTTPRequestHandler): def homepage(self): self.homepage_html = open("homepage.html").read() self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(bytes(self.homepage_html, "utf-8")) def do_GET(self): if self.path == "/favicon.ico": self.send_response(404) self.end_headers() self.wfile.write(b"No favicon") return if self.path.strip("/") == "": return self.homepage() if self.path.lstrip("/").startswith("send/"): x = self.path.lstrip("/") x = x[len("send/"):] osc.send(x) self.send_response(200) self.end_headers() self.wfile.write(b"OK") self.send_response(404) self.end_headers() self.wfile.write(b"Not Found") return if __name__ == "__main__": webServer = HTTPServer((hostName, serverPort), MyServer) print("Server started http://%s:%s" % (hostName, serverPort)) try: webServer.serve_forever() except KeyboardInterrupt: pass webServer.server_close() print("Server stopped.") ``` # OSC helper You need `pip install python-osc` for this. ```py #!/usr/bin/env python3 import socket from pythonosc import udp_client class Osc: def __init__(self,host,port): self.host = host self.port = port self.client = udp_client.SimpleUDPClient(self.host, self.port, family=socket.AF_INET) def send(self,addr,params=None): if params is None: params = [] addr = "/"+addr.lstrip("/") self.client.send_message(addr,params) ``` # html homepage ```html