0

我正在尝试制作一个音乐游戏(有点像“吉他英雄”),当他/她播放错误的“音符”时,我遇到了一些问题来通知玩家。现在只是一个基本系统,但例如如果玩家必须按下向上箭头并错过它(无论玩家点击另一个或根本没有点击任何键),我想发出声音或播放调音。

我正在尝试两种方法:

a) 使用第二个演奏者,当检测到未命中时,演奏一个走调的和弦。

b) 修改正在播放的样式的音量。

对于第一个,我认为不可能同时玩两个玩家,我将在这个周末尝试使用第二个线程。尽管如此,理论上我认为它不应该起作用,因为两个玩家将使用相同的 PC 音板来执行不同的指令。这是我在尝试此选项时得到的错误的主要原因:

线程“Thread-2”中的异常 java.lang.NumberFormatException:值超出范围。值:“200” 基数:10

(“200”是我给未命中音符的音量值,但我放多少并不重要,因为它总是失败。)

对于第二个,我没有发现任何正在复制和修改的模式的例子,或者这里有任何确认它是可能的问题。

知道我应该尝试什么吗?

4

1 回答 1

0

播放器通过连接到 MIDI 音序器来播放音乐,而您的系统上只有一个播放器,因此您实际上可以只有一个播放器。(我现在意识到 JFugue API 并没有强制执行,也许它应该执行。)

MIDI 有 16 个通道,JFugue 称之为 Voices。您可以在 Voice 0 中播放歌曲的主旋律,并在 Voice 5 中播放播放器的反馈,而不是使用两个 Player。每个声音中的音符可以使用不同的乐器。如果演奏者得到正确的音符,Voice 0 和 Voice 5 音符将一起发声。如果他们弄错了,你可以在 Voice 5 中播放一些不同的东西,或者如果他们根本不播放任何东西,你可以在 Voice 5 上什么也不播放。

如果您一次演奏一个音色 0 和音色 5 音符(而不是在游戏开始时发送完整模式),您还可以修改音色 0 上音符的开启力度和关闭力度以使其发声更微弱。

(Voice 9 是打击乐音轨,所以不要弹奏它!)

我们需要查看一些源代码来了解为什么您会收到该卷的错误。

于 2021-09-23T16:58:18.193 回答