MCPcopy Create free account
hub / github.com/HertzDevil/0CC-FamiTracker / TranslateKeyModplug

Method TranslateKeyModplug

Source/FamiTrackerView.cpp:2809–2875  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2807}
2808
2809int 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)

Callers

nothing calls this directly

Calls 3

midi_noteFunction · 0.85
GetSelectedOctaveMethod · 0.80
endMethod · 0.45

Tested by

no test coverage detected