moodbar-decode 0.3.2

Audio decode adapters for moodbar analysis
Documentation

Moodbar (Rust)

CLI-first moodbar generator in Rust.

Prerequisites

  • Rust toolchain (stable)
  • make
  • Node.js (required for make wasm / npm package preparation)

Install

cargo install --path crates/moodbar-cli

Quick Start

# run the full local quality gate
make check

# generate legacy raw moodbar bytes (.mood)
cargo run -p moodbar -- generate -i input.ogg -o output.mood

# generate SVG output
cargo run -p moodbar -- generate -i input.ogg -o output.svg --format svg --svg-shape waveform

# inspect a moodbar file
cargo run -p moodbar -- inspect -i output.mood

For installed usage, replace cargo run -p moodbar -- with moodbar.

Advanced Options

Common tuning flags include --normalize-mode, --deterministic-floor, --detection-mode, --frames-per-color, and --band-edges-hz. Use command help for full details:

moodbar generate --help
moodbar batch --help

Developer Workflow

# core crate fast loop
make test-core

# full workspace tests
make test

# parity harness (skips when fixtures are absent)
make parity

# fmt + clippy -D warnings + tests
make check

# optional watch loop
make tdd-core

Batch Mode

cargo run -p moodbar -- batch -i ./music -o ./moods --progress

Repository Layout

  • crates/moodbar-core: decode, analysis, normalization, render primitives
  • crates/moodbar-cli: generate, batch, inspect commands
  • crates/moodbar-wasm: WebAssembly JS bindings for browser/Node usage
  • examples/web-wasm: minimal browser integration example
  • examples/expo-native: minimal Expo/React Native integration example
  • tests/fixtures/legacy: optional parity fixtures
  • scripts/: helper scripts

WASM Demo (Browser)

make wasm
python3 -m http.server
# open http://localhost:8000/docs/wasm-demo.html

React Native Package

@moodbar/native ships Expo-compatible native bindings for iOS + Android. Native artifacts are built with the Cargo mobile-release profile (opt-level=z, lto, strip) to reduce binary size.

# prepare npm metadata/assets
make native

# build iOS xcframework (macOS/Xcode)
make native-ios

# build Android JNI libs (requires Android NDK + cargo-ndk)
make native-android

CI and Releases

  • CI workflow (Rust core): .github/workflows/rust-ci.yml
  • CI workflow (WASM package): .github/workflows/wasm-ci.yml
  • CI workflow (Native package): .github/workflows/native-ci.yml
  • Release prep workflow: .github/workflows/prepare-release.yml (workflow_dispatch; opens PR that bumps Cargo.toml version)
  • Release artifacts: .github/workflows/release-build.yml (Linux + macOS)
  • Artifact naming: moodbar-<tag>-<target>.tar.gz
  • npm release workflow: .github/workflows/publish-wasm-npm.yml (OIDC trusted publishing)
  • npm release workflow (native): .github/workflows/publish-native-npm.yml (OIDC trusted publishing)

Publish WASM Package

# build and normalize npm package metadata/files
make wasm

# reproducibility and package contract checks
make publish-check-wasm

# publish manually (maintainer workflow)
npm publish ./crates/moodbar-wasm/pkg --access public --provenance

Publish Native Package

# build platform artifacts + prepare metadata/files
make native-ios
make native-android

# validate package contract and dry-run publish
make publish-check-native

# publish manually (maintainer workflow)
npm publish ./packages/moodbar-native --access public --provenance