Example #1
0
    public override void UpdateSinging(double currentBeat)
    {
        Sentence currentSentence = playerController?.CurrentSentence;

        if (currentSentence == null)
        {
            return;
        }

        int  currentMidiNote   = 0;
        Note noteAtCurrentBeat = PlayerNoteRecorder.GetNoteAtBeat(currentSentence, currentBeat);

        if (noteAtCurrentBeat != null)
        {
            currentMidiNote = noteAtCurrentBeat.MidiNote + noteOffset;
        }
        else if (lastNote != null)
        {
            // Change noteOffset on falling flank of note
            // (falling flank: now there is no note, but in last frame there was one)
            noteOffset = (noteOffset + 1) % 5;
        }
        playerController.PlayerNoteRecorder.HandlePitchEvent(new PitchEvent(currentMidiNote));

        lastNote = noteAtCurrentBeat;
    }
Example #2
0
    protected Note GetNoteAtCurrentBeat(double currentBeat)
    {
        Sentence currentSentence = playerController?.GetRecordingSentence();

        if (currentSentence == null)
        {
            return(null);
        }

        double micDelayInBeats   = (playerController.MicProfile == null) ? 0 : BpmUtils.MillisecondInSongToBeatWithoutGap(songMeta, playerController.MicProfile.DelayInMillis);
        Note   noteAtCurrentBeat = PlayerNoteRecorder.GetNoteAtBeat(currentSentence, currentBeat - micDelayInBeats);

        return(noteAtCurrentBeat);
    }
Example #3
0
    public override void UpdateSinging(double currentBeat)
    {
        Sentence currentSentence = playerController?.CurrentSentence;

        if (currentSentence == null)
        {
            return;
        }

        int  currentMidiNote   = 0;
        Note noteAtCurrentBeat = PlayerNoteRecorder.GetNoteAtBeat(currentSentence, currentBeat);

        if (noteAtCurrentBeat != null)
        {
            currentMidiNote = noteAtCurrentBeat.MidiNote + offset;
        }
        playerController.PlayerNoteRecorder.HandlePitchEvent(new PitchEvent(currentMidiNote));
    }
Example #4
0
    private void UpdatePerfectSinging(PlayerController playerController, double currentBeat)
    {
        Sentence currentSentence = playerController.CurrentSentence;

        if (currentSentence == null)
        {
            return;
        }

        int  currentMidiNote   = 0;
        Note noteAtCurrentBeat = PlayerNoteRecorder.GetNoteAtBeat(currentSentence, currentBeat);

        if (noteAtCurrentBeat != null)
        {
            currentMidiNote = noteAtCurrentBeat.MidiNote;
        }
        playerController.PlayerNoteRecorder.OnPitchDetected(currentMidiNote);
    }
Example #5
0
    public override void UpdateSinging(double currentBeat)
    {
        Sentence currentSentence = playerController?.CurrentSentence;

        if (currentSentence == null)
        {
            return;
        }

        int  currentMidiNote   = Random.Range(33, 70);
        Note noteAtCurrentBeat = PlayerNoteRecorder.GetNoteAtBeat(currentSentence, currentBeat);

        if (noteAtCurrentBeat != null)
        {
            currentMidiNote = noteAtCurrentBeat.MidiNote + Random.Range(-3, 3);
        }
        if (Random.Range(0, 5) == 0)
        {
            currentMidiNote = 0;
        }
        playerController.PlayerNoteRecorder.HandlePitchEvent(new PitchEvent(currentMidiNote));
    }