2010-05-02 103 views
0

所以我在做一个XNA游戏,我需要使用XACT为我的歌曲(而不是媒体播放器)。我需要使用XACT,因为每首歌都会有,当在同一时间(低音,铅,鼓)等等。我不能使用媒体播放器播放,因为媒体播放器只能同时播放一首歌曲合并多层。我怎样才能找到一首歌曲的歌曲位置被打了XACT?

不管怎么说,所以可以说我有一首歌与XACT打在我的项目用下面的代码

public SongController() 
    { 
     audioEngine = new AudioEngine(@"Content\Song1\Song1.xgs"); 
     waveBank = new WaveBank(audioEngine, @"Content\Song1\Layers.xwb"); 
     soundBank = new SoundBank(audioEngine, @"Content\Song1\SongLayers.xsb"); 
     songTime = new PlayTime(); 

     Vox = soundBank.GetCue("Vox"); 
     BG = soundBank.GetCue("BG"); 
     Bass = soundBank.GetCue("Bass"); 
     Lead = soundBank.GetCue("Lead"); 
     Other = soundBank.GetCue("Other"); 

     Vox.SetVariable("CueVolume", 100.0f); 
     BG.SetVariable("CueVolume", 100.0f); 
     Bass.SetVariable("CueVolume", 100.0f); 
     Lead.SetVariable("CueVolume", 100.0f); 
     Other.SetVariable("CueVolume", 100.0f); 

     _bassVol = 100.0f; 
     _voxVol = 100.0f; 
     _leadVol = 100.0f; 
     _otherVol = 100.0f; 

     Vox.Play(); 
     BG.Play(); 
     Bass.Play(); 
     Lead.Play(); 
     Other.Play();  } 

所以,当我看看Vox的,或BG的变量(他们是提示的BTW)我不能似乎在他们身上找到了任何打球位置。

所以我想的问题是:是否有变,我可以查询来查找数据,或者我需要让我自己的类,从开始计时了,我开始播放歌曲?

感谢

回答

1

我不相信这是可能的。据我所知,API不提供这些信息。

0

根据您的需要,您可能能够编写混合各种图层而不是代码的提示(Cue.Play中的可能延迟在这种情况下可能没有帮助)。如果您需要做的是在代码(例如因为您要建立某种形式的跟踪器),那么你需要做定时自己和存储时间相关的元数据XACT之外了。

使用SoundEffect可能是一个选项(至少可以延长声音的持续时间,并且其播放延迟可能会更好一些),因为您无论如何都会将所有声音加载到内存中。

相关问题