An async python package for interfacing with Cambridge Audio / Stream Magic compatible streamers.
Project description
aiostreammagic
An async python package for interfacing with Cambridge Audio / Stream Magic compatible streamers
About
This module implements a Python client for the Stream Magic API used to control Cambridge Audio streamers. The API connects over websockets and supports several streamers, receivers, and pre-amps.
Supported Devices
- Cambridge Audio Evo One
- Cambridge Audio Evo 75
- Cambridge Audio Evo 150
- Cambridge Audio CXN
- Cambridge Audio CXN V2
- Cambridge Audio CXN100
- Cambridge Audio CXR120
- Cambridge Audio CXR200
- Cambridge Audio 851N
- Cambridge Audio Edge NQ
- Cambridge Audio AXN10
If your model is not on the list of supported devices, and everything works correctly then add it to the list by opening a pull request.
Installation
pip install aiostreammagic
Usage
Basic Example
import asyncio
from aiostreammagic import StreamMagicClient
HOST = "192.168.20.218"
async def main():
"""Basic demo entrypoint."""
async with StreamMagicClient(HOST) as client:
print(f"Model: {client.info.model}")
for source in client.sources:
print(f"Name: {source.id} ({source.id})")
if __name__ == '__main__':
asyncio.run(main())
Subscription Example
The Cambridge Audio StreamMagic API can automatically notify the client of changes instead of the need for polling. Register a callback to be called whenver new information is available.
import asyncio
from aiostreammagic import StreamMagicClient
HOST = "192.168.20.218"
async def on_state_change(client: StreamMagicClient):
"""Called when new information is received."""
print(f"System info: {client.info}")
print(f"Sources: {client.sources}")
print(f"State: {client.state}")
print(f"Play State: {client.play_state}")
print(f"Now Playing: {client.now_playing}")
async def main():
"""Subscribe demo entrypoint."""
client = StreamMagicClient(HOST)
await client.register_state_update_callbacks(on_state_change)
await client.connect()
# Play media using the unit's front controls or StreamMagic app
await asyncio.sleep(60)
await client.disconnect()
if __name__ == '__main__':
asyncio.run(main())
Advanced Audio Settings
Balance
Adjust left/right speaker balance (requires pre-amp mode):
async with StreamMagicClient(HOST) as client:
await client.set_pre_amp_mode(True)
await client.set_balance(-5) # Range: -15 (left) to 15 (right)
Room Correction
Enable and adjust tilt EQ for room acoustics (negative values add warmth for bright/hard-surfaced rooms, positive values add brightness for soft/damped rooms):
async with StreamMagicClient(HOST) as client:
await client.set_room_correction_mode(True)
await client.set_room_correction_intensity(8) # Range: -15 to 15
Equalizer
Configure the 7-band parametric equalizer (bands 0-6 at 80, 120, 315, 800, 2000, 5000, 8000 Hz):
from aiostreammagic import EQBand, UserEQ
async with StreamMagicClient(HOST) as client:
# Enable equalizer
await client.set_equalizer_mode(True)
# Adjust individual bands (0-6)
await client.set_equalizer_band_gain(3, 2.5) # Band 3, +2.5 dB, Range: -6 to +3
# Set all bands at once (Balanced Hi-Fi preset)
gains = [1.0, 0.5, 0.0, 0.0, 0.0, 0.5, 1.0]
bands = [EQBand(index=i, gain=gains[i]) for i in range(7)]
await client.set_equalizer_params(UserEQ(enabled=True, bands=bands))
# Reset to defaults
await client.set_equalizer_defaults()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiostreammagic-2.12.1.tar.gz.
File metadata
- Download URL: aiostreammagic-2.12.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14274f6e0b98a147caeb05b4e1df60c7a1f617c19d3e50709a33847588833eed
|
|
| MD5 |
f06bca08744973ea9dd076726204afef
|
|
| BLAKE2b-256 |
7eeeb1c04c4a65f25243e56f900a7947e9d6c56aab8df84fed62cd92ce6ce618
|
Provenance
The following attestation bundles were made for aiostreammagic-2.12.1.tar.gz:
Publisher:
release.yml on noahhusby/aiostreammagic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiostreammagic-2.12.1.tar.gz -
Subject digest:
14274f6e0b98a147caeb05b4e1df60c7a1f617c19d3e50709a33847588833eed - Sigstore transparency entry: 938140684
- Sigstore integration time:
-
Permalink:
noahhusby/aiostreammagic@dec61f9208d86530f80b969c3bd0fa787bb3d77e -
Branch / Tag:
refs/tags/2.12.1 - Owner: https://github.com/noahhusby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dec61f9208d86530f80b969c3bd0fa787bb3d77e -
Trigger Event:
release
-
Statement type:
File details
Details for the file aiostreammagic-2.12.1-py3-none-any.whl.
File metadata
- Download URL: aiostreammagic-2.12.1-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b0a640593a06a6cf0d447daf620ce77f2d610ba0b89440574c7147533d24883
|
|
| MD5 |
31626ae7d176e01f2f233f2951d6b2ab
|
|
| BLAKE2b-256 |
24220c93e756bcf2d1b51fd726d1ff02dadfbb467b901cb6789f3c5d7f3b4245
|
Provenance
The following attestation bundles were made for aiostreammagic-2.12.1-py3-none-any.whl:
Publisher:
release.yml on noahhusby/aiostreammagic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiostreammagic-2.12.1-py3-none-any.whl -
Subject digest:
8b0a640593a06a6cf0d447daf620ce77f2d610ba0b89440574c7147533d24883 - Sigstore transparency entry: 938140685
- Sigstore integration time:
-
Permalink:
noahhusby/aiostreammagic@dec61f9208d86530f80b969c3bd0fa787bb3d77e -
Branch / Tag:
refs/tags/2.12.1 - Owner: https://github.com/noahhusby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@dec61f9208d86530f80b969c3bd0fa787bb3d77e -
Trigger Event:
release
-
Statement type: