@audiofool/moondog 0.2.2 → 0.3.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/NOTICE +12 -0
  2. package/README.md +4 -2
  3. package/licenses/stability-ai-community-license.md +58 -0
  4. package/package.json +3 -1
  5. package/scripts/moondog.mjs +171 -7
  6. package/src/core/apple-projection-domain-services.mjs +14 -0
  7. package/src/core/capability-catalog.mjs +104 -0
  8. package/src/core/library-store.mjs +500 -0
  9. package/src/core/listening-now.mjs +80 -6
  10. package/src/core/listening-profile-domain-services.mjs +12 -0
  11. package/src/core/moondog-application.mjs +754 -23
  12. package/src/i18n/index.mjs +6 -3
  13. package/src/i18n/messages/de.mjs +3 -0
  14. package/src/i18n/messages/en.mjs +4 -0
  15. package/src/i18n/messages/es.mjs +3 -0
  16. package/src/i18n/messages/fr.mjs +3 -0
  17. package/src/i18n/messages/it.mjs +3 -0
  18. package/src/i18n/messages/ja.mjs +3 -0
  19. package/src/i18n/messages/ko.mjs +3 -0
  20. package/src/i18n/messages/pt.mjs +3 -0
  21. package/src/i18n/messages/zh-Hant.mjs +3 -0
  22. package/src/i18n/messages/zh.mjs +3 -0
  23. package/src/i18n/preferences.mjs +24 -0
  24. package/src/i18n/screen/es.mjs +118 -0
  25. package/src/i18n/screen/ja.mjs +118 -0
  26. package/src/i18n/screen/pt.mjs +118 -0
  27. package/src/i18n/screen/zh.mjs +118 -0
  28. package/src/integrations/apple-music/music-app.mjs +9 -3
  29. package/src/integrations/apple-music/terminal-preview-player.mjs +68 -11
  30. package/src/integrations/netease/ncm-cli-player.mjs +12 -6
  31. package/src/integrations/playlist-links.mjs +96 -0
  32. package/src/integrations/public-playlists.mjs +10 -4
  33. package/src/integrations/spotify/service.mjs +22 -1
  34. package/src/integrations/stable-audio/cover.mjs +324 -0
  35. package/src/integrations/stable-audio/local-generator.mjs +855 -0
  36. package/src/integrations/stable-audio/setup.mjs +653 -0
  37. package/src/integrations/stable-audio/sources.mjs +106 -0
  38. package/src/profile/listening-history-store.mjs +1 -1
  39. package/src/profile/listening-profile-projection.mjs +1 -1
  40. package/src/profile/moondog-suggestions.mjs +9 -0
  41. package/src/profile/music-import-bundle.mjs +3 -1
  42. package/src/profile/music-providers.mjs +3 -0
  43. package/src/profile/taste-compiler.mjs +206 -0
  44. package/src/runtime/pi/agent-runtime.mjs +600 -38
  45. package/src/runtime/pi/model-switch.mjs +26 -0
  46. package/src/runtime/pi/model-transport.mjs +34 -4
  47. package/src/runtime/pi/record-name.mjs +80 -0
  48. package/src/runtime/pi/reply-language.mjs +45 -0
  49. package/src/runtime/pi/tool-arguments.mjs +89 -0
  50. package/src/surfaces/cli/command-completions.mjs +15 -0
  51. package/src/surfaces/cli/format-output.mjs +1 -0
  52. package/src/surfaces/cli/tui.mjs +467 -19
@@ -134,6 +134,7 @@ const WORDS = {
134
134
  "künstler", "lautsprecher", "handy", "fernseher", "pausiere", "stoppe", "überspringe", "weiter", "zurück", "lauter",
135
135
  "leiser", "welche", "welcher", "welches", "heute", "abend", "oder", "aber", "sehr", "gut", "mal", "doch", "gern", "gerne"]),
