OMR from scratch