コード例 #1
0
    void ClearAudioStream(Song.AudioInstrument audio)
    {
        editor.currentSongAudio.Clear(audio);
        editor.currentSong.SetAudioLocation(audio, string.Empty);

        setAudioTextLabels();
    }
コード例 #2
0
    void ClearAudioStream(Song.AudioInstrument audio)
    {
        editor.currentSong.GetSampleData(audio).Dispose();
        editor.currentSong.SetBassAudioStream(audio, null);

        setAudioTextLabels();
    }
    void clearAudioStream(Song.AudioInstrument audio)
    {
        editor.currentSong.GetSampleData(audio).Free();
        editor.currentSong.SetBassAudioStream(audio, 0);

        setAudioTextLabels();
    }
コード例 #4
0
    public bool LoadAudio(string filepath, Song.AudioInstrument audio)
    {
        int audioStreamArrayPos = (int)audio;

        if (filepath == string.Empty)
        {
            return(false);
        }

        filepath = filepath.Replace('\\', '/');

        // Check for valid extension
        if (!Utility.validateExtension(filepath, Globals.validAudioExtensions))
        {
            throw new System.Exception("Invalid file extension");
        }

        if (!File.Exists(filepath))
        {
            Debug.LogError("Unable to locate audio file: " + filepath);
            return(false);
        }

#if TIMING_DEBUG
        float time = Time.realtimeSinceStartup;
#endif

        ++audioLoads;

        try {
            // Load sample data from waveform. This creates a thread on it's own.
            if (audioSampleData[audioStreamArrayPos] != null)
            {
                audioSampleData[audioStreamArrayPos].Dispose();
            }
            audioSampleData[audioStreamArrayPos] = new SampleData(filepath);

            // Load Audio Streams
            if (bassAudioStreams[audioStreamArrayPos] != null)
            {
                bassAudioStreams[audioStreamArrayPos].Dispose();
            }
            bassAudioStreams[audioStreamArrayPos] = AudioManager.LoadTempoStream(filepath);
        } catch (Exception e) {
            Logger.LogException(e, "Could not open audio");
            return(false);
        } finally {
            --audioLoads;
        }

#if TIMING_DEBUG
        Debug.Log("Audio load time: " + (Time.realtimeSinceStartup - time));
#endif

        Debug.Log("Finished loading audio");

        return(true);
    }
コード例 #5
0
    public void SetBassAudioStream(Song.AudioInstrument audio, TempoStream stream)
    {
        int arrayPos = (int)audio;

        if (bassAudioStreams[arrayPos] != null)
        {
            bassAudioStreams[arrayPos].Dispose();
        }

        bassAudioStreams[arrayPos] = stream;
    }
コード例 #6
0
    public void PlayingMovement()
    {
        float   speed          = Globals.gameSettings.hyperspeed;
        Vector3 pos            = transform.position;
        float   deltaTime      = Time.deltaTime;
        float   positionOffset = initPos.y;

        {
            float timeBeforeMovement = ChartEditor.WorldYPositionToTime(pos.y - positionOffset);
            float timeAfterMovement  = timeBeforeMovement + deltaTime * Globals.gameSettings.gameSpeed;

            // Make sure we're staying in sync with the audio
            {
                SongAudioManager songAudioManager = editor.currentSongAudio;

                AudioStream stream = null;

                for (int i = 0; i < EnumX <Song.AudioInstrument> .Count; ++i)
                {
                    Song.AudioInstrument audio = (Song.AudioInstrument)i;
                    if (AudioManager.StreamIsValid(songAudioManager.GetAudioStream(audio)))
                    {
                        stream = songAudioManager.GetAudioStream(audio);
                        break;
                    }
                }

                if (AudioManager.StreamIsValid(stream) && stream.IsPlaying())
                {
                    float audioTimePosition = stream.CurrentPositionInSeconds() - editor.services.totalSongAudioOffset;
                    float desyncAmount      = audioTimePosition - timeAfterMovement;

                    if (Mathf.Abs(desyncAmount) > DESYNCLENIENCE)
                    {
                        timeAfterMovement += desyncAmount;
                    }
                }
            }

            float maxChangeInTimeAllowed = Application.targetFrameRate > 0 ? 2.0f / Application.targetFrameRate : 1.0f / 120.0f;

            float totalChangeInTime = timeAfterMovement - timeBeforeMovement;

            float newTimePosition = ChartEditor.TimeToWorldYPosition(timeBeforeMovement + totalChangeInTime);
            pos.y = newTimePosition + positionOffset;
        }

        selfTransform.position = pos;
        explicitChartPos       = null;

        lastUpdatedRealTime = Time.time;
    }