136
136
  it: new Set(["il", "gli", "di", "della", "delle", "dello", "degli", "dei", "che", "per", "metti", "mettimi", "mettere", "suona",
137
+ "sposta", "spostare", "spostato", "trasferisci", "sul", "sulla", "sullo", "sui", "sugli", "ho", "hai", "fatto", "riproduzione",
137
138
  "suonami", "suonare", "riproduci", "aggiungi", "canzone", "canzoni", "brano", "brani", "coda", "qualcosa", "ancora",
138
139
  "grazie", "ciao", "favore", "ascoltare", "ascolta", "prossima", "prossimo", "chi", "perché", "sono", "è", "voglio",
139
140
  "vorrei", "puoi", "fammi", "dammi", "altra", "altro", "adesso", "anche", "molto", "bene", "mio", "mia", "miei", "mie",
@@ -148,7 +149,7 @@ const COMMANDS = {
148
149
  pt: new Set(["coloca", "coloque", "toque", "adiciona", "adicione", "bota", "põe", "procura", "mostra", "recomenda", "faz", "quero", "pula", "me"]),
149
150
  fr: new Set(["mets", "joue", "lance", "ajoute", "trouve", "cherche", "montre", "donne", "recommande", "propose", "fais", "arrête", "écoute", "je", "peux", "est"]),
150
151
  de: new Set(["spiel", "spiele", "füge", "füg", "gib", "zeig", "zeige", "suche", "finde", "mach", "empfiehl", "stell", "setz", "leg", "überspringe", "pausiere", "stoppe", "ich", "kannst", "bitte"]),
151
- it: new Set(["metti", "mettimi", "suona", "suonami", "riproduci", "aggiungi", "trova", "consiglia", "consigliami", "fammi", "dammi", "fai", "proponi", "ferma", "voglio", "vorrei", "ascolta", "puoi"]),
152
+ it: new Set(["metti", "mettimi", "suona", "suonami", "riproduci", "aggiungi", "sposta", "trasferisci", "trova", "consiglia", "consigliami", "fammi", "dammi", "fai", "proponi", "ferma", "voglio", "vorrei", "ascolta", "puoi"]),
152
153
  };
153
154
  // Letters only one language writes are strong evidence; letters several share are weak evidence for each.
154
155
  const MARKS = [
@@ -179,13 +180,15 @@ function explicitLocale(prose) {
179
180
  * message's own script and words, then the listener's configured language.
180
181
  * Quoted titles never decide it, because song names travel across languages.
181
182
  */
182
- export function messageLocale(text, fallback = DEFAULT_LOCALE) {
183
+ // explicit: false reads only the language a text is written in, for Moondog's own replies, where
184
+ // "I'll answer in Spanish" is not a request.
185
+ export function messageLocale(text, fallback = DEFAULT_LOCALE, { explicit: readRequest = true } = {}) {
183
186
  const configured = normalizeLocale(fallback) ?? DEFAULT_LOCALE;
184
187
  if (typeof text !== "string") return configured;
185
188
  const prose = text
186
189
  .replace(/^(?:Track|Artist): "(?:[^"\\\n]|\\.)*"[ \t]*$/gmu, "")
187
190
  .replace(/"(?:[^"\\]|\\.)*"|“[^”]*”|«[^»]*»|「[^」]*」|『[^』]*』|《[^》]*》/gu, "");
188
- const explicit = explicitLocale(prose);
191
+ const explicit = readRequest ? explicitLocale(prose) : null;
189
192
  if (explicit) return explicit;
190
193
  // Hangul is only Korean and kana only Japanese; whichever the message uses more decides.
191
194
  const hangul = prose.match(/\p{Script=Hangul}/gu)?.length ?? 0;
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `„${title}“ von ${artist}` : artist; return `\n\nGespeichert: Du magst ${name}. Sag mir jederzeit, wenn du das ändern willst.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `„${title}“ von ${artist}` : artist; return `\n\nGespeichert: Ich lasse ${name} aus allem heraus, was ich spiele und vorschlage. Sag mir jederzeit, wenn du das ändern willst.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `„${title}“ von ${artist}` : artist; return `\n\nZurückgenommen: deine frühere Wahl zu ${name}.`; },
133
+ "generate.made": ({ title, length, seed }) => `Auf diesem Mac mit Stable Audio 3 gemacht: „${title}“ (${length}, Seed ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `Der Stream läuft auf diesem Mac weiter, jedes Mal mit einem neuen Stück, bis zu ${minutes} Minuten. Du kannst ihn jederzeit stoppen.`,
135
+ "onAir.request": "Geh auf Sendung: Mach neue Musik für jetzt und lass sie weiterlaufen",
133
136
  "turn.cancelled": "Weitere Schritte abgebrochen.",
134
137
  "turn.interrupted": "Die Antwort wurde unterbrochen. Die erfassten Spotify-Ergebnisse stehen unten; keine Aktion wurde wiederholt.",
135
138
  };
@@ -131,6 +131,10 @@ export default {
131
131
  "choice.like": ({ title, artist }) => { const name = title ? `"${title}" by ${artist}` : artist; return `\n\nSaved: you like ${name}. Tell me any time to change it.`; },
132
132
  "choice.avoid": ({ title, artist }) => { const name = title ? `"${title}" by ${artist}` : artist; return `\n\nSaved: I'll keep ${name} out of what I play and suggest. Tell me any time to change it.`; },
133
133
  "choice.retract": ({ title, artist }) => { const name = title ? `"${title}" by ${artist}` : artist; return `\n\nUndone: your earlier choice about ${name}.`; },
134
+ "generate.made": ({ title, length, seed }) => `Made on this Mac with Stable Audio 3: "${title}" (${length}, seed ${seed}).`,
135
+ "generate.stream": ({ minutes }) => `The stream keeps going on this Mac, a new track each time, for up to ${minutes} minutes. Stop it any time.`,
136
+ // What the listener says to go on air, in the language the reply follows (/onair in the terminal).
137
+ "onAir.request": "Go on air: make new music for right now and keep it going",
134
138
  "turn.cancelled": "Cancelled further work.",
135
139
  "turn.interrupted": "The response was interrupted. The recorded Spotify outcomes are below; no action was replayed.",
136
140
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nGuardado: te gusta ${name}. Dímelo cuando quieras cambiarlo.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nGuardado: dejaré ${name} fuera de lo que pongo y te sugiero. Dímelo cuando quieras cambiarlo.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nDeshecho: tu elección anterior sobre ${name}.`; },
133
+ "generate.made": ({ title, length, seed }) => `Hecho en este Mac con Stable Audio 3: «${title}» (${length}, semilla ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `El flujo sigue en este Mac, con una pista nueva cada vez, hasta ${minutes} minutos. Puedes pararlo cuando quieras.`,
135
+ "onAir.request": "Sal al aire: crea música nueva para este momento y que siga sonando",
133
136
  "turn.cancelled": "Cancelé el resto.",
134
137
  "turn.interrupted": "La respuesta se interrumpió. Abajo están los resultados registrados en Spotify; no se repitió ninguna acción.",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `« ${title} » de ${artist}` : artist; return `\n\nEnregistré : vous aimez ${name}. Dites-le-moi quand vous voulez pour le changer.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `« ${title} » de ${artist}` : artist; return `\n\nEnregistré : je laisserai ${name} de côté dans ce que je joue et propose. Dites-le-moi quand vous voulez pour le changer.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `« ${title} » de ${artist}` : artist; return `\n\nAnnulé : votre choix précédent sur ${name}.`; },
133
+ "generate.made": ({ title, length, seed }) => `Fait sur ce Mac avec Stable Audio 3 : « ${title} » (${length}, graine ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `Le flux continue sur ce Mac, avec un nouveau morceau à chaque fois, jusqu'à ${minutes} minutes. Vous pouvez l'arrêter à tout moment.`,
135
+ "onAir.request": "Prends l'antenne : crée de la musique nouvelle pour ce moment et fais-la durer",
133
136
  "turn.cancelled": "Suite annulée.",
134
137
  "turn.interrupted": "La réponse a été interrompue. Les résultats Spotify enregistrés figurent ci-dessous ; aucune action n'a été relancée.",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `"${title}" di ${artist}` : artist; return `\n\nSalvato: ti piace ${name}. Dimmelo quando vuoi cambiarlo.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `"${title}" di ${artist}` : artist; return `\n\nSalvato: terrò ${name} fuori da ciò che suono e ti propongo. Dimmelo quando vuoi cambiarlo.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `"${title}" di ${artist}` : artist; return `\n\nAnnullato: la tua scelta precedente su ${name}.`; },
133
+ "generate.made": ({ title, length, seed }) => `Fatto su questo Mac con Stable Audio 3: «${title}» (${length}, seed ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `Il flusso continua su questo Mac, con un brano nuovo ogni volta, fino a ${minutes} minuti. Puoi fermarlo quando vuoi.`,
135
+ "onAir.request": "Vai in onda: crea musica nuova per adesso e tienila accesa",
133
136
  "turn.cancelled": "Ho annullato il resto.",
134
137
  "turn.interrupted": "La risposta si è interrotta. Gli esiti di Spotify registrati sono qui sotto; nessuna azione è stata ripetuta.",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `${artist}の「${title}」` : artist; return `\n\n保存しました: ${name}が好き。変えたいときはいつでも言ってください。`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `${artist}の「${title}」` : artist; return `\n\n保存しました: ${name}は再生にもおすすめにも入れません。変えたいときはいつでも言ってください。`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `${artist}の「${title}」` : artist; return `\n\n取り消しました: ${name}についての前の選択。`; },
133
+ "generate.made": ({ title, length, seed }) => `この Mac の Stable Audio 3 で作りました:「${title}」(${length}、シード ${seed})。`,
134
+ "generate.stream": ({ minutes }) => `この Mac で一曲ずつ新しい曲を作り続けます(最長 ${minutes} 分)。いつでも止められます。`,
135
+ "onAir.request": "オンエアして。今の気分に合わせて新しい音楽を作って、流し続けて",
133
136
  "turn.cancelled": "以降の処理をキャンセルしました。",
134
137
  "turn.interrupted": "返事が中断されました。記録された Spotify の操作結果は下のとおりです。操作は繰り返していません。",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `${artist}의 "${title}"` : artist; return `\n\n저장했습니다: ${name}을(를) 좋아하신다고요. 바꾸고 싶으면 언제든 말씀해 주세요.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `${artist}의 "${title}"` : artist; return `\n\n저장했습니다: ${name}은(는) 재생하거나 추천하지 않겠습니다. 바꾸고 싶으면 언제든 말씀해 주세요.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `${artist}의 "${title}"` : artist; return `\n\n취소했습니다: ${name}에 대한 이전 선택.`; },
133
+ "generate.made": ({ title, length, seed }) => `이 Mac의 Stable Audio 3로 만들었습니다: "${title}" (${length}, 시드 ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `이 Mac에서 매번 새 곡을 만들며 최대 ${minutes}분 동안 이어집니다. 언제든 멈출 수 있습니다.`,
135
+ "onAir.request": "방송 시작해 줘. 지금 분위기에 맞춰 새 음악을 만들어서 계속 틀어 줘",
133
136
  "turn.cancelled": "남은 작업을 취소했습니다.",
134
137
  "turn.interrupted": "답변이 중단되었습니다. 기록된 Spotify 결과는 아래와 같으며, 어떤 작업도 다시 실행하지 않았습니다.",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nSalvo: você gosta de ${name}. É só me dizer quando quiser mudar.`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nSalvo: vou deixar ${name} fora do que eu toco e sugiro. É só me dizer quando quiser mudar.`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `"${title}" de ${artist}` : artist; return `\n\nDesfeito: sua escolha anterior sobre ${name}.`; },
133
+ "generate.made": ({ title, length, seed }) => `Feito neste Mac com o Stable Audio 3: "${title}" (${length}, semente ${seed}).`,
134
+ "generate.stream": ({ minutes }) => `O fluxo continua neste Mac, com uma faixa nova a cada vez, por até ${minutes} minutos. Pare quando quiser.`,
135
+ "onAir.request": "Entre no ar: crie música nova para agora e mantenha tocando",
133
136
  "turn.cancelled": "Cancelei o resto.",
134
137
  "turn.interrupted": "A resposta foi interrompida. Abaixo estão os resultados registrados no Spotify; nenhuma ação foi repetida.",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已儲存:你喜歡${name}。想改的話隨時告訴我。`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已儲存:我播放和推薦時都會避開${name}。想改的話隨時告訴我。`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已撤銷:你之前對${name}的選擇。`; },
133
+ "generate.made": ({ title, length, seed }) => `用這台 Mac 上的 Stable Audio 3 做的:「${title}」(${length},種子 ${seed})。`,
134
+ "generate.stream": ({ minutes }) => `音樂流會在這台 Mac 上一首接一首地做下去,最多 ${minutes} 分鐘,隨時可以停。`,
135
+ "onAir.request": "開播吧:照現在的感覺做新的音樂,一直放下去",
133
136
  "turn.cancelled": "已取消後續操作。",
134
137
  "turn.interrupted": "回覆中斷了。已記錄的 Spotify 結果如下;沒有重新執行任何操作。",
135
138
  };
