{{ currentLang === 'en' ? 'Draft Restored' : 'Brouillon restaure' }}

{{ currentLang === 'en' ? 'Files must be re-uploaded.' : 'Les fichiers doivent etre re-uploades.' }}

{{ currentLang === 'en' ? 'Saved drafts:' : 'Brouillons enregistres :' }}
{{ submitResult.success ? 'OK' : 'X' }}
{{ submitResult.success ? t('successTitle') : t('errorTitle') }}
{{ submitResult.message }}
{{ t('reference') }}: {{ form.catalogueNumber }}
{{ currentLang === 'en' ? 'Your tracks' : 'Vos pistes' }}
{{ track.position }} {{ track.artist }} - {{ track.title }}
{{ currentLang === 'en' ? 'Preview & verify audio' : 'Verifier les pistes audio' }}
View Online Submission Queue
{{ currentLang === 'en' ? 'Already have a release sheet?' : 'Vous avez deja une fiche produit ?' }} AI {{ currentLang === 'en' ? 'Analyzing your release sheet...' : 'Analyse de votre fiche produit...' }} {{ currentLang === 'en' ? 'Form auto-filled!' : 'Formulaire pre-rempli !' }}
{{ currentLang === 'en' ? 'Drop your release info document here (PDF, DOCX, TXT) — AI will extract catalogue number, artists, tracklist and auto-fill the form below.' : 'Deposez votre document d\'infos de sortie ici (PDF, DOCX, TXT) — l\'IA extraira le numero de catalogue, artistes, tracklist et pre-remplira le formulaire ci-dessous.' }} {{ currentLang === 'en' ? 'Extracting catalogue number, artists, tracklist...' : 'Extraction du numero de catalogue, artistes, tracklist...' }} {{ parserMissing.length === 0 ? (currentLang === 'en' ? 'All fields extracted successfully' : 'Tous les champs extraits avec succes') : (currentLang === 'en' ? parserMissing.length + ' field(s) need manual entry' : parserMissing.length + ' champ(s) a completer manuellement') }}
{{ currentLang === 'en' ? 'Not your audio files or artwork — just the text document with your release metadata.' : 'Pas vos fichiers audio ou visuels — juste le document texte avec les metadonnees de votre sortie.' }}
{{ currentLang === 'en' ? 'Optional' : 'Optionnel' }}
{{ parserSource }} {{ currentLang === 'en' ? 'Fields auto-filled' : 'Champs remplis automatiquement' }}
{{ currentLang === 'en' ? 'Missing:' : 'A completer :' }} {{ parserMissing.join(', ') }}
{{ currentLang === 'en' ? 'Paste your release info below (catalogue number, artist, title, tracklist...):' : 'Collez vos infos de sortie ci-dessous (numero de catalogue, artiste, titre, tracklist...) :' }}
{{ currentLang === 'en' ? 'Paste a link to your release sheet (Google Doc, Dropbox, etc.):' : 'Collez un lien vers votre fiche produit (Google Doc, Dropbox, etc.) :' }}
{{ parsingText }}
Images AI Vision

{{ currentLang === 'en' ? 'Drop your images — AI reads label text to pre-fill the form automatically.' : 'Deposez vos images — l\'IA lit le texte des labels pour pre-remplir le formulaire.' }}

{{ currentLang === 'en' ? 'Image guidelines' : 'Guide images' }}

Sleeve — The cover artwork (pochette). Square format, minimum 1400x1400px.

Label A / Label B — The vinyl macaron (round sticker on each side). Square image, the system will apply the black ring automatically if needed.

AI Label Reading — When you drop a label image, our AI reads the text on the macaron to pre-fill tracklist, artist, and other metadata automatically.

Only upload final artwork — no mockups, no watermarks. Images are published directly to the website.

Pochette — L'artwork de la pochette. Format carre, minimum 1400x1400px.

Label A / Label B — Le macaron du vinyle (sticker rond sur chaque face). Image carree, le systeme appliquera le ring noir automatiquement si besoin.

Lecture IA du label — Quand vous deposez une image de label, notre IA lit le texte du macaron pour pre-remplir la tracklist, l'artiste et autres metadonnees automatiquement.

N'uploadez que les artworks finaux — pas de mockups, pas de filigranes. Les images sont publiees directement sur le site.

