Improved client sample rate for audio from 22050 -> 44100

This commit is contained in:
ceikry 2023-06-07 11:05:30 -05:00
parent 0537679514
commit 6ae6b19e44
7 changed files with 15 additions and 13 deletions

View file

@ -71,7 +71,7 @@ public class AudioChannel {
public static void init(@OriginalArg(3) boolean stereo) {
threadPriority = 2;
AudioChannel.stereo = stereo;
sampleRate = 22050;
sampleRate = GlobalConfig.AUDIO_SAMPLE_RATE;
}
@OriginalMember(owner = "client!id", name = "a", descriptor = "(ILsignlink!ll;Ljava/awt/Component;II)Lclient!vh;")

View file

@ -45,7 +45,7 @@ public class GlobalConfig {
// default distance is 28
public static int TILE_DISTANCE = 56;
public static int VIEW_DISTANCE = TILE_DISTANCE * 128;
public static int VIEW_DISTANCE = TILE_DISTANCE * 256;
public static float VIEW_FADE_DISTANCE = ((float) TILE_DISTANCE / 28.0f) * 256.0f;
public static boolean USE_SHIFT_CLICK = true;
@ -55,4 +55,6 @@ public class GlobalConfig {
public static int JS5_RESPONSE_TIMEOUT = 5000;
public static int AUDIO_SAMPLE_RATE = 44100; //default is 22050
}

View file

@ -111,7 +111,7 @@ public final class MidiPcmStream extends PcmStream {
public final synchronized boolean isSongReady(@OriginalArg(0) Song arg0, @OriginalArg(2) Js5 arg1, @OriginalArg(3) SoundBank arg2) {
arg0.createPrograms();
@Pc(5) boolean local5 = true;
@Pc(20) int[] local20 = new int[]{22050};
@Pc(20) int[] local20 = new int[]{GlobalConfig.AUDIO_SAMPLE_RATE};
for (@Pc(34) ByteArrayNode local34 = (ByteArrayNode) arg0.programs.head(); local34 != null; local34 = (ByteArrayNode) arg0.programs.next()) {
@Pc(40) int local40 = (int) local34.key;
@Pc(48) MidiInstrument local48 = (MidiInstrument) this.aClass133_23.get(local40);

View file

@ -54,9 +54,9 @@ public final class PcmResampler {
@OriginalMember(owner = "client!og", name = "a", descriptor = "(III)I")
public static int gcd(@OriginalArg(1) int arg0, @OriginalArg(2) int arg1) {
if (arg0 > 22050) {
if (arg0 > GlobalConfig.AUDIO_SAMPLE_RATE) {
arg1 = arg0;
arg0 = 22050;
arg0 = GlobalConfig.AUDIO_SAMPLE_RATE;
}
while (arg0 != 0) {
@Pc(21) int local21 = arg1 % arg0;

View file

@ -11,7 +11,7 @@ import java.util.Random;
public final class SynthInstrument {
@OriginalMember(owner = "client!pj", name = "o", descriptor = "[I")
public static final int[] samples = new int[220500];
public static final int[] samples = new int[GlobalConfig.AUDIO_SAMPLE_RATE * 10];
@OriginalMember(owner = "client!pj", name = "p", descriptor = "[I")
public static final int[] oscillatorIntervalRanges = new int[5];
@OriginalMember(owner = "client!pj", name = "q", descriptor = "[I")

View file

@ -49,12 +49,12 @@ public final class SynthSound {
if (local1 == 0) {
return new byte[0];
}
local3 = local1 * 22050 / 1000;
local3 = local1 * GlobalConfig.AUDIO_SAMPLE_RATE / 1000;
@Pc(52) byte[] local52 = new byte[local3];
for (@Pc(54) int local54 = 0; local54 < 10; local54++) {
if (this.instruments[local54] != null) {
@Pc(72) int local72 = this.instruments[local54].length * 22050 / 1000;
@Pc(82) int local82 = this.instruments[local54].start * 22050 / 1000;
@Pc(72) int local72 = this.instruments[local54].length * GlobalConfig.AUDIO_SAMPLE_RATE / 1000;
@Pc(82) int local82 = this.instruments[local54].start * GlobalConfig.AUDIO_SAMPLE_RATE / 1000;
@Pc(94) int[] local94 = this.instruments[local54].getSamples(local72, this.instruments[local54].length);
for (@Pc(96) int local96 = 0; local96 < local72; local96++) {
@Pc(111) int local111 = local52[local96 + local82] + (local94[local96] >> 8);
@ -71,7 +71,7 @@ public final class SynthSound {
@OriginalMember(owner = "client!sl", name = "b", descriptor = "()Lclient!kj;")
public final PcmSound toPcmSound() {
@Pc(2) byte[] local2 = this.getSamples();
return new PcmSound(22050, local2, this.start * 22050 / 1000, this.end * 22050 / 1000);
return new PcmSound(GlobalConfig.AUDIO_SAMPLE_RATE, local2, this.start * GlobalConfig.AUDIO_SAMPLE_RATE / 1000, this.end * GlobalConfig.AUDIO_SAMPLE_RATE / 1000);
}
@OriginalMember(owner = "client!sl", name = "c", descriptor = "()I")

View file

@ -664,7 +664,7 @@ public final class client extends GameShell {
soundChannel.quit();
}
AudioChannel.init(Preferences.stereo);
musicChannel = AudioChannel.create(22050, signLink, canvas, 0);
musicChannel = AudioChannel.create(GlobalConfig.AUDIO_SAMPLE_RATE, signLink, canvas, 0);
musicChannel.setStream(musicStream);
soundChannel = AudioChannel.create(2048, signLink, canvas, 1);
soundChannel.setStream(soundStream);
@ -1364,13 +1364,13 @@ public final class client extends GameShell {
AudioChannel.init(Preferences.stereo);
musicStream = new MidiPcmStream();
musicStream.init();
musicChannel = AudioChannel.create(22050, GameShell.signLink, GameShell.canvas, 0);
musicChannel = AudioChannel.create(GlobalConfig.AUDIO_SAMPLE_RATE, GameShell.signLink, GameShell.canvas, 0);
musicChannel.setStream(musicStream);
MidiPlayer.init(musicStream, js5Archive15, js5Archive14, js5Archive4);
soundChannel = AudioChannel.create(2048, GameShell.signLink, GameShell.canvas, 1);
soundStream = new MixerPcmStream();
soundChannel.setStream(soundStream);
resampler = new PcmResampler(22050, AudioChannel.sampleRate);
resampler = new PcmResampler(GlobalConfig.AUDIO_SAMPLE_RATE, AudioChannel.sampleRate);
MusicPlayer.titleSong = js5Archive6.getGroupId(TITLE_SONG);
mainLoadPercentage = 30;
mainLoadState = 50;