int GetTargetStringIndexFromNotes(MusicNote Note) { if (Note.String != Pitch.C) { return(Note.String == Pitch.G ? 0 : (Note.String == Pitch.D ? 1 : (Note.String == Pitch.A ? 2 : 3))); } int pitch = Note.GetPitch(); int pitchStr = (pitch - 43) / 7; if (pitchStr >= 4) { pitchStr = 3; } return(pitchStr); }
Vector2 GetTargetPositionFromNotes(MusicNote Note) { var pitch = Note.GetPitch(); var Opens = new MusicNote[] { new MusicNote() { PitchStep = Pitch.G, Octave = 3 }, new MusicNote() { PitchStep = Pitch.D, Octave = 4 }, new MusicNote() { PitchStep = Pitch.A, Octave = 4 }, new MusicNote() { PitchStep = Pitch.E, Octave = 5 }, }; int pitchStr = GetTargetStringIndexFromNotes(Note); //int pitchStr = (pitch - 43) / 7; int pitchPos = pitch - 43 - pitchStr * 7; //if (pitchStr >= 4) //{ // pitchPos = pitch - 64; // pitchStr = 3; //} var pitchNote = new MusicNote() { PitchStep = Opens[pitchStr].PitchStep + pitchPos, Octave = Opens[pitchStr].Octave }; var pitchFrequency = pitchNote.GetFrequency(); var StringY = Strings[pitchStr].GetComponent <RectTransform>().anchoredPosition.y; //return new Vector2(Mathf.Log(Opens[pitchStr].GetFrequency() / (float)pitchFrequency, 2) * -3200 - 3200 + 1600f / 12f, StringY); return(new Vector2(Mathf.Log(Opens[pitchStr].GetFrequency() / (float)pitchFrequency, 2) * -3200 / Settings.Division * 6f - 3200 + 1600f / Settings.Division / 2f, StringY)); }