Metadata-Version: 2.4
Name: tatolab-microphone
Version: 0.68.9
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Multimedia :: Sound/Audio :: Capture/Recording
Requires-Dist: tatolab-stream>=0.47.0
License-File: LICENSE
License-File: THIRD-PARTY-NOTICES.md
Summary: The microphone node for Tatolab streams.
Author-email: Jonathan Fontanez <fontanezj1@gmail.com>
License: BUSL-1.1
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://tatolab.com
Project-URL: Install, https://tatolab.com/docs/install
Project-URL: Source, https://github.com/tatolab/streamlib

# tatolab-microphone

The microphone node for Tatolab streams.

```python
from tatolab.microphone import MicrophoneSource

microphone = stream_builder.add(MicrophoneSource, config={"device_id": None})
```

`MicrophoneSource` publishes timestamped blocks of interleaved samples on
`audio`, as messages `tatolab.stream.audio_block.AudioBlock` reads. Each block
carries the device's instant of its first sample.

The node runs in its own helper process. Its native half opens the capture
stream through the engine's audio device backend — PipeWire, else ALSA, on
Linux; CoreAudio on macOS; silence where no backend exists — which the module
host table exports, and a native thread publishes every block with no Python
attached. A stream without this node opens no microphone and never asks for
microphone access.

Built as a third party builds a module: a standalone maturin project depending
on `tatolab-stream` and `tatolab-module-sdk`, never on an engine crate.

