# Sync Ledger

Demo: [testnets.nusic.fm](https://testnets.nusic.fm/)

<table><thead><tr><th width="591">Properties</th><th>Group Name</th></tr></thead><tbody><tr><td><p></p><pre class="language-typescriptreact"><code class="lang-typescriptreact">  title: string;
  album: string;
  projectType: string;
  genrePrimary: string[];
  genreSecondary: string[];
  subGenre: string[];
  songMoods: string[];
  songType: string;
  key: string;
  isrcCode: string;
  upcCode: string;
  recordLabel: string;
  distributor: string;
  dateCreated?: Dayjs;
  additionalCreationRow: boolean;
  lyrics: string;
  language: string;
  explicitLyrics: boolean;
  locationOfCreation: {
    [key: string]: {
      studioName?: string;
      city?: string;
      state?: string;
      country?: string;
    };
  };
  license?: "Creative Commons" | "All Rights Reserved";
</code></pre></td><td>Song Metadata</td></tr><tr><td><p></p><pre class="language-typescriptreact"><code class="lang-typescriptreact">  artist: string;
  featuredArtists: string[];
  credits: {
    [key: number]: CreditsRow;
  };
  masterOwnerships: MasterOwnershipObj;
  compositionOwnerships: CompositionOwnershipObj;

type CreditsRow = {
name?: string;
role?: string\[];
percentAllocation?: number;
walletAddress?: string;
};
type MasterOwnershipObj = {
\[key: string]: {
name?: string;
ownershipPercentage?: number;
};
};
type CompositionOwnershipObj = {
\[key: string]: {
name?: string;
ipi?: string;
pro?: string;
ownershipPercentage?: number;
};
}; </code></pre></td><td>Artist Metadata</td></tr><tr><td><p></p><pre class="language-typescriptreact"><code class="lang-typescriptreact">{
fullTrackFile?: File;
fileUrl?: string;
duration?: number;
durationOfEachBarInSec?: number;
startBeatOffsetMs: number;
bpm?: number;
timeSignature: string;
noOfBeatsPerBar: number;
noOfBars?: number;
noOfBeats?: number;
}; </code></pre></td><td>Proof Of Creation (Annotations) Metadata</td></tr></tbody></table>
