Using the SoundRecorder
Recording sounds requires two steps:
- Add the 
SoundRecordernode to the scene. - Control the 
SoundRecordernode with itsstart()andstop()methods 
Add the SoundRecorder
Create a new SoundRecorder node and specify the preferred MIME type of the recorded audio. The MIME type determines the file type of the audio.
A complication is that the supported audio recorder MIME types vary by browser. Desktop browsers support many more types than mobile browsers. And types vary by platform. For example, Android browsers tend to support audio recording only in WebM, while iOS browsers support audio recording only in MP4.
A good strategy is to specify either WebM or MP4 as the preferred MIME type, and both of them as backups. If the device does not support any of the preferred or backup MIME types, whatever type the device supports will be used as a fallback.
const recorder = new SoundRecorder({
  mimeType: "audio/webm",
  backupMimeTypes: ["audio/webm", "audio/mp4"],
});
sceneOne.addChild(recorder);
Control the SoundRecorder
To begin recording audio, call the start() method on the SoundPlayer:
- If this is the first time the user has used this game to record audio, the browser will ask permission to record audio. If the user grants permission, the audio recording will begin. If the user declines permission, it will throw an exception. Thus, it is highly recommended to place the 
start()method in a try/catch block to handle this possibility. - The 
start()method is asynchronous and should be awaited to ensure the expected order of execution in the code block. 
To end recording audio, call the stop() method on the SoundPlayer:
- The 
stop()method returns the results of the audio recording. The result is aSoundRecorderResultsobject, which contains information such as the MIME type that was used, the duration, beginning and ending time stamps, and audio data as both a base64 string and a Blob. - The 
stop()method is asynchronous and must be awaited. 
If the stop() method is not awaited, the results will be a Promise and the useable data will be lost.
The example below will record audio when the "START" button is pressed. When "STOP" is pressed, recording will end. In the console, the results of the recording is shown. If you copy the base64 data, you can paste it into a website such as https://base64.guru/converter/decode/audio to hear the audio.