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); }
//播放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); }
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); } }