2012-01-09 120 views
6

我正在制作音乐游戏,当用户按下音符时,它会发出声音。当用户按下时,声音自然需要立即播放,所以他们可以判断他们是否及时听到了音乐。但是,感觉好像声音是滞后的,尤其是当音符按键变得更快时。Cocos Denshion:与音乐同步播放音效

我的背景.m4a音乐文件与AVAudioPlayer一起播放。我选择使用Cocos Denshion,因为我可以访问currentTime属性。我可能是错的,但我不认为我可以通过CocosDenshion访问它。

我做了一个非常短(不到一秒)的.wav文件。我对预装初始化我的声音效果:

[[SimpleAudioEngine sharedEngine] preloadEffect:@"Assist.wav"]; 

然后播放声音效果,在CCTouchesBegan我打电话:那

[[SimpleAudioEngine sharedEngine] playEffect:@"Assist.wav"]; 

后,它会调用我的代码,以确定用户定时和奖励积分。任何想法,为什么它可能会滞后,或者更好的方式与音乐及时播放音效?

编辑:我最近尝试了几件事情,没有结果。首先,我试着在歌曲的适当时间自动播放声音。仍然有滞后,所以我不认为这是触摸事件缓慢。我也尝试了3个不同的声音库。

但是,当我在模拟器中运行时,它似乎不是滞后的。有人有想法吗?我无能为力,它的一个主要特点我不能真正拿出...

+0

请提供哪些设备的信息,你跑步,和X-码文书CPU负载和GPU负载信息,以及有多少声音在同一时间玩也是一种理念,以及以何种格式为您背景音乐(猜测有一个)。 – 2013-10-09 20:58:58

回答

1

你应该避免这样的代码: - [[SimpleAudioEngine sharedEngine] preloadEffect:@“Assist.wav”];

与应用的开始,你应该通过编写这些代码加载的框架SimpleAudioEngine: -

// SimpleAudioEngine * palySound;在.h文件中创建对象。 palySound = [SimpleAudioEngine sharedEngine];

只要你想播放声音,你可以写:[palySound playEffect:@“Assist.wav”];

+0

感谢您的回复。我试过这个,但它似乎没有任何不同。声音依然落后。 – Arbel 2012-01-10 11:43:37

+0

您是否将SimpleAudioEngine加载到了didFinishLaunchingWithOptions的appdelegate中... – 2012-01-10 12:59:09

+0

是的,似乎没有什么区别。也许触摸事件很慢? – Arbel 2012-01-19 08:35:23

0

我不确定你在做什么SoundEngine,但根据我自己的经验,最好的方法是不要让声音滞后播放声音,那就是为每个声音文件分配一个AVAudioPlayer(除非你想开始搞乱与AudioQueues周围)。

这是一个例子:

让我们假设你在当前视图控制器有一个AVAudioPlayer *assistPlayer;

在你viewDidLoad与您的声音将其初始化:

NSURL *wavURL = [[NSBundle mainBundle] URLForResource:@"Assist" withExtension:@"wav"]; 
assistPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:wavURL error:nil]; 

然后,在你IBAction要播放的文件,只是做:

[assistPlayer play]; 

你不应该得到任何滞后。

+0

尝试过,但它似乎没有区别。其实得到的表现较差。 Denshion是openAL的一个很薄的包装器。 – Arbel 2012-02-19 07:21:29

+0

什么是你的wav文件的采样频率和位深度?你有没有尝试重新取样,只用16位? – 2012-02-21 23:15:14

0

你试过Finch?它声称以低延迟播放声音,它也仅仅是OpenAL的包装。

除此之外,我真的不能与OpenAL的经历,但能想到的你的滞后两个可能的原因:

  1. 主线程是太忙 - 尝试从中分流工作等 线程。

  2. 也许OpenAL定义了一个过大的缓冲区,所以流水线会将整个声音加载到缓冲区(或其中的一大块区域),并且只有在此之后才开始播放。

+0

是的,我给了芬奇一个尝试,但与Denshion有相同的结果。我也能够在一个非常简单的示例项目中复制它https://github.com/so3arbelnox/soundtest – Arbel 2012-02-20 00:29:05