   if (assert_not_running(ch)) p->i = (p->i == 0) ? 255 : 0;
 }
 
-void set_channel_shape(Channel *ch, byte shape) {
-  Protocol *p = ensure_protocol(ch);
-  if ((shape == 0 || assert_is_wave(ch)) && assert_not_running(ch)) p->s = shape;
-}
-
 void make_sinusoidal(Channel *ch) { 
   shiftbuf(3);
   set_channel_shape(ch, 1);

  byte unused1;
};

int protoi = 0;
Protocol protocols[PROT];

Channel channels[CHAN];

int errormsgN = 12;
byte errormsg[12];

int whoamiN = 0;
byte whoami[24];

int bufi;
int bufN = 63;
byte buf[63];

int tick;               // Last clock tick (microseconds), used to update time
Dura global_clock;      // Counts up from the start of protocols

  // Interpret any fully buffered commands
  if (bufi > 1) {
    // NOTE--subcommands are responsible for checking for completeness and consuming input if it is complete!
    Serial.println(buf[1],DEC);
    Serial.send_now();
    interpret(buf[1]);
  }

  // int r = ARM_DWT_CYCCNT;   // Read cycle count (effectively a 72 MHz clock)
