getChannelGroup() public method

public getChannelGroup ( FMOD &group ) : RESULT
group FMOD
return RESULT
    private void GetSpectrumData()
    {
        System.IntPtr _data;
        uint          _length;

        _dsp.getParameterData(2, out _data, out _length);
        _fftparam = (FMOD.DSP_PARAMETER_FFT)Marshal.PtrToStructure(_data, typeof(FMOD.DSP_PARAMETER_FFT));


        if (_fftparam.numchannels == 0)
        {
            SongPlaylist.getChannelGroup(out _channelGroup);
            _channelGroup.addDSP(0, _dsp);
        }
        else if (_fftparam.numchannels >= 1)
        {
            for (int s = 0; s < _windowSize; s++)
            {
                float _totalChannelData = 0f;
                for (int c = 0; c < _fftparam.numchannels; c++)
                {
                    _totalChannelData += _fftparam.spectrum[c][s];
                }
                _samples[s] = _totalChannelData / _fftparam.numchannels;
            }
        }
    }
    private void PrepareFMODeventInstance()
    {
        SongPlaylist = FMODUnity.RuntimeManager.CreateInstance(_eventPath);
        //SongPlaylist.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject.transform));
        SongPlaylist.start();

        FMODUnity.RuntimeManager.CoreSystem.createDSPByType(FMOD.DSP_TYPE.FFT, out _dsp);
        _dsp.setParameterInt((int)FMOD.DSP_FFT.WINDOWTYPE, (int)_windowShape);
        _dsp.setParameterInt((int)FMOD.DSP_FFT.WINDOWSIZE, _windowSize * 2);

        SongPlaylist.getChannelGroup(out _channelGroup);
        _channelGroup.addDSP(0, _dsp);
    }
示例#3
0
    //播放FMOD音乐
    public void FMODMusicPlay()
    {
        FMODmusic.getChannelGroup(out channelGroup);
        RuntimeManager.CoreSystem.createDSPByType(DSP_TYPE.FFT, out fftDSP);
        //RuntimeManager.LowlevelSystem.createDSPByType(DSP_TYPE.FFT, out fftDSP);
        channelGroup.addDSP(0, fftDSP);
        channelGroup.getDSP(0, out channelhead);
        channelhead.setMeteringEnabled(false, true);
        playedtime = CalcDSPtime();
        FMODmusic.setVolume(0.5f);
        FMODmusic.start();
        channelGroup.getDSPClock(out dsp, out dsp2);
        UnityEngine.Debug.Log("dsp " + dsp);

        //记录一下实际播放时间,抵消播放瞬间产生的延迟
        RhythmController.Instance.songPosOffset = RhythmController.Instance.songStartTime - CalcDSPtime();
//        UnityEngine.Debug.Log("offset="+ RhythmController.Instance.songPosOffset);
    }
示例#4
0
    private void getAllChannelDsp()
    {
        FMOD.ChannelGroup group;
        playerState.getChannelGroup(out group);
        int numGroupChannels, ignore;

        group.getNumGroups(out numGroupChannels);
        Debug.Log(numGroupChannels);
        for (int i = 0; i < numGroupChannels; i++)
        {
            int numDSPs;
            FMOD.ChannelGroup subgroup;
            group.getGroup(i, out subgroup);
            subgroup.getNumDSPs(out numDSPs);
            //Debug.Log("dsp : " + numDSPs);
            FMOD.DSP dsp;
            subgroup.getDSP(0, out dsp);
            dsp.setMeteringEnabled(false, true);
            dsps.Add(dsp);
        }
    }