@@ -130,6 +130,9 @@ export default {
130
130
  "choice.like": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已保存:你喜欢${name}。想改的话随时告诉我。`; },
131
131
  "choice.avoid": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已保存:我播放和推荐时都会避开${name}。想改的话随时告诉我。`; },
132
132
  "choice.retract": ({ title, artist }) => { const name = title ? `${artist}的《${title}》` : artist; return `\n\n已撤销:你之前对${name}的选择。`; },
133
+ "generate.made": ({ title, length, seed }) => `用这台 Mac 上的 Stable Audio 3 做的:「${title}」(${length},种子 ${seed})。`,
134
+ "generate.stream": ({ minutes }) => `音乐流会在这台 Mac 上一首接一首地做下去,最多 ${minutes} 分钟,随时可以停。`,
135
+ "onAir.request": "开播吧:按现在的感觉做新的音乐,一直放下去",
133
136
  "turn.cancelled": "已取消后续操作。",
134
137
  "turn.interrupted": "回复中断;已确认的 Spotify 操作结果如下。未重新执行任何操作。",
135
138
  };
@@ -32,3 +32,27 @@ export async function writeLanguagePreference(locale, environment = process.env)
32
32
  export async function resolveListenerLocale(environment = process.env) {
33
33
  return normalizeLocale(environment.MOONDOG_LANGUAGE) ?? await readLanguagePreference(environment) ?? systemLocale(environment);
34
34
  }
