История изменений
Исправление uin, (текущая версия) :
Да, джаваскрипт код по ссылке интересный завтра в него глубже погружусь
а простая перестановка байтов все равно неправильный/неточный результат дает:
var length = io.sampleFrames, channels = io.channels, data = $.getBytesArray($Data, startPosit, byteLength)
var nInt32 = new Int32Array(length)
for (var i = 0, x = 0; i < length; i++, x += 4) {
nInt32[i] = (data[x] << 24) + (data[(x + 1)] << 16) + (data[(x + 2)] << 8) + data[(x + 3)];
}
var fp32 = new Float32Array(nInt32.buffer)
for (var i = 0, x = 0; i < fp32.length; i++) {
for (var c = 0; c < channels; c++, x++)
bufObj[c][i] = fp32[x];
}
//должно быть
Float32Array [ -0.0086669921875, -0.0089111328125, -0.009185791015625, -0.009429931640625, -0.009735107421875, -0.009979248046875, -0.01025390625, -0.010467529296875, -0.010711669921875, -0.010955810546875, /*… */]
//получили
Float32Array [ -0.0086669921875, -0.0089111328125, -0.009124755859375, -0.009368896484375, -0.009674072265625, -0.009918212890625, -0.01025390625, -0.010406494140625, -0.010650634765625, -0.010894775390625, /*… */]
Исправление uin, :
Да, джаваскрипт код по ссылке интересный рза в него глубже погружусь
а простая перестановка байтов все равно неправильный/неточный результат дает:
var length = io.sampleFrames, channels = io.channels, data = $.getBytesArray($Data, startPosit, byteLength)
var nInt32 = new Int32Array(length)
for (var i = 0, x = 0; i < length; i++, x += 4) {
nInt32[i] = (data[x] << 24) + (data[(x + 1)] << 16) + (data[(x + 2)] << 8) + data[(x + 3)];
}
var fp32 = new Float32Array(nInt32.buffer)
for (var i = 0, x = 0; i < fp32.length; i++) {
for (var c = 0; c < channels; c++, x++)
bufObj[c][i] = fp32[x];
}
//должно быть
Float32Array [ -0.0086669921875, -0.0089111328125, -0.009185791015625, -0.009429931640625, -0.009735107421875, -0.009979248046875, -0.01025390625, -0.010467529296875, -0.010711669921875, -0.010955810546875, /*… */]
//получили
Float32Array [ -0.0086669921875, -0.0089111328125, -0.009124755859375, -0.009368896484375, -0.009674072265625, -0.009918212890625, -0.01025390625, -0.010406494140625, -0.010650634765625, -0.010894775390625, /*… */]
Исходная версия uin, :
Да, джаваскрипт код по ссылке интересный рза в него глубже погружусь
а простая перестановка байтов все равно неправильный/неточный результат дает:
var length = io.sampleFrames, channels = io.channels, data = $.getBytesArray($Data, startPosit, byteLength)
var nInt32 = new Int32Array(length)
for (var i = 0, x = 0; i < length; i++, x += 4) {
nInt32[i] = (data[x] << 24) + (data[(x + 1)] << 16) + (data[(x + 2)] << 8) + data[(x + 3)];
}
var fp32 = new Float32Array(nInt32.buffer)
for (var i = 0, x = 0; i < fp32.length; i++) {
for (var c = 0; c < channels; c++, x++)
bufObj[c][i] = fp32[x];
}
[br]//должно быть[br]Float32Array [ -0.0086669921875, -0.0089111328125, -0.009185791015625, -0.009429931640625, -0.009735107421875, -0.009979248046875, -0.01025390625, -0.010467529296875, -0.010711669921875, -0.010955810546875, /*… */][br][br]//получили[br]Float32Array [ -0.0086669921875, -0.0089111328125, -0.009124755859375, -0.009368896484375, -0.009674072265625, -0.009918212890625, -0.01025390625, -0.010406494140625, -0.010650634765625, -0.010894775390625, /*… */]
И звук хрипит довольно сильно, но зато конвертация проходит довольно быстро