Skip to content
Packages Examples Agents Blog Get started

Talks to an ace_step_server.py reference server via MusicProvider.
__init__
def __init__(
    base_url: str,
    timeout: float = 120.0,
    retry: RetryPolicyProtocol | None = None,
    circuit_breaker: CircuitBreakerProtocol | None = None
) -> None
generate
async def generate(request: MusicRequest) -> Result[MediaAsset, MusicGenerationError]

Music generation integration.
configure
def configure(
    cls,
    config: MusicConfig | None = None
) -> DynamicModule
stub
def stub(
    cls,
    config: MusicConfig | None = None
) -> DynamicModule

Provider that registers a configured MusicProvider backend.
__init__
def __init__(
    config: MusicConfig | None = None,
    *,
    backend_registry: MusicBackendRegistry | None = None
) -> None
register
async def register(container: ContainerRegistrarProtocol) -> None
boot
async def boot(container: ContainerResolverProtocol) -> None

No async I/O needed at boot beyond what register() already did.

health_check
async def health_check(timeout: float = 5.0) -> HealthCheckResult

Talks to a self-hosted music generation HTTP server.

No SDK dependency — this is the always-available zero-extra backend.

__init__
def __init__(
    base_url: str,
    timeout: float = 60.0,
    retry: RetryPolicyProtocol | None = None,
    circuit_breaker: CircuitBreakerProtocol | None = None
) -> None
generate
async def generate(request: MusicRequest) -> Result[MediaAsset, MusicGenerationError]

Configuration for the music generation subsystem.

Callable task handler — wraps a MusicProvider backend for oridecon-tasks.

Returns a plain dict (never raw MediaAsset bytes) because oridecon-tasks’ result store JSON-serializes JobResult. The umbrella wraps this handler during MultimediaProvider.register() to persist any bytes to oridecon-storage BEFORE this dict is constructed — see the “Async job model” section of the design spec.

__init__
def __init__(backend: MusicProvider) -> None
run
async def run(params: dict[str, Any]) -> dict[str, Any]

Generate music via the Stability AI hosted Stable Audio API.

The API returns the generated audio directly in the response body when Accept: audio/* is set — no base64 decoding needed.

Example

provider = StabilityAudioMusicProvider(api_key="sk-...")
result = await provider.generate(MusicRequest(prompt="lo-fi beats"))
if result.is_ok():
asset = result.unwrap()
print(asset.mime_type, len(asset.bytes_data))

Note

The model defaults to stable-audio-2; override per request with extra["model"] (e.g. stable-audio-2.5). seed, steps, and cfg_scale also pass through extra.

__init__
def __init__(
    api_key: str,
    timeout: float = 60.0,
    retry: RetryPolicyProtocol | None = None,
    circuit_breaker: CircuitBreakerProtocol | None = None
) -> None
generate
async def generate(request: MusicRequest) -> Result[MediaAsset, MusicGenerationError]

Talks to a stable_audio_open_server.py reference server via MusicProvider.
__init__
def __init__(
    base_url: str,
    timeout: float = 45.0,
    retry: RetryPolicyProtocol | None = None,
    circuit_breaker: CircuitBreakerProtocol | None = None
) -> None
generate
async def generate(request: MusicRequest) -> Result[MediaAsset, MusicGenerationError]