Показать сообщение отдельно
  #4 (permalink)  
Старый 09.12.2019, 23:54
Аватар для Опан1
Аспирант
Отправить личное сообщение для Опан1 Посмотреть профиль Найти все сообщения от Опан1
 
Регистрация: 10.09.2019
Сообщений: 35

<button onclick="bytes_to_sound()"> Перевести из byte массива в звук </button>

<script>
var myarray = [], // тут будут байты для превращения в звук
a = b = 0,
c = 1;
for(i = 0; i < 44100; i ++){
	myarray.push(Math.floor(a + b));
	a += c; b += c * 0.75; c /= 1.000003;
	if(a > 127) a = 0;
	if(b > 127) b = 0;
} // байты готовы. ( звук сирены )
function bytes_to_sound(){
	var context = new AudioContext();
	var myBuffer = context.createBuffer(1, context.sampleRate, context.sampleRate);
	var nowBuffering = myBuffer.getChannelData(0); // наверно, екземпляр, о котором Вы говорили
	for (var i = 0; i < myBuffer.length; i ++) nowBuffering[i] = myarray[i] / 128 - 1; // преобразование, о котором я говорил
	 // другими словами, чтобы пределы значений от 0 до 255 превратились в пределы значений от -1 до 1
	var source = context.createBufferSource();
	source.buffer = myBuffer;
	source.connect(context.destination);
	source.start(0);
}
</script>

Это пример, показывающий, как можно массив байт перевести в звук. Ни decodeAudioData(), ни ArrayBuffer для этого не нужны. А в Вашем, symbians60v5, случае попробуйте так:
<button onclick="bytes_to_sound()"> Перевести из byte массива в звук </button>

if (this.chatSocket) {
	this.chatSocket.onmessage = function (e) {
		let data = JSON.parse(e.data);
		let message = data['message'];
		byteArray = new Array();
		for (let key in message) {
			byteArray.push(message[key]);
		}
	}
}
function bytes_to_sound(){
	let context = new AudioContext();
	var myBuffer = context.createBuffer(1, byteArray.length, context.sampleRate);
	var nowBuffering = myBuffer.getChannelData(0);
	for (var i = 0; i < myBuffer.length; i ++) nowBuffering[i] = byteArray[i] / 128 - 1;
	var source = context.createBufferSource();
	source.buffer = myBuffer;
	source.connect(context.destination);
	source.start(0);
}

Последний раз редактировалось Опан1, 10.12.2019 в 01:44.
Ответить с цитированием