Move Integration
Start from the Miso Music Protocol repository and pin a 40-character commit in Move.toml. Use the Move package name miso_music. A schematic dependency entry is:
[dependencies]miso_music = { git = "https://github.com/misofm/music-protocol.git", rev = "<40-character-commit>" }Choose the commit from the exact package generation you intend to deploy against. An extension’s Move.toml pins its own core revision; align these revisions and verify the published package IDs before composing packages. The current main-branch API can differ from immutable Mainnet or Testnet deployments and from a dependent package’s pin.
Core creation flow
Section titled “Core creation flow”For each work, first publish its share coin template and initialize the currency. With those values and the correct shared registries, the current source API has this shape:
let (composition, composition_cap, composition_shares) = composition::new(&mut composition_registry, &mut composition_currency, composition_treasury_cap);let (recording, recording_cap, recording_shares) = recording::new(&mut recording_registry, &mut recording_currency, recording_treasury_cap, &composition);
composition.publish(&composition_cap);recording.publish(&recording_cap);// Transfer or wrap both capabilities and both returned share balances.This is a flow sketch, not a standalone module: your transaction must create the two currencies and handle every returned value. Recording creation needs only an immutable composition reference. For existing works, fetch the shared composition and registry objects for the same published generation.
To publish a release, derive its target ID from the ordered recording IDs and salt, collect a ReleaseConsent from each recording admin, then call release::new and publish. See Release consent for the scope of that approval.
Read and extend
Section titled “Read and extend”recording::composition_idreturns the immutable parent work ID.release::recording_idsreturns the ordered list.composition::uid_mut,recording::uid_mut, andrelease::uid_mutexpose the typed dynamic-field extension surface after verifying the matching admin cap.CompositionPublishedEvent,RecordingPublishedEvent, andReleasePublishedEventcarry core identities and relationships. Use extension events for optional metadata and economic state.
For paid flows, follow Royalty pools and Recording licenses. Creating a core object alone neither opens a pool nor licenses a recording. Verify that the chosen source revisions and deployed identities compose before wiring payments.
Source: core README, Move.toml, and source modules.