コード例 #7
0
    static void AudioLoadFromChart(Song song, Song.AudioInstrument streamAudio, string line, string audioDirectory)
    {
        string audioFilepath = Regex.Matches(line, QUOTESEARCH)[0].ToString().Trim('"');

        // Check if it's already the full path. If not, make it relative to the chart file.
        if (!File.Exists(audioFilepath))
        {
            audioFilepath = audioDirectory + "\\" + audioFilepath;
        }

        if (File.Exists(audioFilepath) && Utility.validateExtension(audioFilepath, Globals.validAudioExtensions))
        {
            song.SetAudioLocation(streamAudio, Path.GetFullPath(audioFilepath));
        }
    }
コード例 #8
0
    static void AudioLoadFromChart(Song song, Song.AudioInstrument streamAudio, string line, string audioDirectory)
    {
        string audioFilepath = ChartIOHelper.MetaData.ParseAsString(line);

        // Check if it's already the full path. If not, make it relative to the chart file.
        if (!File.Exists(audioFilepath))
        {
            audioFilepath = audioDirectory + "\\" + audioFilepath;
        }

        if (File.Exists(audioFilepath) && Utility.validateExtension(audioFilepath, Globals.validAudioExtensions))
        {
            song.SetAudioLocation(streamAudio, Path.GetFullPath(audioFilepath));
        }
    }
コード例 #9
0
    static string GetCHOggFilename(Song.AudioInstrument audio)
    {
        const string audioFormat = ".ogg";

        string newAudioName = string.Empty;

        if (audioInstrumentToCHNameMap.TryGetValue(audio, out newAudioName))
        {
            newAudioName += audioFormat;
        }
        else
        {
            Debug.LogErrorFormat("Audio instrument {0} not set up in ch name dict. Skipping.", audio.ToString());
        }

        return(newAudioName);
    }
コード例 #10
0
 void LoadAndSetStream(Song.AudioInstrument audioInstrument)
 {
     try
     {
         string filepath = GetAudioFile();
         if (editor.currentSongAudio.LoadAudio(filepath, audioInstrument))
         {
             // Record the filepath
             editor.currentSong.SetAudioLocation(audioInstrument, filepath);
             StartCoroutine(SetAudio());
         }
     }
     catch
     {
         Debug.LogError("Could not open audio");
     }
 }
コード例 #11
0
 void LoadAudioStream(Song.AudioInstrument audioInstrument)
 {
     try
     {
         string filepath = GetAudioFile();
         if (editor.currentSongAudio.LoadAudio(filepath, audioInstrument))
         {
             // Record the filepath
             editor.currentSong.SetAudioLocation(audioInstrument, filepath);
             StartCoroutine(SetAudio());
         }
     }
     catch (Exception e)
     {
         Logger.LogException(e, "Could not open audio");
     }
 }
コード例 #12
0
    public void Clear(Song.AudioInstrument audio)
    {
        {
            var stream = GetAudioStream(audio);
            if (stream != null)
            {
                stream.Dispose();
            }

            bassAudioStreams[(int)audio] = null;
        }

        {
            var sampleData = GetSampleData(audio);
            if (sampleData != null)
            {
                sampleData.Dispose();
            }

            audioSampleData[(int)audio] = null;
        }
    }
コード例 #13
0
 public TempoStream GetAudioStream(Song.AudioInstrument audio)
 {
     return(bassAudioStreams[(int)audio]);
 }
コード例 #14
0
 public SampleData GetSampleData(Song.AudioInstrument audio)
 {
     return(audioSampleData[(int)audio]);
 }
コード例 #15
0
    public bool GetAudioIsLoaded(Song.AudioInstrument audio)
    {
        TempoStream stream = GetAudioStream(audio);

        return(AudioManager.StreamIsValid(stream));
    }