summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2017-10-15 21:22:25 +0200
committerJustin Worthe <justin@worthe-it.co.za>2017-10-15 21:22:25 +0200
commit44e8d9cee54a24367d25410f78aa10d479eda572 (patch)
treec437d8ee3ab88797c6c6cc1928e6b756fc4045c0 /web
parent8fd6dd041fddaedfadd2e5aa4b6072ef7e106393 (diff)
Moved emscripten APIs to their own module and added stubs for other methods
Diffstat (limited to 'web')
-rw-r--r--web/main.js21
1 files changed, 15 insertions, 6 deletions
diff --git a/web/main.js b/web/main.js
index b01340d..2388be8 100644
--- a/web/main.js
+++ b/web/main.js
@@ -5,21 +5,30 @@ var Module = {
onRuntimeInitialized: main
};
-function jsArrayToF32ArrayPtr(jsArray) {
+function jsArrayToF32ArrayPtr(jsArray, callback) {
var data = new Float32Array(jsArray);
var nDataBytes = data.length * data.BYTES_PER_ELEMENT;
var dataPtr = Module._malloc(nDataBytes);
var dataHeap = new Uint8Array(Module.HEAPU8.buffer, dataPtr, nDataBytes);
dataHeap.set(new Uint8Array(data.buffer));
- return dataHeap.byteOffset;
+
+ var result = callback(dataHeap.byteOffset, jsArray.length);
+
+ Module._free(dataPtr);
+
+ return result;
+}
+
+function find_fundamental_frequency(data, samplingRate) {
+ return jsArrayToF32ArrayPtr(data, function(dataPtr, dataLength) {
+ return Module._find_fundamental_frequency(dataPtr, dataLength, samplingRate);
+ });
}
function main() {
var data = [1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1, 0];
- var dataLength = data.length;
- var ptr = jsArrayToF32ArrayPtr(data);
-
- var fundamental = _find_fundamental_frequency(ptr, data.length, 44100.0);
+ var fundamental = find_fundamental_frequency(data, 44100.0);
+
console.log("Javascript here. Our fundamental frequency according to Rust is " + fundamental + "Hz");
}