Originally Posted by
Admiral Slee
Jagex uses their own instruments to play sounds/musics (effects). Just writing the data byte array to a file will not work, you need more than that.
Huh I found this in the client (where aClass292Array3060 is instruments):
Code:
final byte[] method2984() {
int i = 0;
for (int i_4_ = 0; i_4_ < 10; i_4_++) {
if (aClass292Array3060[i_4_] != null && ((((UnknownSoundClass1) aClass292Array3060[i_4_]).anInt2996) + (((UnknownSoundClass1) aClass292Array3060[i_4_]).anInt2984)) > i)
i = ((((UnknownSoundClass1) aClass292Array3060[i_4_]).anInt2996) + (((UnknownSoundClass1) aClass292Array3060[i_4_]).anInt2984));
}
if (i == 0)
return new byte[0];
int i_5_ = 22050 * i / 1000;
byte[] is = new byte[i_5_];
for (int i_6_ = 0; i_6_ < 10; i_6_++) {
if (aClass292Array3060[i_6_] != null) {
int i_7_ = ((((UnknownSoundClass1) aClass292Array3060[i_6_]).anInt2996) * 22050 / 1000);
int i_8_ = ((((UnknownSoundClass1) aClass292Array3060[i_6_]).anInt2984) * 22050 / 1000);
int[] is_9_ = (aClass292Array3060[i_6_].method2909(i_7_, ((UnknownSoundClass1) (aClass292Array3060[i_6_])).anInt2996));
for (int i_10_ = 0; i_10_ < i_7_; i_10_++) {
int i_11_ = is[i_10_ + i_8_] + (is_9_[i_10_] >> 8);
if ((i_11_ + 128 & ~0xff) != 0)
i_11_ = i_11_ >> 31 ^ 0x7f;
is[i_10_ + i_8_] = (byte) i_11_;
}
}
}
return is;
}
But I'm guessing I'd have to track down more modifications to that buffer right?