com.hecomi.umicrophonewebgl
Version:
Enables microphone input buffer access in Unity WebGL builds
108 lines (74 loc) • 3.67 kB
Markdown
uMicrophoneWebGL
================
**uMicrophoneWebGL** enables microphone input buffer access in Unity WebGL builds.
## Demo
### Recorder
<img src="https://raw.githubusercontent.com/wiki/hecomi/uMicrophoneWebGL/uMicrophoneWebGL-Recorder.gif" width="640" />
### Waveform
<img src="https://raw.githubusercontent.com/wiki/hecomi/uMicrophoneWebGL/uMicrophoneWebGL-Waveform.gif" width="640" />
## Installation
- **Unity Package**
- Download the latest .unitypackage from the [Release page](https://github.com/hecomi/uMicrophoneWebGL/releases).
- **Git URL (UPM)**
- Add `https://github.com/hecomi/uMicrophoneWebGL.git#upm` to the Package Manager.
- **Scoped Registry (UPM)**
- Add a scoped registry to your project.
- URL: `https://registry.npmjs.com`
- Scope: `com.hecomi`
- Install uMicrophoneWebGL in the Package Manager.
## MicrophoneWebGL Component
Attach `MicrophoneWebGL` component to a GameObject. Once attached, the following UI will be displayed:
<img src="https://raw.githubusercontent.com/wiki/hecomi/uMicrophoneWebGL/uMicrophoneWebGL-UI.png" width="640" />
- **Is Auto Start**
- When checked, data collection from the microphone starts automatically at launch.
- **Devices**
- Called when a list of devices is constructed.
- Internally managed by indices (int).
- It's often unclear which device the user has selected, so it is advised to use this only for debugging purposes. Instead, provide a device selection UI at runtime, as demonstrated in the Recorder example.
- **Events**
- Various events can be captured:
- **Ready Event**
- Called once after initialization on the JavaScript side and everything is ready.
- **Device List Event**
- Called when the device list is constructed.
- A list containing device information is passed as an argument.
- **Start Event**
- Called when a microphone starts.
- Internally, this corresponds to the completion of `navigator.mediaDevices.getUserMedia()`.
- **End Event**
- Called when a microphone stops.
- **Data Event**
- Called when microphone input buffer data is retrieved.
- An array of float waveform data is passed as an argument.
## API Reference
`MicrophoneWebGL` component provides the following properties and methods:
### Variables / Properties
- `bool isAutoStart`
- Corresponds to the Is Auto Start option in the UI. If true, the microphone starts automatically at launch.
- `int micIndex`
- Index of the selected microphone device.
- `TimingEvent readyEvent`
- Event triggered when the microphone is ready after initialization.
- `TimingEvent startEvent`
- Event triggered when the microphone starts recording.
- `TimingEvent stopEvent`
- Event triggered when the microphone stops recording.
- `DeviceListEvent deviceListEvent`
- Event triggered when the list of available devices is updated.
- `DataEvent dataEvent`
- Event triggered when microphone data is available.
- `bool isValid { get; }`
- Indicates whether the microphone is in a valid state to be used.
- `List<Device> devices { get; }`
- List of available microphone devices.
- `Device selectedDevice { get; }`
- Information about the currently selected microphone device.
- `bool isRecording { get; }`
- Indicates whether the microphone is currently recording.
### Methods
- `void Begin()`
- Starts the microphone. Does nothing if the microphone is recording.
- `void End()`
- Stops the microphone. Does nothing if the microphone is not recording.
- `void RefreshDeviceList()`
- Refreshes the list of microphone devices. The Device List Event is triggered again at the end of the update.