         return noteCode
     }
 
-    override func updateShownNote() {
-        noteLabelNode.text = currentNoteName
-    }
-
     override func update(currentTime: NSTimeInterval) {
         if pendingUpdate && abs(eventDate.timeIntervalSinceNow) > updateDelay {
             completePendingUpdate()

                fatalError("unexpected note code: \(noteCode)")
            }
            synthNode.frequency = note.rawValue + vibratoMultiplier*vibrato
            updateShownNote()
            if !synthNode.playing {
                synthNode.startPlaying()
            }
        } else if synthNode.playing {
            synthNode.stopPlaying()
        }
    }

    func buttonTapped(node: ButtonNode) {
        if node.active {
            updateShownNote()
        } else {
            noteLabelNode.text = ""
        }

        triggerUpdate()
    }



    var currentNoteName: String {
        switch (oneButton.active, twoButton.active, threeButton.active, sharpButton.active, flatButton.active) {

        // Natural
        case (false, false, false, false, false), (false, false, false, true, true): return ""
        case (true, false, false, false, false), (true, false, false, true, true): return "C"
