Esempio n. 1
0
    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();
    }
Esempio n. 2
0
 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);
     });
 }
Esempio n. 4
0
    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);
        }
    }