a
b
c

OSC

We don't need wildcard matching in our OSC addresses, which makes things easier. Thus a message is

struct hh_message {
    timestamp when;
    string address;
    array payload;
  }

in languages like Python this is easier. We need only demonstrate it in Python, and we don't need the full expressibility of OSC either.

Routing

A routing object is kind of like an object in MaxPd: a box that has inlets and outlets that you connect to things. Between these objects are messages of the form above. An object can have a reject outlet to which, by default, all unrecognised messages go. For example we could have a switch object which sends all 'unrecognised' messages to one of an array of outlets, and to select the outlet we send it a message.

Graphical patching

Like Max, we want easy keyboard shortcuts.

Qt

Have a fixed 1920x1080 workspace for now. We have rectangles that represent objects. Along the bottom things are subdivided. An object has a class.

Exercises

  1. Draggable boxes.
    1. A list of rectangles. For now stacking order is creation order.
    2. Create a rectangle of a fixed size when we click the mouse.
    3. When we click, we select that rectangle.
  2. Creating a text input box at the cursor.
    1. Type name, object of that class is instantiated.
    2. For now, classes are just colours.
  3. Inlets and outlets.
    1. A class has a number of inlets and outlets.
    2. Divide the length of the top and bottom according to the number of outlets.
    3. There is a left and right outlet -- the left is for control messages, and the right is for rejected messages.
  4. When we drag between inlets and outlets, we create a straight line (like Pd, not max).
e