void Start() { ForceScreenOrientation.SetScreenOrientation(ScreenOrientation.Portrait); m_PitchTracker = new PitchTracker(); m_PitchTracker.SampleRate = AudioSettings.outputSampleRate; m_CalibratedLowPitch = m_LowPitchReference; m_CalibratedHighPitch = m_HighPitchReference; CalibrateHighPitchButton.onClick.AddListener(CalibrateHighPitch); CalibrateLowPitchButton.onClick.AddListener(CalibrateLowPitch); ShowCalibrationTestButton.gameObject.SetActive(false); // at the start the user has not calibrated his pitch yet, so he should not be able to test it ShowCalibrationTestButton.onClick.AddListener(ShowCalibrationTestWindow); ShowCalibrationButton.onClick.AddListener(ShowCalibrationWindow); FinishCalibrationButton.onClick.AddListener(SaveCalibration); if (LoadCalibration()) { Hide(); } else { Show(); } }
private void OnPitchDetected(PitchTracker sender, PitchTracker.PitchRecord pitchRecord) { if (pitchRecord.MidiNote != 0) { PitchPlatformerManager.Instance.SetPitchValue(m_Note, pitchRecord.MidiNote); } // recognized pitch is within bounds of min and max note if (pitchRecord.MidiNote >= m_MinimumNote && pitchRecord.MidiNote <= m_MaximumNote) { var currentValue = m_Material.GetFloat("_DissolveValue"); m_Material.SetFloat("_DissolveValue", Mathf.Clamp01(currentValue + m_StepSize)); } }
void Start() { if (LevelManager.InstanceExists) { LevelManager.Instance.RegisterGameObjectWithRoboy(LevelsParent, new Vector3(-1f, 0.2f, HeightRange * 1.1f), Quaternion.identity); } PitchRecognizer = new PitchTracker(); PitchRecognizer.SampleRate = AudioSettings.outputSampleRate; PitchRecognizer.PitchDetected += (sender, pitch) => { PitchValueText.text = pitch.MidiNote.ToString(); }; PitchPlatformerEvents.ReachedGoalEvent += () => LevelUI.SetActive(true); m_Levels = LevelsParent.GetComponentsInChildren <PitchPlatformLevel>(true); }