35
+
36
+ /**
37
+ * The reply language every surface and conversation of one core shares. A change, from the
38
+ * language picker or from the agent when the listener asks in words, is saved once and heard by
39
+ * each surface that shows the language.
40
+ */
41
+ export function createLanguageSelection({ save } = {}) {
42
+ const listeners = new Set();
43
+ return {
44
+ async change(locale) {
45
+ const value = normalizeLocale(locale);
46
+ if (!value) throw new Error(`Unsupported language: ${locale}`);
47
+ await save?.(value);
48
+ for (const listener of listeners) {
49
+ try { listener(value); } catch { /* A surface cannot undo a saved choice. */ }
50
+ }
51
+ return value;
52
+ },
53
+ subscribe(listener) {
54
+ listeners.add(listener);
55
+ return () => listeners.delete(listener);
56
+ },
57
+ };
58
+ }
@@ -874,6 +874,7 @@ export default {
874
874
  "See what you're listening to": "Ver lo que escuchas",
875
875
  "Control the Music app": "Controlar la app Música",
876
876
  "Choose a music service": "Elegir un servicio de música",
877
+ "Read or change Moondog's settings": "Ver o cambiar los ajustes de Moondog",
877
878
  "Search outside your library": "Buscar fuera de tu biblioteca",
878
879
  "Find music nearby": "Buscar música cercana",
879
880
  "Remember what you've told me": "Recordar lo que me has dicho",
@@ -1027,4 +1028,121 @@ export default {
1027
1028
  "Skipped. /service and /model are here when you want them.": "Omitido. /service y /model siguen aquí cuando los quieras.",
1028
1029
  "Saving your music service...": "Guardando tu servicio de música...",
1029
1030
  "Choose where Moondog plays music": "Elige dónde pone Moondog la música",
1031
+ "Make music on this Mac with Stable Audio 3": "Hacer música en este Mac con Stable Audio 3",
1032
+ "Stop making music here": "Dejar de hacer música aquí",
1033
+ "Making music on this Mac": "Hacer música en este Mac",
1034
+ "Made by Moondog": "Hecho por Moondog",
1035
+ "Stable Audio 3 needs a Mac with Apple silicon, so Moondog can't make music here.": "Stable Audio 3 necesita un Mac con Apple silicon, así que Moondog no puede hacer música aquí.",
1036
+ "Moondog makes music on this Mac with Stable Audio 3, powered by Stability AI. Ask for a track. Stable Audio 3 runs offline, and the track stays on this Mac.": "Moondog hace música en este Mac con Stable Audio 3, powered by Stability AI. Pide una pista. Stable Audio 3 funciona sin conexión y la pista se queda en este Mac.",
1037
+ "Making music on this Mac is off. Stable Audio 3 is ready at {folder}; turn it on with /generation on.": "Hacer música en este Mac está desactivado. Stable Audio 3 está listo en {folder}; actívalo con /generation on.",
1038
+ "Making music on this Mac is off, and Stable Audio 3 isn't at {folder}. Install Stability AI's MLX build from github.com/Stability-AI/stable-audio-3, then use /generation on with its folder.": "Hacer música en este Mac está desactivado, y Stable Audio 3 no está en {folder}. Instala la versión MLX de Stability AI desde github.com/Stability-AI/stable-audio-3 y luego usa /generation on con su carpeta.",
1039
+ "Making music on this Mac is off, and Stable Audio 3 at {folder} isn't fully installed. Run ./install.sh --download medium there, then use /generation on.": "Hacer música en este Mac está desactivado, y Stable Audio 3 en {folder} no está instalado del todo. Ejecuta ./install.sh --download medium ahí y luego usa /generation on.",
1040
+ "Stable Audio 3 at {folder} doesn't have the Medium model yet. Run ./install.sh --download medium there, then use /generation again.": "Stable Audio 3 en {folder} aún no tiene el modelo Medium. Ejecuta ./install.sh --download medium ahí y vuelve a usar /generation.",
1041
+ "Stable Audio 3 at {folder} isn't installed yet. Run ./install.sh --download medium there, then use /generation again.": "Stable Audio 3 en {folder} aún no está instalado. Ejecuta ./install.sh --download medium ahí y vuelve a usar /generation.",
1042
+ "Stable Audio 3 isn't at {folder}. Use /generation on with the folder that holds its sa3 script.": "Stable Audio 3 no está en {folder}. Usa /generation on con la carpeta que contiene su script sa3.",
1043
+ "Use /generation, /generation on [folder], or /generation off.": "Usa /generation, /generation on [carpeta] o /generation off.",
1044
+ "Music making on.": "Creación de música activada.",
1045
+ "Music making off.": "Creación de música desactivada.",
1046
+ "Music making isn't ready.": "La creación de música no está lista.",
1047
+ "warming up": "calentando",
1048
+ "reading your taste": "leyendo tus gustos",
1049
+ "composing": "componiendo",
1050
+ "pressing the record": "prensando el disco",
1051
+ "saving it": "guardándolo",
1052
+ "Let Moondog make music on this Mac": "Deja que Moondog haga música en este Mac",
1053
+ "Make a track": "Hacer una pista",
1054
+ "Play a track Moondog made": "Volver a poner una pista que hizo Moondog",
1055
+ "Start a stream": "Empezar un flujo",
1056
+ "Stop the stream": "Parar el flujo",
1057
+ "Go on air: Moondog keeps making music from your taste": "Sal al aire: Moondog sigue haciendo música a tu gusto",
1058
+ "on air until {time}": "al aire hasta las {time}",
1059
+ "Cutting the next record": "Grabando el siguiente disco",
1060
+ "Off air: the next record couldn't be made.": "Fuera del aire: no se pudo hacer el siguiente disco.",
1061
+ "The next record is still being cut.": "El siguiente disco aún se está grabando.",
1062
+ "Off air.": "Fuera del aire.",
1063
+ "Turn on music making first: /generation on.": "Primero activa la creación de música: /generation on.",
1064
+ "Download a Stable Audio 3 model from Stability AI": "Descargar un modelo de Stable Audio 3 de Stability AI",
1065
+ "Make music with a downloaded model": "Hacer música con un modelo descargado",
1066
+ "Delete a downloaded model from this Mac": "Borrar de este Mac un modelo descargado",
1067
+ "Stop the download": "Detener la descarga",
1068
+ "Medium: best sound, about 5.2 GB": "Medium: el mejor sonido, unos 5,2 GB",
1069
+ "Small Music: faster, lighter, about 1.7 GB": "Small Music: más rápido y ligero, unos 1,7 GB",
1070
+ "getting ready": "preparando",
1071
+ "There isn't enough free space on this Mac for the download. Free some up, then use /generation download again.": "No hay espacio libre suficiente en este Mac para la descarga. Libera algo y vuelve a usar /generation download.",
1072
+ "A downloaded file didn't match the one Stability AI publishes, so Moondog deleted it. Use /generation download to try again.": "Un archivo descargado no coincidía con el que publica Stability AI, así que Moondog lo borró. Usa /generation download para intentarlo de nuevo.",
1073
+ "The download couldn't reach its source. Check your connection, then use /generation download to try again.": "La descarga no pudo llegar a su origen. Revisa tu conexión y usa /generation download para intentarlo de nuevo.",
1074
+ "Another Moondog window or terminal is already downloading. /generation shows how far it is.": "Otra ventana o terminal de Moondog ya está descargando. /generation muestra cuánto lleva.",
1075
+ "The download didn't finish: {error}. Use /generation download to try again.": "La descarga no terminó: {error}. Usa /generation download para intentarlo de nuevo.",
1076
+ "unknown error": "error desconocido",
1077
+ "Stable Audio 3 {model} is ready. Ask for a track.": "Stable Audio 3 {model} está listo. Pide una pista.",
1078
+ "Stable Audio 3 {model} is downloaded. Use it with /generation use {choice}.": "Stable Audio 3 {model} está descargado. Úsalo con /generation use {choice}.",
1079
+ "Download stopped. /generation download {choice} picks it up where it left off.": "Descarga detenida. /generation download {choice} sigue donde se quedó.",
1080
+ "download stopped on an error": "descarga detenida por un error",
1081
+ "downloading": "descargando",
1082
+ "downloading, {percent}%": "descargando, {percent}%",
1083
+ "installed, in use": "instalado, en uso",
1084
+ "installed": "instalado",
1085
+ "partly downloaded": "descargado en parte",
1086
+ "not downloaded": "sin descargar",
1087
+ "{size} GB": "{size} GB",
1088
+ "In use: your own install at {folder}.": "En uso: tu propia instalación en {folder}.",
1089
+ "Get a model with /generation download medium or small. /generation use, remove and cancel manage them.": "Consigue un modelo con /generation download medium o small. /generation use, remove y cancel los gestionan.",
1090
+ "Making music on this Mac is off. Get Stable Audio 3 with /generation download medium, or small for a lighter model; music making turns on when it's done.": "Hacer música en este Mac está desactivado. Consigue Stable Audio 3 con /generation download medium, o small para un modelo más ligero; la creación de música se activa al terminar.",
1091
+ "Stable Audio 3 {model} isn't downloaded yet. Get it with /generation download {choice}.": "Stable Audio 3 {model} aún no está descargado. Consíguelo con /generation download {choice}.",
1092
+ "Making music on this Mac is off. Stable Audio 3 {model} is ready; turn it on with /generation on.": "Hacer música en este Mac está desactivado. Stable Audio 3 {model} está listo; actívalo con /generation on.",
1093
+ "Use /generation download, use or remove with medium or small, or /generation cancel.": "Usa /generation download, use o remove con medium o small, o /generation cancel.",
1094
+ "No download is running.": "No hay ninguna descarga en curso.",
1095
+ "Stable Audio 3 {model} is already downloading.": "Stable Audio 3 {model} ya se está descargando.",
1096
+ "Another download is running. /generation cancel stops it.": "Hay otra descarga en curso. /generation cancel la detiene.",
1097
+ "Stable Audio 3 {model} is already on this Mac. Use it with /generation use {choice}.": "Stable Audio 3 {model} ya está en este Mac. Úsalo con /generation use {choice}.",
1098
+ "Already downloaded.": "Ya está descargado.",
1099
+ "Stable Audio 3 comes under the Stability AI Community License ({license}), and its text encoder, T5Gemma, under the Gemma Terms of Use ({gemma}). Moondog downloads it only from Stability AI's official sources and checks every file.\n\nTo agree and download {model} ({size} GB): /generation download {choice} --agree": "Stable Audio 3 se rige por la Stability AI Community License ({license}), y su codificador de texto, T5Gemma, por los Gemma Terms of Use ({gemma}). Moondog lo descarga solo de las fuentes oficiales de Stability AI y comprueba cada archivo.\n\nPara aceptar y descargar {model} ({size} GB): /generation download {choice} --agree",
1100
+ "Waiting for your agreement.": "Esperando tu aceptación.",
1101
+ "The download didn't finish.": "La descarga no terminó.",
1102
+ "Downloading Stable Audio 3 {model} ({size} GB) from Stability AI's official sources. It runs in the background; /generation cancel stops it, and a later download picks up where it left off.": "Descargando Stable Audio 3 {model} ({size} GB) de las fuentes oficiales de Stability AI. Sigue en segundo plano; /generation cancel la detiene, y una descarga posterior sigue donde se quedó.",
1103
+ "Downloading Stable Audio 3 {model}.": "Descargando Stable Audio 3 {model}.",
1104
+ "Wait for the download to finish, or stop it with /generation cancel, before removing a model.": "Espera a que termine la descarga, o detenla con /generation cancel, antes de quitar un modelo.",
1105
+ "A download is running.": "Hay una descarga en curso.",
1106
+ "Stable Audio 3 {model} isn't on this Mac.": "Stable Audio 3 {model} no está en este Mac.",
1107
+ "Removing Stable Audio 3 {model} deletes its {size} GB from this Mac. It's the last model, so the rest of Moondog's Stable Audio 3 setup goes too. To go ahead: /generation remove {choice} --yes": "Quitar Stable Audio 3 {model} borra sus {size} GB de este Mac. Es el último modelo, así que también se va el resto de la instalación de Stable Audio 3 de Moondog. Para seguir: /generation remove {choice} --yes",
1108
+ "Removing Stable Audio 3 {model} deletes its {size} GB from this Mac. To go ahead: /generation remove {choice} --yes": "Quitar Stable Audio 3 {model} borra sus {size} GB de este Mac. Para seguir: /generation remove {choice} --yes",
1109
+ "Nothing removed yet.": "Aún no se ha quitado nada.",
1110
+ "Removed Stable Audio 3 {model} from this Mac.": "Stable Audio 3 {model} quitado de este Mac.",
1111
+ "Removed.": "Quitado.",
1112
+ "Removed. Music making isn't ready.": "Quitado. La creación de música no está lista.",
1113
+ "Use /generation, /generation on [folder] or off, or /generation download, use or remove with medium or small.": "Usa /generation, /generation on [carpeta] u off, o /generation download, use o remove con medium o small.",
1114
+ "best sound": "el mejor sonido",
1115
+ "faster, lighter": "más rápido y ligero",
1116
+ "getting uv": "obteniendo uv",
1117
+ "getting Stable Audio 3's code": "obteniendo el código de Stable Audio 3",
1118
+ "setting up Python": "preparando Python",
1119
+ "downloading the model": "descargando el modelo",
1120
+ "checking the files": "comprobando los archivos",
1121
+ "Stable Audio 3's Python environment couldn't be set up. Check your connection, then use /generation download to try again.": "No se pudo preparar el entorno de Python de Stable Audio 3. Revisa tu conexión y usa /generation download para intentarlo de nuevo.",
1122
+ "The library isn't available here.": "La biblioteca no está disponible aquí.",
1123
+ "Saved": "Guardadas",
1124
+ "Play one with `/library play <name>`, or keep the song playing now with `/library save`.": "Reproduce una con `/library play <nombre>` o guarda lo que suena con `/library save`.",
1125
+ "No playlist is called “{name}”.": "No hay ninguna lista llamada “{name}”.",
1126
+ "{name} has nothing in it yet.": "{name} aún no tiene nada.",
1127
+ "None of its songs could be found.": "No se encontró ninguna de sus canciones.",
1128
+ "Playing {name}.": "Reproduciendo {name}.",
1129
+ "Moondog's tracks were left out. They play with Apple Music chosen.": "Las pistas de Moondog se quedaron fuera. Suenan con Apple Music elegido.",
1130
+ "Some songs couldn't be found.": "No se encontraron algunas canciones.",
1131
+ "Already in {name}.": "Ya está en {name}.",
1132
+ "Saved.": "Guardada.",
1133
+ "Saved to {name}.": "Guardada en {name}.",
1134
+ "Your saved songs and playlists": "Tus canciones guardadas y tus listas",
1135
+ "Look in the library": "Mirar en la biblioteca",
1136
+ "Save to the library": "Guardar en la biblioteca",
1137
+ "Play from the library": "Reproducir de la biblioteca",
1138
+ "Paste a playlist link after /library import.": "Pega un enlace de lista después de /library import.",
1139
+ "Reading the playlist…": "Leyendo la lista…",
1140
+ "{added} of {total} songs came in.": "Entraron {added} de {total} canciones.",
1141
+ "{count} songs came in.": { one: "Entró {count} canción.", other: "Entraron {count} canciones." },
1142
+ "It now shapes your taste.": "Ahora forma parte de tu gusto.",
1143
+ "It couldn't shape your taste this time.": "Esta vez no pudo sumarse a tu gusto.",
1144
+ "It doesn't shape your taste; add taste after the link if it should.": "No forma parte de tu gusto; añade taste después del enlace si debería.",
1145
+ "Imported {name}.": "Importada: {name}.",
1146
+ "Use /library, /library play <name>, /library save [playlist], or /library import <link>.": "Usa /library, /library play <nombre>, /library save [lista] o /library import <enlace>.",
1147
+ "Import a playlist": "Importar una lista",
1030
1148
  };
@@ -874,6 +874,7 @@ export default {
874
874
  "See what you're listening to": "聴いている曲を確認",
875
875
  "Control the Music app": "ミュージックAppを操作",
876
876
  "Choose a music service": "音楽サービスを選ぶ",
877
+ "Read or change Moondog's settings": "Moondog の設定を確認・変更",
877
878
  "Search outside your library": "ライブラリの外を探す",
878
879
  "Find music nearby": "近い音楽を探す",
879
880
  "Remember what you've told me": "教えてもらったことを覚える",
@@ -1027,4 +1028,121 @@ export default {
1027
1028
  "Skipped. /service and /model are here when you want them.": "スキップしました。/service と /model はいつでも使えます。",
1028
1029
  "Saving your music service...": "音楽サービスを保存しています...",
1029
1030
  "Choose where Moondog plays music": "Moondog が音楽を流す場所を選ぶ",
1031
+ "Make music on this Mac with Stable Audio 3": "Stable Audio 3 でこの Mac で音楽を作る",
1032
+ "Stop making music here": "ここでの音楽作りをやめる",
1033
+ "Making music on this Mac": "この Mac での音楽作り",
1034
+ "Made by Moondog": "Moondog 制作",
1035
+ "Stable Audio 3 needs a Mac with Apple silicon, so Moondog can't make music here.": "Stable Audio 3 には Apple シリコン搭載の Mac が必要なので、ここでは Moondog は音楽を作れません。",
1036
+ "Moondog makes music on this Mac with Stable Audio 3, powered by Stability AI. Ask for a track. Stable Audio 3 runs offline, and the track stays on this Mac.": "Moondog はこの Mac の Stable Audio 3 で音楽を作ります。Powered by Stability AI。曲をリクエストしてください。Stable Audio 3 はオフラインで動き、曲はこの Mac に残ります。",
1037
+ "Making music on this Mac is off. Stable Audio 3 is ready at {folder}; turn it on with /generation on.": "この Mac での音楽作りはオフです。Stable Audio 3 は {folder} で準備できています。/generation on でオンにしてください。",
1038
+ "Making music on this Mac is off, and Stable Audio 3 isn't at {folder}. Install Stability AI's MLX build from github.com/Stability-AI/stable-audio-3, then use /generation on with its folder.": "この Mac での音楽作りはオフで、{folder} に Stable Audio 3 がありません。github.com/Stability-AI/stable-audio-3 から Stability AI の MLX 版をインストールしてから、そのフォルダを付けて /generation on を使ってください。",
1039
+ "Making music on this Mac is off, and Stable Audio 3 at {folder} isn't fully installed. Run ./install.sh --download medium there, then use /generation on.": "この Mac での音楽作りはオフで、{folder} の Stable Audio 3 はインストールが終わっていません。そこで ./install.sh --download medium を実行してから、/generation on を使ってください。",
1040
+ "Stable Audio 3 at {folder} doesn't have the Medium model yet. Run ./install.sh --download medium there, then use /generation again.": "{folder} の Stable Audio 3 にはまだ Medium モデルがありません。そこで ./install.sh --download medium を実行してから、もう一度 /generation を使ってください。",
1041
+ "Stable Audio 3 at {folder} isn't installed yet. Run ./install.sh --download medium there, then use /generation again.": "{folder} の Stable Audio 3 はまだインストールされていません。そこで ./install.sh --download medium を実行してから、もう一度 /generation を使ってください。",
1042
+ "Stable Audio 3 isn't at {folder}. Use /generation on with the folder that holds its sa3 script.": "{folder} に Stable Audio 3 がありません。sa3 スクリプトのあるフォルダを付けて /generation on を使ってください。",
1043
+ "Use /generation, /generation on [folder], or /generation off.": "/generation、/generation on [フォルダ]、または /generation off を使ってください。",
1044
+ "Music making on.": "音楽作りをオンにしました。",
1045
+ "Music making off.": "音楽作りをオフにしました。",
1046
+ "Music making isn't ready.": "音楽作りはまだ準備できていません。",
1047
+ "warming up": "ウォームアップ中",
1048
+ "reading your taste": "好みを読んでいます",
1049
+ "composing": "作曲中",
1050
+ "pressing the record": "レコードをプレス中",
1051
+ "saving it": "保存中",
1052
+ "Let Moondog make music on this Mac": "この Mac で Moondog に音楽を作らせる",
1053
+ "Make a track": "曲を作る",
1054
+ "Play a track Moondog made": "Moondog が作った曲をもう一度かける",
1055
+ "Start a stream": "音楽の流れを始める",
1056
+ "Stop the stream": "音楽の流れを止める",
1057
+ "Go on air: Moondog keeps making music from your taste": "オンエア:あなたの好みから Moondog が音楽を作り続ける",
1058
+ "on air until {time}": "{time} までオンエア",
1059
+ "Cutting the next record": "次のレコードをカッティング中",
1060
+ "Off air: the next record couldn't be made.": "オフエア:次のレコードを作れませんでした。",
1061
+ "The next record is still being cut.": "次のレコードはまだカッティング中です。",
1062
+ "Off air.": "オフエアにしました。",
1063
+ "Turn on music making first: /generation on.": "先に音楽作りをオンにしてください:/generation on。",
1064
+ "Download a Stable Audio 3 model from Stability AI": "Stability AI から Stable Audio 3 のモデルをダウンロードする",
1065
+ "Make music with a downloaded model": "ダウンロードしたモデルで音楽を作る",
1066
+ "Delete a downloaded model from this Mac": "ダウンロードしたモデルをこの Mac から削除する",
1067
+ "Stop the download": "ダウンロードを止める",
1068
+ "Medium: best sound, about 5.2 GB": "Medium:いちばん良い音、約 5.2 GB",
1069
+ "Small Music: faster, lighter, about 1.7 GB": "Small Music:速くて軽い、約 1.7 GB",
1070
+ "getting ready": "準備中",
1071
+ "There isn't enough free space on this Mac for the download. Free some up, then use /generation download again.": "この Mac にはダウンロードに足りる空き容量がありません。空きを作ってから、もう一度 /generation download を使ってください。",
1072
+ "A downloaded file didn't match the one Stability AI publishes, so Moondog deleted it. Use /generation download to try again.": "ダウンロードしたファイルが Stability AI の公開しているものと一致しなかったため、Moondog が削除しました。/generation download でやり直してください。",
1073
+ "The download couldn't reach its source. Check your connection, then use /generation download to try again.": "ダウンロード元に接続できませんでした。接続を確かめてから、/generation download でやり直してください。",
1074
+ "Another Moondog window or terminal is already downloading. /generation shows how far it is.": "別の Moondog のウィンドウかターミナルがすでにダウンロードしています。/generation で進み具合がわかります。",
1075
+ "The download didn't finish: {error}. Use /generation download to try again.": "ダウンロードが終わりませんでした:{error}。/generation download でやり直してください。",
1076
+ "unknown error": "不明なエラー",
1077
+ "Stable Audio 3 {model} is ready. Ask for a track.": "Stable Audio 3 {model} の準備ができました。曲をリクエストしてください。",
1078
+ "Stable Audio 3 {model} is downloaded. Use it with /generation use {choice}.": "Stable Audio 3 {model} をダウンロードしました。/generation use {choice} で使えます。",
1079
+ "Download stopped. /generation download {choice} picks it up where it left off.": "ダウンロードを止めました。/generation download {choice} で続きから再開します。",
1080
+ "download stopped on an error": "エラーでダウンロードが止まりました",
1081
+ "downloading": "ダウンロード中",
1082
+ "downloading, {percent}%": "ダウンロード中、{percent}%",
1083
+ "installed, in use": "インストール済み、使用中",
1084
+ "installed": "インストール済み",
1085
+ "partly downloaded": "一部ダウンロード済み",
1086
+ "not downloaded": "未ダウンロード",
1087
+ "{size} GB": "{size} GB",
1088
+ "In use: your own install at {folder}.": "使用中:{folder} にある自分のインストール。",
1089
+ "Get a model with /generation download medium or small. /generation use, remove and cancel manage them.": "/generation download medium か small でモデルを入手します。/generation use、remove、cancel で管理します。",
1090
+ "Making music on this Mac is off. Get Stable Audio 3 with /generation download medium, or small for a lighter model; music making turns on when it's done.": "この Mac での音楽作りはオフです。/generation download medium で Stable Audio 3 を入手してください。軽いモデルなら small です。終わると音楽作りがオンになります。",
1091
+ "Stable Audio 3 {model} isn't downloaded yet. Get it with /generation download {choice}.": "Stable Audio 3 {model} はまだダウンロードされていません。/generation download {choice} で入手してください。",
1092
+ "Making music on this Mac is off. Stable Audio 3 {model} is ready; turn it on with /generation on.": "この Mac での音楽作りはオフです。Stable Audio 3 {model} は準備できています。/generation on でオンにしてください。",
1093
+ "Use /generation download, use or remove with medium or small, or /generation cancel.": "/generation download、use、remove に medium か small を付けるか、/generation cancel を使ってください。",
1094
+ "No download is running.": "実行中のダウンロードはありません。",
1095
+ "Stable Audio 3 {model} is already downloading.": "Stable Audio 3 {model} はすでにダウンロード中です。",
1096
+ "Another download is running. /generation cancel stops it.": "別のダウンロードが実行中です。/generation cancel で止まります。",
1097
+ "Stable Audio 3 {model} is already on this Mac. Use it with /generation use {choice}.": "Stable Audio 3 {model} はすでにこの Mac にあります。/generation use {choice} で使えます。",
1098
+ "Already downloaded.": "ダウンロード済みです。",
1099
+ "Stable Audio 3 comes under the Stability AI Community License ({license}), and its text encoder, T5Gemma, under the Gemma Terms of Use ({gemma}). Moondog downloads it only from Stability AI's official sources and checks every file.\n\nTo agree and download {model} ({size} GB): /generation download {choice} --agree": "Stable Audio 3 は Stability AI Community License({license})に、そのテキストエンコーダー T5Gemma は Gemma Terms of Use({gemma})に従います。Moondog は Stability AI の公式の配布元からのみダウンロードし、すべてのファイルを確かめます。\n\n同意して {model}({size} GB)をダウンロードするには:/generation download {choice} --agree",
1100
+ "Waiting for your agreement.": "同意を待っています。",
1101
+ "The download didn't finish.": "ダウンロードが終わりませんでした。",
1102
+ "Downloading Stable Audio 3 {model} ({size} GB) from Stability AI's official sources. It runs in the background; /generation cancel stops it, and a later download picks up where it left off.": "Stability AI の公式の配布元から Stable Audio 3 {model}({size} GB)をダウンロードしています。バックグラウンドで進みます。/generation cancel で止まり、後のダウンロードは続きから再開します。",
1103
+ "Downloading Stable Audio 3 {model}.": "Stable Audio 3 {model} をダウンロードしています。",
1104
+ "Wait for the download to finish, or stop it with /generation cancel, before removing a model.": "モデルを削除する前に、ダウンロードが終わるのを待つか、/generation cancel で止めてください。",
1105
+ "A download is running.": "ダウンロードが実行中です。",
1106
+ "Stable Audio 3 {model} isn't on this Mac.": "Stable Audio 3 {model} はこの Mac にありません。",
1107
+ "Removing Stable Audio 3 {model} deletes its {size} GB from this Mac. It's the last model, so the rest of Moondog's Stable Audio 3 setup goes too. To go ahead: /generation remove {choice} --yes": "Stable Audio 3 {model} を削除すると、この Mac からその {size} GB が消えます。最後のモデルなので、Moondog の Stable Audio 3 のほかの部分も消えます。進めるには:/generation remove {choice} --yes",
1108
+ "Removing Stable Audio 3 {model} deletes its {size} GB from this Mac. To go ahead: /generation remove {choice} --yes": "Stable Audio 3 {model} を削除すると、この Mac からその {size} GB が消えます。進めるには:/generation remove {choice} --yes",
1109
+ "Nothing removed yet.": "まだ何も削除していません。",
1110
+ "Removed Stable Audio 3 {model} from this Mac.": "Stable Audio 3 {model} をこの Mac から削除しました。",
1111
+ "Removed.": "削除しました。",
1112
+ "Removed. Music making isn't ready.": "削除しました。音楽作りの準備ができていません。",
1113
+ "Use /generation, /generation on [folder] or off, or /generation download, use or remove with medium or small.": "/generation、/generation on [フォルダ] か off、または /generation download、use、remove に medium か small を付けて使ってください。",
1114
+ "best sound": "いちばん良い音",
1115
+ "faster, lighter": "速くて軽い",
1116
+ "getting uv": "uv を取得中",
1117
+ "getting Stable Audio 3's code": "Stable Audio 3 のコードを取得中",
1118
+ "setting up Python": "Python を準備中",
1119
+ "downloading the model": "モデルをダウンロード中",
1120
+ "checking the files": "ファイルを確認中",
1121
+ "Stable Audio 3's Python environment couldn't be set up. Check your connection, then use /generation download to try again.": "Stable Audio 3 の Python 環境を準備できませんでした。接続を確かめてから、/generation download でやり直してください。",
1122
+ "The library isn't available here.": "ここではライブラリを使えません。",
1123
+ "Saved": "保存済み",
1124
+ "Play one with `/library play <name>`, or keep the song playing now with `/library save`.": "`/library play <名前>` で再生するか、`/library save` で再生中の曲を保存してください。",
1125
+ "No playlist is called “{name}”.": "「{name}」というプレイリストはありません。",
1126
+ "{name} has nothing in it yet.": "{name} にはまだ何もありません。",
1127
+ "None of its songs could be found.": "曲がひとつも見つかりませんでした。",
1128
+ "Playing {name}.": "{name} を再生しています。",
1129
+ "Moondog's tracks were left out. They play with Apple Music chosen.": "Moondog の曲は再生されませんでした。Apple Music を選ぶと再生されます。",
1130
+ "Some songs couldn't be found.": "見つからない曲がありました。",
1131
+ "Already in {name}.": "すでに「{name}」にあります。",
1132
+ "Saved.": "保存しました。",
1133
+ "Saved to {name}.": "「{name}」に保存しました。",
1134
+ "Your saved songs and playlists": "保存した曲とプレイリスト",
1135
+ "Look in the library": "ライブラリを見る",
1136
+ "Save to the library": "ライブラリに保存",
1137
+ "Play from the library": "ライブラリから再生",
1138
+ "Paste a playlist link after /library import.": "/library import のあとにプレイリストのリンクを貼り付けてください。",
1139
+ "Reading the playlist…": "プレイリストを読み込んでいます…",
1140
+ "{added} of {total} songs came in.": "{total} 曲中 {added} 曲を読み込みました。",
1141
+ "{count} songs came in.": { one: "{count} 曲を読み込みました。", other: "{count} 曲を読み込みました。" },
1142
+ "It now shapes your taste.": "好みのプロフィールに反映されます。",
1143
+ "It couldn't shape your taste this time.": "今回は好みに反映できませんでした。",
1144
+ "It doesn't shape your taste; add taste after the link if it should.": "好みには反映されません。反映するにはリンクのあとに taste を付けてください。",
1145
+ "Imported {name}.": "「{name}」を読み込みました。",
1146
+ "Use /library, /library play <name>, /library save [playlist], or /library import <link>.": "/library、/library play <名前>、/library save [プレイリスト]、または /library import <リンク> を使ってください。",
1147
+ "Import a playlist": "プレイリストを読み込む",
1030
1148
  };