public void OnInjectionFinished() { // Select recording device if none. if (settings.MicProfile.Name.IsNullOrEmpty() || !Microphone.devices.Contains(settings.MicProfile.Name)) { settings.SetMicProfileName(Microphone.devices.FirstOrDefault()); } settings.ObserveEveryValueChanged(it => it.MicProfile) .Subscribe(_ => OnMicProfileChanged()); micSampleRecorder.IsRecording.Subscribe(OnRecordingStateChanged); micSampleRecorder.FinalSampleRate.Subscribe(_ => UpdateRecordingDeviceInfo()); // All controls are hidden until a connection has been established. onlyVisibleWhenConnected.ForEach(it => it.HideByDisplay()); onlyVisibleWhenNotConnected.ForEach(it => it.ShowByDisplay()); connectionThroubleshootingText.HideByDisplay(); serverErrorResponseText.HideByDisplay(); toggleRecordingButton.RegisterCallbackButtonTriggered(ToggleRecording); clientNameTextField.value = settings.ClientName; clientNameTextField.RegisterCallback <NavigationSubmitEvent>(_ => OnClientNameTextFieldSubmit()); clientNameTextField.RegisterCallback <BlurEvent>(_ => OnClientNameTextFieldSubmit()); visualizeAudioToggle.value = settings.ShowAudioWaveForm; audioWaveForm.SetVisibleByDisplay(settings.ShowAudioWaveForm); visualizeAudioToggle.RegisterValueChangedCallback(changeEvent => { audioWaveForm.SetVisibleByDisplay(changeEvent.newValue); settings.ShowAudioWaveForm = changeEvent.newValue; }); clientSideConnectRequestManager.ConnectEventStream .Subscribe(UpdateConnectionStatus); songListRequestor.SongListEventStream.Subscribe(evt => HandleSongListEvent(evt)); UpdateVersionInfoText(); audioWaveForm.RegisterCallbackOneShot <GeometryChangedEvent>(evt => { audioWaveFormVisualization = new AudioWaveFormVisualization(gameObject, audioWaveForm); }); songSearchTextField.RegisterValueChangedCallback(evt => { songSearchHint.SetVisibleByDisplay(songSearchTextField.value.IsNullOrEmpty()); UpdateSongList(); }); InitTabGroup(); InitMenu(); }
public void OnInjectionFinished() { // Size not available in first frame audioWaveForm.RegisterCallbackOneShot <GeometryChangedEvent>(evt => { if (audioWaveForm is Label audioWaveFormLabel) { audioWaveFormLabel.text = ""; } audioWaveFormVisualizer = new AudioWaveFormVisualization(gameObject, audioWaveForm); }); }
private void Start() { micPitchTracker.PitchEventStream .Subscribe(OnPitchDetected) .AddTo(gameObject); recordingOptionsSceneControl.ConnectedClientBeatPitchEventStream .Subscribe(OnPitchDetected) .AddTo(gameObject); audioWaveForm.RegisterCallbackOneShot <GeometryChangedEvent>(evt => { audioWaveFormVisualization = new AudioWaveFormVisualization(this.gameObject, audioWaveForm); }); }
public void UpdateAudioWaveForm() { if (!songAudioPlayer.HasAudioClip || songAudioPlayer.AudioClip.samples <= 0) { return; } if (audioWaveFormVisualization == null) { audioWaveFormVisualization = new AudioWaveFormVisualization(songEditorSceneControl.gameObject, overviewAreaWaveform) { // Waveform color is same as text color WaveformColor = overviewAreaLabel.resolvedStyle.color }; } using (new DisposableStopwatch($"Created audio waveform in <millis> ms")) { // For drawing the waveform, the AudioClip must not be streamed. All data must have been fully loaded. AudioClip audioClip = audioManager.LoadAudioClipFromUri(SongMetaUtils.GetAudioUri(songMeta), false); audioWaveFormVisualization.DrawWaveFormMinAndMaxValues(audioClip); } }