Example #1
0
    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);
    }
Example #2
0
    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));
    }