void OnKeyDown(wxKeyEvent const &ev) { if(ev.HasAnyModifiers()) { return; } auto uc = ev.GetUnicodeKey(); if(uc == WXK_NONE ) { return; } if(uc == kOctaveUp) { if(key_base_ + 12 < 128) { key_base_ += 12; } return; } else if(uc == kOctaveDown) { if(key_base_ - 12 >= 0) { key_base_ -= 12; } return; } auto found = std::find(kKeyTable.begin(), kKeyTable.end(), uc); if(found == kKeyTable.end()) { return; } int note_number = key_base_ + (found - kKeyTable.begin()); if(note_number >= 128) { return; } key_code_for_sample_note_[note_number] = uc; SendSampleNoteOn(note_number); }