// Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(startKey) && !isRecording)
        {
            isRecording = true;
            audioSource.Play();
        }

        else if (Input.GetKeyDown(stopKey) && isRecording)
        {
            isRecording = false;
            audioSource.Pause();
        }


        if (Input.GetKeyDown(tapKey))
        {
            timeWhenPressed = audioSource.time;
        }
        else if (Input.GetKeyUp(tapKey))
        {
            timeHeld = audioSource.time - timeWhenPressed;
            if (timeHeld < 0.5)
            {
                timeHeld = 0;
            }

            timelineIndicator.addNoteObject(timeWhenPressed, timeHeld);
            Debug.Log(timeWhenPressed + " / " + timeHeld);
        }
    }
Exemple #2
0
    IEnumerator LoadMusic(string levelName)
    {
        WaveformDrawer waveformDrawer = FindObjectOfType <WaveformDrawer>();

        // Load music requires coroutine
        StartCoroutine(levelCreatorManager.LoadMp3File(levelName));
        // Wait for music to load
        if (!levelCreatorManager.MusicLoaded)
        {
            yield return(new WaitForSeconds(.1f));
        }
        // Check if error occured
        if (levelCreatorManager.MusicSource.clip == null)
        {
            yield break;
        }

        // Clear timeline if music is loaded not for the first time
        if (timelineIndicator.enabled)
        {
            timelineIndicator.DestroyAllNoteObjects();
            timelineIndicator.ChangeCurrentAudioClipTime(0);
        }
        // Initialize timeline if music is loaded for the first time
        else
        {
            waveformDrawer.InitializeTimelineSettings();
        }

        // Draw timeline
        waveformDrawer.DrawTimeline();

        // Set bpm bars
        timelineIndicator.SetBeatIndicators(levelCreatorManager.BeatsTotal, levelCreatorManager.OffsetValue);

        // load data if such exist
        string fileLocation = CrossSceneData.LevelDir + "/" + levelName + "/" + levelName;
        List <(float, float)> noteTuples = levelDataPasser.LoadLevelDataFromDat(fileLocation);

        if (noteTuples == null)
        {
            yield break;
        }

        (float, float)bmpAndOffset = noteTuples[0];
        noteTuples.RemoveAt(0);
        levelCreatorManager.SetBmpOffset(bmpAndOffset.Item1, bmpAndOffset.Item2);

        foreach ((float, float)noteTuple in noteTuples)
        {
            timelineIndicator.addNoteObject(noteTuple.Item1, noteTuple.Item2);
        }
    }