Exemplo n.º 1
0
 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);
 }