1import{e as o,j as t,p as d,w as u,B as m,s as c,R as i,at as p}from"./index-AXjBfABT.js";import{I as a,S as _,P as x}from"./public-tool-visual-system-jb2MVz3N.js";import{A as h}from"./audio-tool-action-BmGsv5ua.js";import"./index-Q8UyzYqh.js";import"./ai-music-CTKDLatm.js";import"./ai-task-8zG6V3bc.js";import"./user-files-BwjsHVjv.js";import"./audio-source-DAC8sZpg.js";import"./generator_credits_upgrade_title-D59V-unS.js";import"./use-music-generation-allowance-CS01A0pH.js";import"./useQuery-zJNcmMfu.js";import"./useBaseQuery-rwx0sKqC.js";import"./music-library-source-selector-D5BFS0pc.js";import"./useInfiniteQuery-BTSbJ4RD.js";import"./input-B_9VQ104.js";import"./IconSearch-CKQ0fhJT.js";import"./paid-tool-pricing-dialog-DGJc4MYT.js";import"./label-D55Ak1kj.js";import"./tabs-C09UlLmh.js";import"./textarea-CdLY1n2d.js";import"./use-product-access-DyA4_NsK.js";import"./presentation-D2biw_fR.js";import"./IconUpload-CE7dwnq_.js";import"./generator_free_daily_remaining-BXOj5nZO.js";const g=()=>"Use the AI cover song generator when you already have a strong composition and want to explore how another vocal character, emotional tone, or arrangement could change its impact. It produces a separate interpretation from a short creative brief, making rapid direction-finding practical before you invest in detailed production work. This approach is especially useful during ideation: create contrasting versions, compare how each one supports the lyric, and share clear references with collaborators. Because every result remains separate from the source, experimentation does not erase the performance that started the project.",v=((r={},e={})=>(e.locale??o(),g())),f=()=>"AI generation for fast creative exploration",b=((r={},e={})=>(e.locale??o(),f())),y=()=>"Both workflows can create a fresh interpretation of an existing song, but they solve different stages of the creative process. An AI cover song generator is designed for quick experimentation, while a manually recorded cover gives performers and producers direct control over every take, instrument, microphone, and mix decision.",w=((r={},e={})=>(e.locale??o(),y())),j=()=>"Record a cover manually when exact phrasing, live performance nuance, player interaction, sound design, and engineering choices are the central goal. Manual production takes more setup and revision, but it gives you deliberate control over each musical detail. A singer can refine individual lines, instrumentalists can react to one another, and an engineer can shape microphone placement, processing, and automation throughout the track. Use an AI result as an exploratory reference, not as a substitute for rights clearance or intentional final production.",N=((r={},e={})=>(e.locale??o(),j())),k=()=>"Manual recording for detailed performance control",S=((r={},e={})=>(e.locale??o(),k())),A=()=>"AI Cover Song Generator vs Manual Cover Production",I=((r={},e={})=>(e.locale??o(),A())),C=()=>"Name the instruments, space, or density you want the new rendition to lean into.",M=((r={},e={})=>(e.locale??o(),C())),R=()=>"Arrangement",T=((r={},e={})=>(e.locale??o(),R())),q=()=>"A useful AI cover song generator prompt describes the performance you want next instead of asking for a vague change. Keep it concrete: name the vocal character, emotional energy, instruments, space, and density that should define the new rendition. A focused brief gives the generator a clearer creative target while preserving the source as your musical reference.",E=((r={},e={})=>(e.locale??o(),q())),z=()=>"Describe whether the new rendition should feel intimate, lifted, restrained, or more forceful.",G=((r={},e={})=>(e.locale??o(),z())),V=()=>"Energy",B=((r={},e={})=>(e.locale??o(),V())),F=()=>"Give the new rendition a real direction.",O=((r={},e={})=>(e.locale??o(),F())),P=()=>"Describe the vocal character or delivery you want to hear in the new interpretation.",W=((r={},e={})=>(e.locale??o(),P())),Y=()=>"Voice",D=((r={},e={})=>(e.locale??o(),Y())),K=()=>"Questions before you transform.",U=((r={},e={})=>(e.locale??o(),K())),L=()=>
1"Cover & Remix is for changing the interpretation of a song you have the rights to use. It is not a replacement for a fresh song prompt or a multi-track split.",H=((r={},e={})=>(e.locale??o(),L())),Q=()=>"You have a source song and want to explore a different voice, emotional temperature, or arrangement.",$=((r={},e={})=>(e.locale??o(),Q())),J=()=>"You can describe the new performance in a short, specific creative brief.",X=((r={},e={})=>(e.locale??o(),J())),Z=()=>"You want a new song result in My Songs, rather than isolated instrumental parts.",ee=((r={},e={})=>(e.locale??o(),Z())),te=r=>`Good fit ${r?.index}`,re=((r,e={})=>(e.locale??o(),te(r))),oe=()=>"Choose this when the song is right, but the interpretation is not.",ne=((r={},e={})=>(e.locale??o(),oe())),se=()=>"Open My Songs",ie=((r={},e={})=>(e.locale??o(),se())),ae=()=>"The new rendition appears beside your source after processing, ready to play and continue working with.",ce=((r={},e={})=>(e.locale??o(),ae())),le=()=>"Next workspace",de=((r={},e={})=>(e.locale??o(),le())),ue=()=>"Your new rendition lands in My Songs.",me=((r={},e={})=>(e.locale??o(),ue())),pe=()=>"Use our AI cover song generator to keep the song you wrote while reimagining how it is performed, arranged, and felt. Start with an existing track, describe the voice, energy, and instrumentation you want, and create a separate rendition that stays connected to your original in My Songs.",_e=((r={},e={})=>(e.locale??o(),pe())),xe=()=>"Only use music you own or have permission to transform.",he=((r={},e={})=>(e.locale??o(),xe())),ge=()=>"AI Cover Song Generator â Reimagine Any Song with a New Voice",ve=((r={},e={})=>(e.locale??o(),ge())),fe=()=>"Choose one of your songs from My Songs, or upload an MP3, WAV, M4A, AAC, OGG, or FLAC file you own or have permission to use. A clear source gives the AI cover song generator the melody and structure it needs to reinterpret.",be=((r={},e={})=>(e.locale??o(),fe())),ye=()=>"Describe the new performance in concrete terms. Specify the vocal character, emotional energy, arrangement density, instruments, and atmosphere you want instead of relying on a broad request such as âmake it different.â",we=((r={},e={})=>(e.locale??o(),ye())),je=()=>"Submit the cover, then open My Songs to follow processing. The completed rendition appears as a separate song beside the source, making it easy to compare both versions without replacing your original track.",Ne=((r={},e={})=>(e.locale??o(),je())),ke=()=>"The source stays the musical reference while your direction defines what changes. In three steps, the AI cover song generator turns an owned track and a focused creative brief into a new rendition you can review beside the original.",Se=((r={},e={})=>(e.locale??o(),ke())),Ae=()=>"How Our AI Cover Song Generator Works",Ie=((r={},e={})=>
1(e.locale??o(),Ae())),Ce=()=>"Choose the next tool by the next action, not by a generic tool list.",Me=((r={},e={})=>(e.locale??o(),Ce())),Re=()=>"Continue one of your songs from a moment you can hear.",Te=((r={},e={})=>(e.locale??o(),Re())),qe=()=>"AI Song Extender",Ee=((r={},e={})=>(e.locale??o(),qe())),ze=()=>"Break one of your sources into six arrangement parts.",Ge=((r={},e={})=>(e.locale??o(),ze())),Ve=()=>"Stem Splitter",Be=((r={},e={})=>(e.locale??o(),Ve())),Fe=()=>"Continue from the version you need.",Oe=((r={},e={})=>(e.locale??o(),Fe())),Pe=()=>"Work with a vocal and instrumental pair instead of a full transformation.",We=((r={},e={})=>(e.locale??o(),Pe())),Ye=()=>"Vocal Remover",De=((r={},e={})=>(e.locale??o(),Ye())),Ke=()=>"Your direction guides the vocal character, energy, and arrangement of the new rendition.",Ue=((r={},e={})=>(e.locale??o(),Ke())),Le=()=>"A cover starts from an existing song, then applies your creative direction to make a new interpretation. The melody and overall structure remain the reference while the requested voice, energy, instrumentation, and production feel shape a distinct performance.",He=((r={},e={})=>(e.locale??o(),Le())),Qe=()=>"The source song provides the musical foundation for the new rendition.",$e=((r={},e={})=>(e.locale??o(),Qe())),Je=()=>"Keep",Xe=((r={},e={})=>(e.locale??o(),Je())),Ze=()=>"New cover rendition",et=((r={},e={})=>(e.locale??o(),Ze())),tt=()=>"A new song is created and appears in My Songs when the job completes. Visibility follows your plan.",rt=((r={},e={})=>(e.locale??o(),tt())),ot=()=>"Receive",nt=((r={},e={})=>(e.locale??o(),ot())),st=()=>"Your source song",it=((r={},e={})=>(e.locale??o(),st())),at=()=>"Keep the foundation. Change the interpretation.",ct=((r={},e={})=>(e.locale??o(),at())),lt=()=>"Use a specific direction when the song is working but you want the next rendition to carry a different vocal feel. Songwriters can compare a softer, brighter, deeper, or more forceful delivery before deciding which performance best supports the lyrics and melody.",dt=((r={},e={})=>(e.locale??o(),lt())),ut=()=>"Try another vocal character",mt=((r={},e={})=>(e.locale??o(),ut())),pt=()=>"Move an existing idea toward something more restrained, lifted, intimate, or forceful without replacing the source. This is useful for testing whether the same composition works better as a close late-night performance, a high-energy anthem, or a spacious cinematic version.",_t=((r={},e={})=>(e.locale??o(),pt())),xt=()=>"Reframe the energy",ht=((r={},e={})=>(e.locale??o(),xt())),gt=()=>"Name the space, density, or instrumentation you want the next performance to lean into. Producers can use the AI cover song generator to explore piano-led, guitar-driven, stripped-back, or fuller arrangements before committing time to a detailed manual production.",vt=((r={},e={})=>(e.locale??o(),gt())),ft=()=>"Explore the arrangement",bt=((r={},e={})=>(e.locale??o(),ft())),yt=()=>"Create a separate rendition when you want another direction to live beside the original in My Songs. Keep alternate versions for creative review, artist pitches, arrangement references, or collaboration discussions while preserving the source that inspired each experiment.",wt=((r={},e={})=>(e.locale??o(),yt())),jt=()=>"Keep a song in motion",Nt=((r={},e={})=>(e.locale??o(),jt())),kt=()=>"Cover & Remix changes a song's performance direction. It is not for splitting a mix into parts or starting from an empty prompt.",St=((r={},e={})=>(e.locale??o(),kt())),At=()=>"When a new interpretation is the real task.",It=((r={},e={})=>(e.locale??o(),At()));function Ct({items:r,title:e}){return t.jsx("section",{id:"faq","data-section":"faq",className:"border-t border-border px-4 py-20 md:py-28",children:t.jsxs("div",{className:"mx-auto grid max-w-6xl gap-10 lg:grid-cols-[0.72fr_1.28fr]",children:[t.jsx("h2",{className:"max-w-md text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:e}),t.jsx("div",{className:"divide-y divide-border border-y border-border",children:r.map(n=>t.jsxs("details",{className:"group py-1",children:[t.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-6 py-5 text-lg font-semibold marker:content-none",children:[n.question,t.jsx("span",{className:"text-2xl font-normal text-primary transition-transform duration-200 group-open:rotate-45","aria-hidden":"true",children:"+"})]}),t.jsx("p",{className:"max-w-2xl pb-5 pr-10 text-sm leading-7 text-muted-foreground",children:n.answer})]},n.question))})]})})}const Mt=[[()=>D(),()=>W()],[()=>B(),()=>G()],[()=>T(),()=>M()]],Rt=[()=>$(),()=>X(),()=>ee()];function Tt(){return t.jsxs("section",{id:"features","data-section":"features",className:"border-y border-border bg-surface-raised/35 px-4 py-28 md:py-40",children:[t.jsxs("div",{className:"mx-auto grid max-w-6xl gap-12 pb-28 lg:grid-cols-[0.78fr_1.22fr] lg:items-center md:pb-40",children:[t.jsxs("div",{className:"max-w-xl",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:ct()}
1),t.jsx("p",{className:"mt-5 text-lg leading-8 text-foreground/72",children:He()})]}),t.jsxs("div",{"data-tool-media":!0,className:"overflow-hidden rounded-3xl border border-border bg-background shadow-[0_24px_80px_-48px_color-mix(in_oklab,var(--studio-ink)_72%,transparent)]",children:[t.jsxs("div",{className:"grid sm:grid-cols-[1fr_auto_1fr]",children:[t.jsxs("div",{className:"p-6 sm:p-8",children:[t.jsx(d,{className:"size-6 text-primary","aria-hidden":"true"}),t.jsx("p",{className:"mt-12 text-sm font-semibold text-muted-foreground",children:Xe()}),t.jsx("h3",{className:"mt-2 text-2xl font-semibold tracking-tight",children:it()}),t.jsx("p",{className:"mt-3 text-sm leading-6 text-muted-foreground",children:$e()})]}),t.jsx("div",{className:"flex items-center justify-center px-6 py-3 sm:px-0",children:t.jsx("span",{className:"flex size-11 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg shadow-primary/25",children:t.jsx(a,{className:"size-5","aria-hidden":"true"})})}),t.jsxs("div",{className:"bg-studio-ink p-6 text-studio-ink-foreground sm:p-8",children:[t.jsx(u,{className:"size-6 text-primary","aria-hidden":"true"}),t.jsx("p",{className:"mt-12 text-sm font-semibold text-studio-ink-foreground/60",children:nt()}),t.jsx("h3",{className:"mt-2 text-2xl font-semibold tracking-tight",children:et()}),t.jsx("p",{className:"mt-3 text-sm leading-6 text-studio-ink-foreground/68",children:rt()})]})]}),t.jsx("div",{className:"border-t border-border bg-primary/8 px-6 py-4 text-sm leading-6 text-foreground sm:px-8",children:Ue()})]})]}),t.jsx("div",{"data-part":"feature-comparison",className:"border-y border-border bg-background px-4 py-28 md:py-40",children:t.jsxs("div",{className:"mx-auto grid max-w-6xl gap-12 lg:grid-cols-[0.78fr_1.22fr] lg:items-start",children:[t.jsxs("div",{className:"max-w-xl",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:I()}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-muted-foreground",children:w()})]}),t.jsxs("div",{className:"divide-y divide-border border-y border-border",children:[t.jsxs("article",{className:"py-7",children:[t.jsx("h3",{className:"text-2xl font-semibold tracking-tight",children:b()}),t.jsx("p",{className:"mt-4 text-base leading-7 text-muted-foreground",children:v()})]}),t.jsxs("article",{className:"py-7",children:[t.jsx("h3",{className:"text-2xl font-semibold tracking-tight",children:S()}),t.jsx("p",{className:"mt-4 text-base leading-7 text-muted-foreground",children:N()})]})]})]})}),t.jsx("div",{"data-part":"feature-details",className:"px-4 py-28 md:py-40",children:t.jsxs("div",{className:"mx-auto max-w-6xl",children:[t.jsxs("div",{className:"max-w-2xl",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:O()}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-muted-foreground",children:E()})]}),t.jsx("div",{className:"mt-12 overflow-hidden rounded-xl border border-border",children:Mt.map(([r,e],n)=>t.jsxs("article",{className:"grid min-h-24 gap-3 border-b border-border p-5 transition-colors duration-300 last:border-b-0 hover:bg-accent/55 hover:text-foreground sm:grid-cols-[4rem_12rem_1fr] sm:items-center",children:[t.jsxs("span",{className:"font-mono text-xs text-primary",children:["0",n+1]}),t.jsx("h3",{className:"text-lg font-semibold tracking-tight",children:r()}),t.jsx("p",{className:"mt-3 max-w-xs text-sm leading-6 text-muted-foreground transition-colors duration-500",children:e()})]},n))})]})}),t.jsx("div",{"data-part":"tool-boundary",className:"border-y border-border bg-studio-ink px-4 py-28 text-studio-ink-foreground md:py-40",children:t.jsxs("div",{className:"mx-auto grid max-w-6xl gap-12 lg:grid-cols-[0.7fr_1.3fr] lg:items-start",children:[t.jsxs("div",{className:"max-w-md",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:ne()}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-studio-ink-foreground/68",children:H()})]}
1),t.jsx("div",{className:"divide-y divide-studio-ink-foreground/15 border-y border-studio-ink-foreground/15",children:Rt.map((r,e)=>t.jsxs("div",{className:"grid gap-3 py-6 sm:grid-cols-[8rem_1fr] sm:gap-8",children:[t.jsx("span",{className:"text-sm font-semibold text-primary",children:re({index:e+1})}),t.jsx("p",{className:"text-base leading-7 text-studio-ink-foreground/76",children:r()})]},e))})]})}),t.jsx("div",{"data-part":"my-songs-handoff",className:"px-4 py-28 md:py-40",children:t.jsxs("div",{className:"mx-auto flex max-w-6xl flex-col justify-between gap-8 rounded-3xl border border-border bg-card p-8 text-card-foreground shadow-[0_24px_70px_-48px_color-mix(in_oklab,var(--studio-ink)_70%,transparent)] sm:p-10 md:flex-row md:items-end",children:[t.jsxs("div",{className:"max-w-2xl",children:[t.jsx("p",{className:"text-sm font-semibold text-primary",children:de()}),t.jsx("h2",{className:"mt-4 text-balance text-3xl font-bold tracking-[-0.03em] md:text-4xl",children:me()}),t.jsx("p",{className:"mt-4 text-base leading-7 text-muted-foreground",children:ce()})]}),t.jsxs(m,{size:"lg",className:"shrink-0 font-semibold",nativeButton:!1,render:t.jsx(c,{to:i.MySongs}),children:[ie(),t.jsx(a,{className:"size-4","aria-hidden":"true"})]})]})})]})}function qt(){return t.jsxs("section",{id:"hero","data-section":"hero",className:"relative isolate px-4 pb-28 pt-16 md:pb-40 md:pt-24",children:[t.jsx("div",{className:"pointer-events-none absolute inset-x-0 top-0 -z-10 h-[48rem] bg-[radial-gradient(ellipse_at_28%_-8%,color-mix(in_oklab,var(--primary)_28%,transparent),transparent_63%)]"}),t.jsxs("div",{className:"mx-auto max-w-6xl",children:[t.jsxs("header",{"data-part":"hero-intro",className:"w-full max-w-5xl",children:[t.jsx("h1",{className:"w-full max-w-5xl text-balance text-[clamp(3rem,5vw,4.8rem)] font-bold leading-[0.94] tracking-[-0.055em]",children:ve()}),t.jsx(_,{text:_e(),className:"mt-6 max-w-2xl text-pretty text-lg leading-8 text-muted-foreground md:text-xl"}),t.jsx("p",{className:"mt-9 max-w-2xl border-l border-primary pl-4 text-sm leading-6 text-muted-foreground",children:he()})]}),t.jsx("div",{"data-part":"hero-action","data-tool-action-frame":!0,className:"mx-auto mt-12 w-full max-w-5xl md:mt-16",children:t.jsx(h,{kind:"cover"})})]})]})}function Et({description:r,steps:e,title:n}){return t.jsx("section",{id:"how-it-works","data-section":"how-it-works",className:"border-y border-border bg-surface-raised/35 px-4 py-28 md:py-40",children:t.jsxs("div",{className:"mx-auto grid max-w-6xl gap-12 lg:grid-cols-[0.72fr_1.28fr]",children:[t.jsxs("div",{"data-tool-pin":!0,className:"max-w-xl self-start",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:n}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-muted-foreground",children:r})]}),t.jsx("ol",{className:"divide-y divide-border border-y border-border",children:e.map((s,l)=>t.jsxs("li",{className:"grid gap-4 py-6 sm:grid-cols-[4rem_1fr] sm:gap-8",children:[t.jsxs("span",{className:"font-mono text-sm text-primary",children:["0",l+1]}),t.jsx("p",{className:"text-base leading-7 text-foreground/78",children:s})]},s))})]})})}function zt({description:r,items:e,title:n}){return t.jsx("section",{id:"related-tools","data-section":"related-tools",className:"border-t border-border px-4 py-28 md:py-40",children:t.jsxs("div",{className:"mx-auto max-w-6xl",children:[t.jsxs("div",{className:"max-w-2xl",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:n}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-muted-foreground",children:r})]}),t.jsx("div",{className:"mt-12 grid grid-flow-dense gap-4 md:flex",children:e.map(s=>t.jsxs(c,{to:s.to,className:"group flex min-h-52 flex-col justify-between overflow-hidden rounded-2xl border border-border bg-card p-6 transition-[flex-grow,background-color,border-color,transform] duration-700 ease-out hover:-translate-y-1 hover:border-primary/55 hover:bg-primary/8 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-primary md:flex-1 md:hover:flex-[1.3]",children:[t.jsxs("div",{children:[t.jsx("h3",{className:"text-xl font-semibold tracking-tight",children:s.title}),t.jsx("p",{className:"mt-3 text-sm leading-6 text-muted-foreground",children:s.description})]}),t.jsx(a,{className:"mt-8 size-5 text-primary transition-transform duration-200 group-hover:translate-x-1","aria-hidden":"true"})]},s.to))})]})})}function Gt({description:r,items:e,title:n}){return t.jsx("section",{id:"use-cases","data-section":"use-cases",className:"bg-studio-ink px-4 py-28 text-studio-ink-foreground md:py-40",children:t.jsxs("div",{className:"mx-auto max-w-6xl",children:[t.jsxs("div",{className:"max-w-2xl",children:[t.jsx("h2",{className:"text-balance text-4xl font-bold tracking-[-0.035em] md:text-5xl",children:n}),t.jsx("p",{className:"mt-5 text-lg leading-8 text-studio-ink-foreground
1/68",children:r})]}),t.jsx("div",{"data-tool-stack":!0,className:"mt-14 grid grid-flow-dense overflow-hidden rounded-3xl border border-studio-ink-foreground/15 md:grid-cols-2",children:e.map(s=>t.jsxs("article",{className:"min-h-52 border-studio-ink-foreground/15 p-7 even:bg-studio-ink-foreground/[0.045] md:border-b last:border-b-0 md:[&:nth-last-child(2)]:border-b-0 md:odd:border-r",children:[t.jsx("h3",{className:"max-w-sm text-2xl font-semibold tracking-tight",children:s.title}),t.jsx("p",{className:"mt-4 max-w-md text-sm leading-7 text-studio-ink-foreground/68",children:s.description})]},s.title))})]})})}function Vt(){return t.jsxs(x,{kind:"cover",children:[t.jsx(qt,{}),t.jsx(Et,{title:Ie(),description:Se(),steps:[be(),we(),Ne()]}),t.jsx(Tt,{}),t.jsx(Gt,{title:It(),description:St(),items:[{title:mt(),description:dt()},{title:ht(),description:_t()},{title:bt(),description:vt()},{title:Nt(),description:wt()}]}),t.jsx(Ct,{title:U(),items:p()}),t.jsx(zt,{title:Oe(),description:Me(),items:[{to:i.AiSongExtender,title:Ee(),description:Te()},{to:i.VocalRemover,title:De(),description:We()},{to:i.StemSplitter,title:Be(),description:Ge()}]})]})}const cr=Vt;export{cr as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.