diff options
author | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
---|---|---|
committer | Richard <q@1bpm.net> | 2025-04-13 18:48:02 +0100 |
commit | 9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch) | |
tree | 291bd79ce340e67affa755a8a6b4f6a83cce93ea /site/app/twine/flac fucking.js | |
download | apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2 apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip |
initial
Diffstat (limited to 'site/app/twine/flac fucking.js')
-rw-r--r-- | site/app/twine/flac fucking.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/site/app/twine/flac fucking.js b/site/app/twine/flac fucking.js new file mode 100644 index 0000000..dcac896 --- /dev/null +++ b/site/app/twine/flac fucking.js @@ -0,0 +1,65 @@ +var encoded = [];
+var encodedLength = 0;
+
+function encWriteCallback(buffer, bytes, samples, currentFrame) {
+encoded.push(buffer);
+encodedLength += bytes;
+}
+
+var source = await app.getCsound().getTable(113);
+var encoder = Flac.create_libflac_encoder(48000, 1, 16, 5, source.length, false);
+var init = Flac.init_encoder_stream(encoder, encWriteCallback, null, false, 0);
+var response = Flac.FLAC__stream_encoder_process(encoder, source, source.length);
+Flac.FLAC__stream_encoder_finish(encoder);
+Flac.FLAC__stream_encoder_delete(encoder);
+
+let merged = new Uint8Array(encodedLength);
+let offset = 0;
+encoded.forEach(item => {
+merged.set(item, offset);
+offset += item.length;
+});
+encoded = merged;
+
+
+//var encodedArr = new Uint8Array(encoded);
+var size = encoded.length;
+var decoded = [];
+var currentDataOffset = 0;
+function decReadCallback(bufferSize) {
+var end = currentDataOffset == size ? -1 : Math.min(currentDataOffset + bufferSize, size);
+var _buffer;
+var bytesRead;
+if (end !== -1) {
+//_buffer = encodedArr.subarray(currentDataOffset, end);
+_buffer = encoded.slice(currentDataOffset, end);
+bytesRead = end - currentDataOffset;
+currentDataOffset = end;
+} else {
+bytesRead = 0;
+}
+return {buffer: _buffer, readDataLength: bytesRead, error: false};
+}
+
+function decWriteCallback(buffer, _frameHdr) {
+decoded.push(buffer);
+}
+
+function decErrorCallback(err, errMsg) {
+console.log(err, errMsg);
+}
+
+var decoder = Flac.create_libflac_decoder(false);
+var init = Flac.init_decoder_stream(decoder, decReadCallback, decWriteCallback, decErrorCallback, null, false);
+Flac.setOptions(decoder, {analyseSubframes: false, analyseResiduals: false, enableRawStreamMetadata: false});
+var response = Flac.FLAC__stream_decoder_process_until_end_of_stream(decoder);
+
+/*
+var state = 0;
+var response = true;
+while (state <= 3 && response != false) {
+response &= Flac.FLAC__stream_decoder_process_single(decoder);
+state = Flac.FLAC__stream_decoder_get_state(decoder);
+}
+*/
+Flac.FLAC__stream_decoder_finish(decoder);
\ No newline at end of file |