Sleeve
Sleeve
{{ form.catalogueNumber || 'SKU' }}{{ imageSuffixes.sleeve || '' }}
{{ imageWarnings.sleeve.message }}
Label A
Label A
{{ form.catalogueNumber || 'SKU' }}{{ imageSuffixes.labelA || '' }}
Label B
Label B
{{ form.catalogueNumber || 'SKU' }}{{ imageSuffixes.labelB || '' }}
Other
Other
{{ form.catalogueNumber || 'SKU' }}{{ imageSuffixes.other || '' }}
{{ imageWarnings.other.message }}
{{ currentLang === 'en' ? 'Reading ' + Object.values(imageSlots).filter(s => s).length + ' image(s)...' : 'Lecture de ' + Object.values(imageSlots).filter(s => s).length + ' image(s)...' }}
{{ currentLang === 'en' ? 'Pre-filled:' : 'Pre-rempli :' }} {{ field }}
{{ imageBatchError }}
{{ currentLang === 'en' ? 'Vision detected differences:' : 'Differences detectees par la vision :' }}
{{ c.label }}: {{ c.current }} {{ c.field === 'tracklist' ? (c.vision.split('\n').length + ' tracks from image') : c.vision }}
{{ currentLang === 'en' ? 'AI detected metadata from label' : 'IA a detecte des metadonnees sur le label' }}
{{ c.field }}: {{ c.current }} {{ c.suggested }}
{{ currentLang === 'en' ? 'Auto-filled:' : 'Rempli auto :' }} {{ visionResult.autoFilled.join(', ') }}
{{ currentLang === 'en' ? 'Tracklist from label:' : 'Tracklist depuis le label :' }}
{{ t.position }}. {{ t.title }}{{ t.remixer ? ' (' + t.remixer + ')' : '' }}
{{ Object.values(imageSlots).filter(s => s).length }} image(s) ready
{{ t('draft_saved') || 'Draft saved' }}
{{ t('draft_restored') || 'Draft restored' }}
{{ t('selectRelease') || 'Select a release to copy specs from:' }}
{{ entry.sku }}
{{ entry.label }} - {{ entry.format || 'No format' }}
1 {{ t('basicInfo') }}
{{ emailError }}
MFG
{{ label.name }}
No labels found
+ Create new label
{{ artist.name }}
No artists found
+
Common Ground
{{ t('commonGroundDesc') }}
{{ discogsError }}
{{ discogsPreview.title }}
{{ discogsPreview.artist }}
Release auto-set to +60 days
{{ daysUntilRelease }}d
{{ t('minDateError') }}
2 Genres
3 {{ t('descriptionSection') }}

{{ currentLang === 'en' ? 'Artist bio, release description, relevant info.' : 'Bio artiste, description release, infos pertinentes.' }}

4 Preview Audio

MP3 ou WAV. Les fichiers seront convertis en MP3 320kbps automatiquement.

{{ currentLang === 'en' ? 'Some tracks are missing titles.' : 'Certaines pistes n\'ont pas de titre.' }} {{ currentLang === 'en' ? 'Drop a label image above to auto-fill titles via vision analysis, or edit them manually in the tracklist.' : 'Deposez une image de label ci-dessus pour remplir les titres automatiquement, ou editez-les manuellement dans la tracklist.' }}

Name your files = name your tracks. The filename becomes the track title. Prefix with the vinyl position so tracks sort automatically.

A1 - Ghosts Of Massilia.wav
A2 - Haunted Hill.wav
B1 - 99 Sand Attack.wav
Auto-sorted by position Titles filled from filenames Without prefix → manual order confirmation

VA tip: use A1 - Artist Name - Title.wav to auto-fill artist names.

Nommez vos fichiers = nommez vos pistes. Le nom du fichier devient le titre. Prefixez avec la position vinyle pour un tri automatique.

A1 - Ghosts Of Massilia.wav
A2 - Haunted Hill.wav
B1 - 99 Sand Attack.wav
Tri automatique par position Titres remplis depuis les noms Sans prefixe → confirmation manuelle de l'ordre

Compil : utilisez A1 - Nom Artiste - Titre.wav pour remplir les artistes automatiquement.

Drop MP3/WAV files
or click to browse
{{ currentLang === 'en' ? 'Tip: prefix files with vinyl position (A1, B1...)' : 'Astuce : prefixez vos fichiers avec la position vinyle (A1, B1...)' }}
Tracklist *
{{ currentLang === 'en' ? 'Track titles come from your filenames — edit them here as they should appear on the site' : 'Les titres viennent de vos noms de fichiers — editez-les ici tels qu\'ils doivent apparaitre sur le site' }}
{{ track.format }} {{ track.metadata.sizeFormatted }} {{ track.metadata.durationFormatted }}
No tracks yet
{{ s.label }}: {{ s.count }} track{{ s.count > 1 ? 's' : '' }} — {{ s.duration }}
Total: {{ sideSummary.total }}

No track positions detected in filenames. Files are in drop order. Please verify the order matches your tracklist — use the drag handles to reorder if needed.

Aucune position de piste detectee dans les noms de fichiers. L'ordre correspond a celui du depot. Verifiez que l'ordre correspond a votre tracklist — utilisez les poignees pour reorganiser si besoin.

{{ currentLang === 'en' ? 'Track order confirmed' : 'Ordre des pistes confirme' }}
{{ audioTracks.filter(t => t.file || t.serverUrl).length }} track(s) ready Total: {{ formatTotalSize(audioTracks) }}
{{ currentLang === 'en' ? `${audioTracks.length} track(s) ready - Drop MP3/WAV files to match` : `${audioTracks.length} track(s) prets - Deposez les fichiers MP3/WAV` }}
{{ audioTracks.filter(t => t.file || t.serverUrl).length }}/{{ audioTracks.length }} {{ currentLang === 'en' ? 'files matched' : 'fichiers associes' }} Total: {{ formatTotalSize(audioTracks) }}
5 {{ t('termsConditions') }}
{{ t('tracklistCheckWarning') }}
{{ currentLang === 'en' ? 'Missing required fields:' : 'Champs requis manquants :' }}
{{ currentLang === 'en' ? 'Please accept all terms and conditions to submit' : 'Veuillez accepter toutes les conditions pour soumettre' }}
{{ uploadStatusText }}
YOYAKU
LABEL

Sign in to submit your release

Sign in with Google

Only for YOYAKU team accounts

or
{{ authMessage }}
New label? Create a label account Already have an account? Sign in