Skip to content

Commit

Permalink
/speed response generation updated
Browse files Browse the repository at this point in the history
  • Loading branch information
ileukocyte committed Aug 31, 2022
1 parent ce761b5 commit 66e9f1f
Showing 1 changed file with 27 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,44 +51,44 @@ class SpeedCommand : SlashOnlyCommand {
val speed = event.getOption("speed")?.asDouble
val pitch = event.getOption("pitch")?.asDouble

if ((speed === null && pitch === null) || (speed == 1.0 && pitch == 0.0)) {
if (speed === null && pitch === null) {
audioPlayer.scheduler.pitchOffset.set(0.0)
audioPlayer.scheduler.speedRate.set(1.0)

audioPlayer.player.setFilterFactory(null)
} else {
if (speed !== null) {
audioPlayer.scheduler.speedRate.set(speed)
}

event.replySuccess("The audio filters have been disabled!").queue()
if (pitch !== null) {
audioPlayer.scheduler.pitchOffset.set(pitch)
}

return
}
audioPlayer.player.setFilterFactory { _, format, output ->
val filter = TimescalePcmAudioFilter(output, format.channelCount, format.sampleRate)

if (speed !== null) {
audioPlayer.scheduler.speedRate.set(speed)
}
filter.speed = audioPlayer.scheduler.speedRate.get()
filter.setPitchSemiTones(audioPlayer.scheduler.pitchOffset.get())

if (pitch !== null) {
audioPlayer.scheduler.pitchOffset.set(pitch)
listOf(filter)
}
}

audioPlayer.player.setFilterFactory { _, format, output ->
val filter = TimescalePcmAudioFilter(output, format.channelCount, format.sampleRate)

filter.speed = audioPlayer.scheduler.speedRate.get()
filter.setPitchSemiTones(audioPlayer.scheduler.pitchOffset.get())

listOf(filter)
}

val pitchFormat = audioPlayer.scheduler.pitchOffset.get().let {
"${it.toDecimalFormat("+0.##;-0.##")} semitone"
.singularOrPlural(it.absoluteValue)
.applyIf(it == 0.0) { drop(1) }
if (audioPlayer.scheduler.speedRate.get() == 1.0
&& audioPlayer.scheduler.pitchOffset.get() == 0.0) {
event.replySuccess("The audio filters have been disabled!").queue()
} else {
val pitchFormat = audioPlayer.scheduler.pitchOffset.get().let {
"${it.toDecimalFormat("+0.##;-0.##")} semitone"
.singularOrPlural(it.absoluteValue)
.applyIf(it == 0.0) { drop(1) }
}

event.replySuccess("The speed has been set to ${
audioPlayer.scheduler.speedRate.get().toDecimalFormat("0.##x")
} and the pitch offset has been set to $pitchFormat!").queue()
}

event.replySuccess(
"The speed has been set to ${audioPlayer.scheduler.speedRate.get().toDecimalFormat("0.##x")} " +
"and the pitch offset has been set to $pitchFormat!"
).queue()
} else {
throw CommandException("You are not connected to the required voice channel!")
}
Expand Down

0 comments on commit 66e9f1f

Please sign in to comment.