Metadata-Version: 2.2
Name: eml-signal
Version: 0.1.1
Summary: Bounded signal-processing kernels and contract metadata for EML-style workflows.
Author: Monogate Research
License: Apache-2.0
Keywords: eml,signal,audio,contracts
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE

# eml-signal

`eml-signal` is a small pure-Python package of bounded signal-processing
kernels and contract metadata for EML-style workflows.

The v0 package focuses on deterministic list-based kernels that are easy to
test, inspect, and use in synthetic examples for Monowave, Field Kernel Lab,
and EML course material.

It does not process copyrighted audio assets, make wellness or medical claims,
or claim production DSP or real-time performance.

## Kernels

- `envelope_follower`
- `one_pole_lowpass`
- `band_energy_toy`
- `moving_average_filter`
- `zero_crossing_rate`
- `highpass_difference`
- `convolution_1d`

Each kernel returns a `SignalResult` with `values` or `features`, an
`operation_count`, and a compact contract dictionary.

## CLI

```bash
eml-signal --help
eml-signal demo envelope
eml-signal demo lowpass
eml-signal demo band-energy
eml-signal validate examples/signal_contract.json
eml-signal examples
eml-signal validate-example signal_contract
```

`validate <path>` reads a local contract file. Installed packages also include
bundled examples; use `examples` to list them and `validate-example` to validate
one without relying on a source-tree `examples/` directory.

## Python

```python
from eml_signal import envelope_follower, one_pole_lowpass

signal = [0.0, 0.25, -0.5, 1.0, -0.25]
envelope = envelope_follower(signal, alpha=0.2)
smooth = one_pole_lowpass(signal, alpha=0.25)

print(envelope.operation_count)
print(smooth.values)
```

## Monowave Bridge

The optional Monowave bridge maps bounded synthetic signals into the same broad
feature names used by Monowave scenes:

- `input_level`
- `bass_drive`
- `mid_drive`
- `treble_drive`

```python
from eml_signal import monowave_feature_summary

features = monowave_feature_summary([0.0, 0.25, -0.5, 0.75])
print(features["features"])
```

This bridge is for synthetic fixtures and contract checks. It is not a
wellness, treatment, production DSP, or real-time performance claim.

## Boundaries

- synthetic examples only in v0;
- no therapy, medical, healing, brainwave, entrainment, or consciousness claims;
- no copyrighted audio fixtures;
- no production DSP claim;
- no real-time/mobile performance claim.
