| 2807 | } |
| 2808 | |
| 2809 | int CFamiTrackerView::TranslateKeyModplug(unsigned char Key) const |
| 2810 | { |
| 2811 | // Modplug conversion |
| 2812 | note_t KeyNote = note_t::none; |
| 2813 | int KeyOctave = 0; |
| 2814 | int Octave = static_cast<CMainFrame*>(GetParentFrame())->GetSelectedOctave(); // // // 050B |
| 2815 | |
| 2816 | const auto &NoteData = GetSongView()->GetPatternOnFrame(GetSelectedChannel(), GetSelectedFrame()).GetNoteOn(GetSelectedRow()); |
| 2817 | |
| 2818 | if (m_bEditEnable && Key >= '0' && Key <= '9') { // // // |
| 2819 | KeyOctave = Key - '1'; |
| 2820 | if (KeyOctave < 0) KeyOctave += 10; |
| 2821 | if (KeyOctave >= OCTAVE_RANGE) KeyOctave = OCTAVE_RANGE - 1; |
| 2822 | KeyNote = NoteData.Note; |
| 2823 | } |
| 2824 | |
| 2825 | // Convert key to a note, Modplug style |
| 2826 | switch (Key) { |
| 2827 | case u8'Q': KeyNote = note_t::C; KeyOctave = Octave; break; |
| 2828 | case u8'W': KeyNote = note_t::Cs; KeyOctave = Octave; break; |
| 2829 | case u8'E': KeyNote = note_t::D; KeyOctave = Octave; break; |
| 2830 | case u8'R': KeyNote = note_t::Ds; KeyOctave = Octave; break; |
| 2831 | case u8'T': KeyNote = note_t::E; KeyOctave = Octave; break; |
| 2832 | case u8'Y': KeyNote = note_t::F; KeyOctave = Octave; break; |
| 2833 | case u8'U': KeyNote = note_t::Fs; KeyOctave = Octave; break; |
| 2834 | case u8'I': KeyNote = note_t::G; KeyOctave = Octave; break; |
| 2835 | case u8'O': KeyNote = note_t::Gs; KeyOctave = Octave; break; |
| 2836 | case u8'P': KeyNote = note_t::A; KeyOctave = Octave; break; |
| 2837 | case VK_OEM_4: KeyNote = note_t::As; KeyOctave = Octave; break; // [{ |
| 2838 | case VK_OEM_6: KeyNote = note_t::B; KeyOctave = Octave; break; // ]} |
| 2839 | |
| 2840 | case u8'A': KeyNote = note_t::C; KeyOctave = Octave + 1; break; |
| 2841 | case u8'S': KeyNote = note_t::Cs; KeyOctave = Octave + 1; break; |
| 2842 | case u8'D': KeyNote = note_t::D; KeyOctave = Octave + 1; break; |
| 2843 | case u8'F': KeyNote = note_t::Ds; KeyOctave = Octave + 1; break; |
| 2844 | case u8'G': KeyNote = note_t::E; KeyOctave = Octave + 1; break; |
| 2845 | case u8'H': KeyNote = note_t::F; KeyOctave = Octave + 1; break; |
| 2846 | case u8'J': KeyNote = note_t::Fs; KeyOctave = Octave + 1; break; |
| 2847 | case u8'K': KeyNote = note_t::G; KeyOctave = Octave + 1; break; |
| 2848 | case u8'L': KeyNote = note_t::Gs; KeyOctave = Octave + 1; break; |
| 2849 | case VK_OEM_1: KeyNote = note_t::A; KeyOctave = Octave + 1; break; // ;: |
| 2850 | case VK_OEM_7: KeyNote = note_t::As; KeyOctave = Octave + 1; break; // '" |
| 2851 | //case VK_OEM_2: KeyNote = note_t::B; KeyOctave = Octave + 1; break; // /? |
| 2852 | |
| 2853 | case u8'Z': KeyNote = note_t::C; KeyOctave = Octave + 2; break; |
| 2854 | case u8'X': KeyNote = note_t::Cs; KeyOctave = Octave + 2; break; |
| 2855 | case u8'C': KeyNote = note_t::D; KeyOctave = Octave + 2; break; |
| 2856 | case u8'V': KeyNote = note_t::Ds; KeyOctave = Octave + 2; break; |
| 2857 | case u8'B': KeyNote = note_t::E; KeyOctave = Octave + 2; break; |
| 2858 | case u8'N': KeyNote = note_t::F; KeyOctave = Octave + 2; break; |
| 2859 | case u8'M': KeyNote = note_t::Fs; KeyOctave = Octave + 2; break; |
| 2860 | case VK_OEM_COMMA: KeyNote = note_t::G; KeyOctave = Octave + 2; break; // ,< |
| 2861 | case VK_OEM_PERIOD: KeyNote = note_t::Gs; KeyOctave = Octave + 2; break; // .> |
| 2862 | case VK_OEM_2: KeyNote = note_t::A; KeyOctave = Octave + 2; break; // /? |
| 2863 | } |
| 2864 | |
| 2865 | // Invalid |
| 2866 | if (KeyNote == note_t::none) |
nothing calls this directly
no test coverage detected