opus-recorder
react-xr
Our great sponsors
opus-recorder | react-xr | |
---|---|---|
2 | 12 | |
936 | 1,922 | |
- | 2.8% | |
0.0 | 6.4 | |
about 1 year ago | 3 months ago | |
JavaScript | TypeScript | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
opus-recorder
-
Push Notifications, WebXR, and better PWA support coming to iOS
In the end, I went with this library for now: https://github.com/chris-rudmin/opus-recorder
There are issues reported with the latest iOS, though.
-
Flask breaks webpage
// size of one wav in ms var PACKAGESIZE = 175; // offset proportion for delay from recders ( if .5 recoder2 starts at the midlle of recorder1) var OFFSETRATIO = 0.99; var BRIDGERATIO = 0.05; // audio streamer implementation using https://github.com/chris-rudmin/opus-recorder to record audio data and convert to real 16bit pcm mono wav file // sending wav to flask server using post via ajax blob post function screenLogger(text, data) { log.innerHTML += "\n" + text + " " + (data || ''); // console.log(text); } var recorder = new Recorder({ monitorGain: 0, recordingGain: 1, numberOfChannels: 1, wavBitDepth: 16, encoderPath: "../static/dist/waveWorker.min.js" }); // function startRecording(){recorder.start();console.log("started recording");} document.getElementById("startRecording").addEventListener("click", function(){recorder.start();console.log("start");}); //#region recorder1 recorder.onstart = function(){ screenLogger('Recorder is started'); setTimeout(function(){recorder.stop();},PACKAGESIZE); }; recorder.onstop = function(){ screenLogger('Recorder is stopped'); recorder.start(); }; recorder.onstreamerror = function(e){ screenLogger('Error encountered: ' + e.message ); }; recorder.ondataavailable = function( typedArray ){ console.log(recorder.encodedSamplePosition); console.log("data available"); var dataBlob = new Blob( [typedArray], { type: 'audio/wav' } ); var form = new FormData(); form.append('file', dataBlob, "fileName"); form.append('title', "fileName2"); $.ajax({ type: 'POST', url: 'http://127.0.0.1:5000/send', crossDomain: true, data: form, cache: false, processData: false, contentType: false }).done(function(data,status) { console.log(data,status); screenLogger("result:",data); }); var fileName = new Date().toISOString() + ".wav"; var url = URL.createObjectURL( dataBlob ); var audio = document.createElement('audio'); audio.controls = true; audio.src = url; var link = document.createElement('a'); link.href = url; link.download = fileName; link.innerHTML = link.download; var li = document.createElement('li'); li.appendChild(link); li.appendChild(audio); recordingslist.appendChild(li); }; //#endregion //#region recoder2 var recorder2 = new Recorder({ monitorGain: 0, recordingGain: 1, numberOfChannels: 1, wavBitDepth: 16, encoderPath: "../static/dist/waveWorker.min.js" }); recorder2.onstart = function(){ screenLogger('Recorder 2 is started'); setTimeout(function(){recorder2.stop();},PACKAGESIZE*BRIDGERATIO); }; recorder2.onstop = function(){ screenLogger('Recorder 2 is stopped'); recorder2.start(); }; recorder2.onstreamerror = function(e){ screenLogger('Error encountered: ' + e.message ); }; recorder2.ondataavailable = function( typedArray ){ console.log("data available 2 "); var dataBlob = new Blob( [typedArray], { type: 'audio/wav' } ); var form = new FormData(); form.append('file', dataBlob, "fileName"); form.append('title', "fileName2"); $.ajax({ type: 'POST', url: 'http://127.0.0.1:5000/send', crossDomain: true, data: form, cache: false, processData: false, contentType: false }).done(function(data,status) { console.log(data,status); screenLogger("result:",data); }); var fileName = new Date().toISOString() + ".wav"; var url = URL.createObjectURL( dataBlob ); var audio = document.createElement('audio'); audio.controls = true; audio.src = url; var link = document.createElement('a'); link.href = url; link.download = fileName; link.innerHTML = link.download; var li = document.createElement('li'); li.appendChild(link); li.appendChild(audio); recordingslist.appendChild(li); }; //#endregion
react-xr
-
My own collection so far :)
I think the easiest for you would be to get into this through web development try this https://github.com/pmndrs/react-three-fiber coupled with this https://github.com/pmndrs/react-xr But don't expect super beautiful graphic from this, it's abstraction over three.js library which is abstraction over webgl standard which implements OpenGL ES 2.0 which is 7 years old graphics standard targeted to mobile devices with not much power. Or you can experiment with unity (unity XR) or unreal engine which are harder to learn but produce better graphics.
-
I need a push in the right direction
there's also a VR layer that makes previously complex things so easy https://github.com/pmndrs/react-xr
-
Having trouble deciding on a stack?
I'm a pure threejs afficionado myself, but r3f also has some good things going for it: https://github.com/pmndrs/react-xr
-
Three.js learning process
as an example, these are AR/VR components that allow you to build apps in minutes because all the hard parts have been taken take of, for instance gestures: https://github.com/pmndrs/react-xr
-
VR - React Library?
I havenโt played with it, but if I was going to Iโd start here https://github.com/pmndrs/react-xr
-
How to create cross device compatible WebXR experiences
React-XR for leveraging the WebXR API (e.g VR Headset + controllers) & React-Three-Drei which has useful functions for creating WebGL content.
- Help with 360 panoramic view of an image
-
Best options to build WebAR app? (Marker and Markerless)
React three fiber is amazing for building 3d on the web, and has an XR canvas https://github.com/pmndrs/react-xr
- Push Notifications, WebXR, and better PWA support coming to iOS
-
Does React-three-fiber improve how ThreeJS and React work together or is it more designed to give a react-like experience (components) within threejs?
Their docs and examples are beautiful and make it so easy to get started. As a web dev myself, the transition was pretty easy, since it was as simple as "swapping dom out for threejs objects". You get the react "engine" around it for free. Super fun for game development. (even with WebXR support https://github.com/pmndrs/react-xr)
What are some alternatives?
BootstrapBlazor - A set of enterprise-class UI components based on Bootstrap and Blazor
react-three-fiber - ๐จ๐ญ A React renderer for Three.js
noisecraft - Browser-based visual programming language and platform for sound synthesis.
WebXR-emulator-extension - WebXR emulator extension
outreachy - Repo to receive contributions from Outreachy applicants
react-three-next - React Three Fiber, Threejs, Nextjs starter
opustags - Ogg Opus tags editor
mind-ar-js - Web Augmented Reality. Image Tracking, Face Tracking. Tensorflow.js
Olaf - Olaf: Overly Lightweight Acoustic Fingerprinting is a portable acoustic fingerprinting system.
use-cannon - ๐๐ฃ physics based hooks for @react-three/fiber
wasm-pandoc - Pandoc compiled into WebAssembly by Asterius. ๐
gltfjsx - ๐ฎ Turns GLTFs into JSX components