示例#1
0
    public static float GetAttribute(TempoStream audioStream, TempoAudioAttributes attribute)
    {
        float value = 0;

        Bass.BASS_ChannelGetAttribute(audioStream.audioHandle, (BASSAttribute)attribute, ref value);
        return(value);
    }
示例#2
0
    public void SetBassAudioStream(AudioInstrument audio, TempoStream stream)
    {
        int arrayPos = (int)audio;

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

        bassAudioStreams[arrayPos] = stream;
    }
示例#3
0
    public static TempoStream LoadTempoStream(string filepath)
    {
        int audioStreamHandle = Bass.BASS_StreamCreateFile(filepath, 0, 0, BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_ASYNCFILE | BASSFlag.BASS_STREAM_PRESCAN);

        audioStreamHandle = Un4seen.Bass.AddOn.Fx.BassFx.BASS_FX_TempoCreate(audioStreamHandle, BASSFlag.BASS_FX_FREESOURCE);

        var newStream = new TempoStream(audioStreamHandle);

        liveAudioStreams.Add(newStream);
        return(newStream);
    }
示例#4
0
    void SetStreamProperties(TempoStream stream, float speed, float vol)
    {
        if (AudioManager.StreamIsValid(stream))
        {
            // Reset
            stream.frequency  = 0;
            stream.tempoPitch = 0;
            stream.tempo      = 0;

            stream.volume = vol * GameSettings.vol_master;
            stream.pan    = GameSettings.audio_pan;

            if (speed < 1)
            {
                float originalFreq = stream.frequency;

                float freq = originalFreq * speed;
                if (freq < 100)
                {
                    freq = 100;
                }
                else if (freq > 100000)
                {
                    freq = 100000;
                }

                stream.frequency = freq;
#if false
                // Pitch shifting equation
                Bass.BASS_ChannelSetAttribute(handle, BASSAttribute.BASS_ATTRIB_TEMPO_PITCH, Mathf.Log(1.0f / speed, Mathf.Pow(2, 1.0f / 12.0f)));
#endif
            }
            else
            {
                stream.tempo = speed * 100 - 100;
            }
        }
    }
示例#5
0
    void SetStreamProperties(TempoStream stream, float speed, float vol)
    {
        if (AudioManager.StreamIsValid(stream))
        {
            // Reset
            stream.frequency  = 0;
            stream.tempoPitch = 0;
            stream.tempo      = 0;

            stream.volume = vol * Globals.gameSettings.vol_master;
            stream.pan    = Globals.gameSettings.audio_pan;

            if (speed < 1 && !Globals.gameSettings.slowdownPitchCorrectionEnabled)
            {
                float originalFreq = stream.frequency;

                float freq = originalFreq * speed;
                if (freq < 100)
                {
                    freq = 100;
                }
                else if (freq > 100000)
                {
                    freq = 100000;
                }

                stream.frequency = freq;

                //    // Pitch shifting equation
                //    stream.tempoPitch = Mathf.Log(1.0f / speed, Mathf.Pow(2, 1.0f / 12.0f));
            }
            else
            {
                stream.tempo = speed * 100 - 100;
            }
        }
    }
示例#6
0
    public bool GetAudioIsLoaded(AudioInstrument audio)
    {
        TempoStream stream = GetAudioStream(audio);

        return(AudioManager.StreamIsValid(stream));
    }
示例#7
0
 public static void SetAttribute(TempoStream audioStream, TempoAudioAttributes attribute, float value)
 {
     Bass.BASS_ChannelSetAttribute(audioStream.audioHandle, (BASSAttribute)attribute, value);
 }