     if (cddr(args) != NULL) prescaler = integer(third(args));
     prescaler = 9 - prescaler - note/12;
     if (prescaler<3 || prescaler>6) error(F("'note' octave out of range"));
-    OCR2A = pgm_read_byte(&scale[note%12]);
+    OCR2A = pgm_read_byte(&scale[note%12]) - 1;
     TCCR2B = 0<<WGM22 | prescaler<<CS20;
   } else TCCR2B = 0<<WGM22 | 0<<CS20;
   

  else return nil;
}

// Bitwise operators

object *fn_logand (object *args, object *env) {

  freespace = 0;
  for (int i=workspacesize-1; i>=0; i--) {
    object *obj = &workspace[i];
    if (!marked(obj)) myfree(obj); else unmark(obj);
  }
}

