Есть ли способ добавить необработанные данные из памяти в качестве образца в Web Audio Api? Я хотел бы добавить Int8Array (или Int16Array) в качестве буфера, в буфере есть только образцы и формат WAV или MP3. Я попробовал audioContext.createBuffer и без каких-либо успехов.Возможно создание AudioBuffer из памяти, т.е. Int8Array
Что-то вроде этого:
var buffer = audioContext.createBuffer(1,8192, 22000);
var intArray = new Int8Array(....);
// -- fill intarray
buffer.buffer = intArray;
...
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
Если это не возможно есть формат звука совместим с contetx.decodeAudio(), который легко «подражать» в памяти? Т.е. просто заголовок или что-то в этом роде.
Ну, это задокументировано, что getChannelData возвращает Float32Array. :) Но да, это именно то, как это сделать. – cwilso
@cwilso, да, но название, по-видимому, подразумевает, что оно доступно только для чтения. – kr1
Вау! Спасибо за быстрое оповещение! И это сработало! Я не выяснил, как наилучшим образом решить проблему из-за того, что Float32Array имеет фиксированный размер и, похоже, не существует способа повторно установить массив с новым размером. Я не знаю, есть ли другой способ, но теперь я должен загрузить пустой wav-файл в качестве источника, который больше, чем любой из моих образцов памяти, а затем вставить в него образцы. Возможно, мне нужен пустой буфер для всех образцов. Я, по крайней мере, двигаюсь, спасибо! – Perty