1import{u as C,j as e,D as U,A as W,E as B,a as M}from"./index-DGKNtf3q.js";import{L as w,b as F}from"./vendor-Djr1IunZ.js";import{P as $}from"./platforms-DUbC6pLN.js";const y="#00d4ff",u="#30d158",b="#ff9f0a",P="#ff5555",T="#a78bfa",p="#84cc16",x="#0a0c14",m="#1a1d28",s="'JetBrains Mono', monospace",g="'Space Grotesk', sans-serif",V=i=>{const a=Math.floor(i/60),t=Math.floor(i%60);return`${a}:${t.toString().padStart(2,"0")}`};function O(){return F.useEffect(()=>{document.title="Mastering for Game Audio â LUFS, Loops, Platforms & Asset QC | mastering.to";const i=(d,f,h=!1)=>{const j=h?`meta[property="${d}"]`:`meta[name="${d}"]`;let v=document.querySelector(j);v||(v=document.createElement("meta"),h?v.setAttribute("property",d):v.setAttribute("name",d),document.head.appendChild(v)),v.setAttribute("content",f)};i("description","Free audio analyzer for game audio mastering. Check LUFS, true peak, dynamic range, and loop points for music, SFX, ambience, VO, and UI sounds across Steam, PlayStation, Xbox, Switch, and mobile platforms. Nothing uploaded."),i("og:title","Mastering for Game Audio â LUFS, Loops, Platforms & Asset QC | mastering.to",!0),i("og:description","Game audio mastering covers music loops, SFX, ambience, VO, and UI sounds â each with different loudness targets. Verify your assets against Steam, PS5, Xbox, Switch, and mobile specs free in your browser.",!0),i("og:type","website",!0),i("og:url","https://mastering.to/mastering-for-game-audio",!0),i("og:image","https://mastering.to/mockup-tool-suite.png",!0),i("og:image:width","1200",!0),i("og:image:height","630",!0),i("og:image:alt","mastering.to â game audio mastering analyzer",!0),i("twitter:card","summary_large_image"),i("twitter:title","Mastering for Game Audio â LUFS, Loops, Platforms & Asset QC | mastering.to"),i("twitter:description","LUFS, true peak, and platform compliance for game audio assets. Music loops, SFX, ambience, VO â free analysis, nothing uploaded."),i("twitter:image","https://mastering.to/mockup-tool-suite.png");let a=document.querySelector('link[rel="canonical"]');a||(a=document.createElement("link"),a.setAttribute("rel","canonical"),document.head.appendChild(a)),a.setAttribute("href","https://mastering.to/mastering-for-game-audio");const t={"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"What LUFS should game music be mastered to?",acceptedAnswer:{"@type":"Answer",text:"Game music loudness targets vary by platform and asset type. For general purpose game music on PC and console, â14 to â18 LUFS integrated is a commonly used range â quieter than music releases but louder than broadcast. PlayStation 5's audio system targets around â23 LUFS for in-game audio. Mobile games typically target â14 to â16 LUFS. The most important consideration is loudness consistency across your asset library â music, SFX, ambience, and VO should all be balanced relative to each other in the game's mix."}},{"@type":"Question",name:"How do you master audio loops for games?",acceptedAnswer:{"@type":"Answer",text:"Mastering seamless audio loops requires that the loop start and end points match in level, spectral content, and phase. Any level or tonal difference between the loop end and the loop start will create an audible click or pop when the loop repeats. Apply processing (EQ, compression, limiting) with care near loop boundaries â time-based effects like reverb and delay should be rendered with the tail included in the loop or truncated at the loop point. Measure loudness across the complete loop, not just a section."}},{"@type":"Question",name:"What loudness target should sound effects (SFX) use?",acceptedAnswer:{"@type":"Answer",text:"SFX loudness is typically managed in the game engine or audio middleware (Wwise, FMOD) at the asset level, using RMS normalization or peak normalization. A common approach is to normalize SFX peak to â3 to â6 dBFS and let the middleware's bus mixing handle relative loudness between layers. One-shot SFX should have true peak headroom of at least â1 dBTP to prevent clipping during mix-down. Avoid over-compressing SFX â the transient attack of impact sounds is critical to their perceived punch."}},{"@type":"Question",name:"Does PlayStation 5 have a loudness standard for game audio?",acceptedA
1nswer:{"@type":"Answer",text:"PlayStation 5's audio system is designed around a â23 LUFS integrated reference level for in-game audio, aligned with the EBU R128 broadcast standard. Sony's technical requirements for PS5 games recommend mastering audio to this target to ensure consistent loudness across titles in the PlayStation ecosystem. The PS5's 3D audio Tempest Engine also has specific requirements around spatial audio formats that affect how game audio is delivered and experienced."}},{"@type":"Question",name:"What audio formats do game platforms require?",acceptedAnswer:{"@type":"Answer",text:"PC/Steam accepts virtually any format â WAV, OGG, MP3, FLAC are all common in game engines. PlayStation 5 uses AT9 (ATRAC9) as its native format, with AT9 encoding handled during the build pipeline. Xbox Series uses XMA2/XWB or standard PCM in XAudio2. Nintendo Switch uses NX audio format, typically encoded from WAV source files. Mobile games primarily use OGG Vorbis for Android and AAC/CAF for iOS. In practice, game engines (Unity, Unreal) and audio middleware (Wwise, FMOD) transcode from WAV source files during build, so delivering high-quality 24-bit WAV source files is the correct approach for all platforms."}},{"@type":"Question",name:"What is adaptive music and how does it affect mastering?",acceptedAnswer:{"@type":"Answer",text:"Adaptive music in games transitions between different musical states â exploration, combat, tension, victory â in response to gameplay events. Mastering adaptive music requires that all states be loudness-matched to each other: if the combat layer is 4 dB louder than the exploration layer, every transition to combat will be jarring. Each stem or state should be mastered to a consistent integrated LUFS target so that the game audio programmer or audio middleware can handle transitions smoothly."}},{"@type":"Question",name:"Should game VO (voice-over) be mastered separately from music and SFX?",acceptedAnswer:{"@type":"Answer",text:"Yes. VO and dialogue should be treated as a separate asset class with its own loudness target, typically â18 to â23 LUFS integrated (similar to broadcast speech standards). The key requirements for game VO are intelligibility across playback devices (including TV speakers and headphones), consistent loudness across all lines and characters, and sufficient dynamic range that emotional delivery isn't over-compressed. VO is typically routed through a dedicated dialogue bus in the game's audio middleware, separate from music and SFX."}},{"@type":"Question",name:"Does mastering.to work for game audio files?",acceptedAnswer:{"@type":"Answer",text:"Yes. mastering.to analyzes any audio file â including short SFX, music loops, ambiences, and VO â returning integrated LUFS, true peak, dynamic range, LRA, and stereo width. For game audio QC, the most relevant metrics are true peak (to prevent clipping during middleware processing), dynamic range (crest factor, to check transient integrity in SFX), and integrated LUFS (to verify loudness consistency across your asset library). Drop any game audio file for instant analysis â nothing is uploaded."}}]},n={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"mastering.to",item:"https://mastering.to"},{"@type":"ListItem",position:2,name:"Mastering for Game Audio",item:"https://mastering.to/mastering-for-game-audio"}]},c={"@context":"https://schema.org","@type":"WebPage",name:"Mastering for Game Audio â LUFS, Loops, Platforms & Asset QC",description:"Complete guide to mastering game audio. Platform loudness standards for Steam, PS5, Xbox, Switch, and mobile. Asset-specific targets for music, SFX, ambience, VO, and UI sounds.",url:"https://mastering.to/mastering-for-game-audio",publisher:{"@type":"Organization",name:"mastering.to",url:"https://mastering.to"}},r={"@context":"https://schema.org","@type":"HowTo",name:"How to master audio for a game release",description:"Step-by-step guide to preparing, mastering, and verifying game audio assets for platform delivery.",step:[{"@type":"HowToStep",position:1,name:"Establish your loudness target by platform and asset type",text:"Determine your target integrated LUFS for each asset class â music loops, SFX, ambience, VO, UI sounds. These targets differ significantly. PC/Steam music typically targets â14 to â18 LUFS; PS5 in-game audio aligns to â23 LUFS; VO targets â18 to â23 LUFS. Define these before processing any assets."},{"@type":"HowToStep",position:2,name:"Master music loops for seamless playback",text:"Process music loop files with EQ and compression as needed. Ensure loop start and end points match in level and spectral content. Apply limiting with true peak mode at â1 dBTP. Render any reverb or delay tails within the loop or truncate cleanly at the loop point."},{"@type":"HowToStep",position:3,name:"Normalize SFX and one-shots appropriately",text:"Peak-normalize SFX to â3 to â6 dBFS. Preserve transient attack â do not over-compress impact sounds. Set true peak ceiling to â1 dBTP. Ensure consistent loudne
1ss across all SFX in each category (weapon hits, footsteps, UI sounds) so the game mix sounds balanced."},{"@type":"HowToStep",position:4,name:"Match loudness across adaptive music states",text:"If your game uses adaptive music (transitions between exploration, combat, tension states), measure the integrated LUFS of each state and adjust until they match. Loudness mismatches between states cause jarring level jumps at every transition."},{"@type":"HowToStep",position:5,name:"Analyze with mastering.to before delivery",text:"Drop each asset into mastering.to to verify integrated LUFS, true peak, and dynamic range before importing into the game engine or audio middleware. Flag any assets outside your target range for correction."},{"@type":"HowToStep",position:6,name:"Deliver 24-bit WAV source files",text:"Deliver all audio assets as 24-bit WAV at the project sample rate (typically 44.1 kHz or 48 kHz). The game engine or middleware will encode to the platform-specific format during the build process. Never deliver pre-encoded lossy files as source assets."}]},o="game-audio-schema";let l=document.getElementById(o);return l||(l=document.createElement("script"),l.id=o,l.type="application/ld+json",document.head.appendChild(l)),l.textContent=JSON.stringify([t,n,c,r]),()=>{document.title="mastering.to â Free Audio Analyzer | LUFS Checker";const d=document.querySelector('meta[name="description"]');d&&d.setAttribute("content","Free browser-based audio mastering quality control tool. Analyze loudness (LUFS), true peak, dynamics, stereo width, spectrum, and get platform-specific assessments for Spotify, Apple Music, YouTube, vinyl, and 35+ formats. Your audio never leaves your browser.");const f=document.getElementById(o);f&&f.remove();const h=document.querySelector('link[rel="canonical"]');h&&h.remove()}},[]),null}function X(){return e.jsxs("nav",{"aria-label":"breadcrumb",style:{display:"flex",alignItems:"center",gap:6,fontFamily:s,fontSize:10,color:"#333348",marginBottom:24,letterSpacing:"0.06em"},children:[e.jsx(w,{to:"/",style:{color:"#9aa0ad",textDecoration:"none"},onMouseEnter:i=>i.target.style.color=y,onMouseLeave:i=>i.target.style.color="#9aa0ad",children:"mastering.to"}),e.jsx("span",{style:{color:"#2a2d38"},children:"âº"}),e.jsx("span",{style:{color:"#888898"},children:"mastering for game audio"})]})}function L({eyebrow:i,heading:a,subhead:t,children:n,id:c}){return e.jsxs("section",{id:c,style:{marginBottom:48,paddingTop:16},children:[e.jsxs("div",{style:{marginBottom:22},children:[i&&e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.18em",color:`${y}55`,fontFamily:s,marginBottom:10},children:i}),e.jsx("h2",{style:{fontFamily:g,fontSize:26,fontWeight:700,color:"#e8e8f0",lineHeight:1.2,margin:"0 0 10px"},children:a}),t&&e.jsx("p",{style:{fontSize:14,color:"#9aa0ad",lineHeight:1.65,margin:0,maxWidth:640},children:t})]}),n]})}function A({eyebrow:i,heading:a,desc:t,children:n}){return e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:10,padding:"24px 20px",marginBottom:32},children:[e.jsxs("div",{style:{marginBottom:18},children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.15em",color:"#9aa0ad",fontFamily:s,marginBottom:8},children:i}),e.jsx("h3",{style:{fontFamily:g,fontSize:20,fontWeight:700,color:"#e8e8f0",margin:"0 0 8px",lineHeight:1.2},children:a}),t&&e.jsx("p",{style:{fontSize:13,color:"#8888a0",lineHeight:1.6,maxWidth:580,margin:0},children:t})]}),n]})}const k=[{id:"steam",name:"Steam / PC",icon:"ð¥",color:"#1b2838",colorLight:"#66c0f4",lufs:"â14 to â18 LUFS",lufsVal:-16,truePeak:"â1 dBTP",format:"WAV / OGG / MP3",middleware:"Wwise / FMOD / Unity / Unreal",normalizes:!1,desc:"PC and Steam have no enforced loudness standard â the game engine or audio middleware manages levels. The de facto target for in-game music is â14 to â18 LUFS, loud enough to feel present but with headroom for SFX and VO to sit above. OGG Vorbis is the most common distribution format for PC games; WAV source files are used in the build pipeline.",note:"Without platform normalization, loudne
1ss balancing across your asset library is entirely your responsibility. Consistent LUFS across music, SFX, and VO is what separates a professional-sounding game mix from an amateur one."},{id:"ps5",name:"PlayStation 5",icon:"ð®",color:"#003087",colorLight:"#00439c",lufs:"â23 LUFS",lufsVal:-23,truePeak:"â2 dBTP",format:"AT9 (ATRAC9)",middleware:"Sony AT9 encoder / Wwise / FMOD",normalizes:!0,desc:"PlayStation 5 aligns its in-game audio reference to â23 LUFS, consistent with the EBU R128 broadcast standard. Sony's platform audio guidelines recommend this target for all in-game audio to ensure consistent loudness across the PlayStation ecosystem. Audio assets are encoded to ATRAC9 (AT9) during the build pipeline from WAV source files.",note:"PS5's Tempest 3D audio engine introduces spatial audio requirements beyond loudness. For 3D audio delivery, consult Sony's developer documentation for Tempest-specific requirements alongside the loudness target."},{id:"xbox",name:"Xbox Series X/S",icon:"ð¢",color:"#107c10",colorLight:"#52b043",lufs:"â24 LUFS",lufsVal:-24,truePeak:"â2 dBTP",format:"XMA2 / XWB / PCM",middleware:"XAudio2 / Wwise / FMOD",normalizes:!0,desc:"Xbox Series targets â24 LUFS integrated, aligned with the ATSC A/85 broadcast standard. Microsoft's Xbox audio guidelines specify this target for all in-game audio. XAudio2 is the native audio API; audio assets are encoded to XMA2 or stored as PCM in XWB container files. The build pipeline handles encoding from WAV source files.",note:"Xbox's â24 LUFS target is 1 LU louder than PS5's â23 LUFS. When shipping cross-platform, a single master at â23 LUFS will be compliant with both â a conservative safe target for multiplatform releases."},{id:"switch",name:"Nintendo Switch",icon:"ð´",color:"#e4000f",colorLight:"#ff4136",lufs:"â16 to â20 LUFS",lufsVal:-18,truePeak:"â1 dBTP",format:"NX Audio / BFWAV / BFSTM",middleware:"NintendoSDK / Wwise / CRI ADX2",normalizes:!1,desc:"Nintendo Switch does not enforce a platform-wide loudness standard in the way PS5 and Xbox do. The practical target is â16 to â20 LUFS for in-game music, with careful attention to headphone playback (a primary use case for Switch). Nintendo's proprietary audio formats (BFWAV for one-shots, BFSTM for streams) are encoded during the build from WAV source files.",note:"Switch's portable mode means headphone listening is a critical test environment. Audio that sounds balanced on TV speakers may feel too loud or harsh through the Switch's headphone output. Test on both output modes."},{id:"ios",name:"iOS / Apple Arcade",icon:"ð±",color:"#555",colorLight:"#aaaaaa",lufs:"â16 LUFS",lufsVal:-16,truePeak:"â1 dBTP",format:"AAC / CAF / MP3",middleware:"AVAudioEngine / FMOD / Unity",normalizes:!1,desc:"iOS games target â16 LUFS integrated for music, consistent with Apple's general audio normalization target. Apple Arcade submissions must meet Apple's technical requirements, which include audio quality standards. The preferred format is AAC in CAF container, or MP3. Spatial audio using Apple's head tracking is available on supported devices.",note:"iPhone speakers have a strong proximity effect at high volumes â bass-heavy audio that sounds balanced at moderate levels can become muddy and distorted through the built-in speaker. Test at multiple volume levels on device before submission."},{id:"android",name:"Android / Google Play",icon:"ð¤",color:"#3ddc84",colorLight:"#3ddc84",lufs:"â14 to â16 LUFS",lufsVal:-15,truePeak:"â1 dBTP",format:"OGG Vorbis / MP3 / WAV",middleware:"OpenSL ES / Oboe / FMOD / Unity",normalizes:!1,desc:"Android has no enforced loudness standard â loudness management varies by device manufacturer and OS version. The practical range for in-game music is â14 to â16 LUFS, similar to iOS. OGG Vorbis is the most battery-efficient and widely supported lossy format on Android. The extreme fragmentation of Android hardware means thorough device testing across multiple form factors is essential.",note:"Android device fragmentation makes audio normalization unpredictable. A game that sounds balanced on a flagship device may be noticeably quieter or louder on budget hardware. Err toward consistent, moderate loudne
1ss rather than pushing for competitive levels."}];function D(){const[i,a]=F.useState("ps5"),t=k.find(r=>r.id===i),n=-26,c=-12;return e.jsxs("div",{children:[e.jsx("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:20,paddingTop:4},children:k.map(r=>e.jsxs("button",{onClick:()=>a(r.id),style:{background:i===r.id?`${r.colorLight}18`:"transparent",border:`1px solid ${i===r.id?r.colorLight:m}`,color:i===r.id?r.colorLight:"#9aa0ad",padding:"7px 14px",borderRadius:6,fontSize:10,fontFamily:s,cursor:"pointer",transition:"all 0.15s",display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{children:r.icon}),e.jsx("span",{style:{fontWeight:i===r.id?700:400},children:r.name})]},r.id))}),e.jsxs("div",{style:{marginBottom:20},children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.1em",color:"#333348",fontFamily:s,marginBottom:10},children:"Platform loudness targets â comparative view"}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:5},children:k.map(r=>{const o=i===r.id,l=Math.max(4,(r.lufsVal-n)/(c-n)*100);return e.jsxs("div",{onClick:()=>a(r.id),style:{display:"flex",alignItems:"center",gap:10,cursor:"pointer",padding:"3px 0"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:9,color:o?r.colorLight:"#6a6f7c",width:148,flexShrink:0,transition:"color 0.15s"},children:r.name}),e.jsx("div",{style:{flex:1,height:6,background:"#0d0f1a",borderRadius:3,overflow:"hidden"},children:e.jsx("div",{style:{height:"100%",width:`${l}%`,background:o?r.colorLight:`${r.colorLight}44`,borderRadius:3,transition:"all 0.3s"}})}),e.jsx("div",{style:{fontFamily:s,fontSize:9,color:o?r.colorLight:"#6a6f7c",width:96,textAlign:"right",flexShrink:0},children:r.lufs})]},r.id)})}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",fontFamily:s,fontSize:8,color:"#2a2d38",marginTop:4,paddingLeft:158},children:[e.jsx("span",{children:"â26 LUFS (quiet)"}),e.jsx("span",{children:"â12 LUFS (loud)"})]})]}),t&&e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${t.colorLight}33`,borderLeft:`3px solid ${t.colorLight}`,borderRadius:8,padding:"18px 20px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,marginBottom:14,flexWrap:"wrap"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10},children:[e.jsx("span",{style:{fontSize:22},children:t.icon}),e.jsxs("div",{children:[e.jsx("div",{style:{fontFamily:g,fontSize:17,fontWeight:700,color:"#e8e8f0"},children:t.name}),e.jsx("div",{style:{fontFamily:s,fontSize:8,color:"#9aa0ad",marginTop:2,textTransform:"uppercase",letterSpacing:"0.1em"},children:t.middleware})]})]}),e.jsxs("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[[{label:"Target",val:t.lufs},{label:"True Peak",val:t.truePeak},{label:"Format",val:t.format.split(" / ")[0]}].map(({label:r,val:o})=>e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:6,padding:"6px 12px",textAlign:"center"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:3},children:r}),e.jsx("div",{style:{fontFamily:s,fontSize:11,fontWeight:700,color:t.colorLight},children:o})]},r)),e.jsxs("div",{style:{background:t.normalizes?`${u}12`:`${b}12`,border:`1px solid ${t.normalizes?u+"33":b+"33"}`,borderRadius:6,padding:"6px 12px",textAlign:"center"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:3},children:"Platform norm."}),e.jsx("div",{style:{fontFamily:s,fontSize:11,fontWeight:700,color:t.normalizes?u:b},children:t.normalizes?"Yes":"No"})]})]})]}),e.jsx("p",{style:{fontSize:13,color:"#8888a0",lineHeight:1.7,margin:"0 0 10px"},children:t.desc}),e.jsxs("div",{style:{fontFamily:s,fontSize:10,color:`${p}cc`,background:`${p}0d`,border:`1px solid ${p}22`,borderRadius:4,padding:"8px 12px",lineHeight:1.6},children:["â³ ",t.note]})]}),e.jsx("p",{style:{marginTop:10,fontSize:11,color:"#333348",fontFamily:s},children:"Click any platform to see its loudness target, normalization behavior, and delivery format."})]})}const z=[{id:"music",label:"Music / Loops",icon:"ðµ",color:p,lufsTarget:"â14 to â18 LUFS",truePeak:"â1 dBTP",crestFactor:"8â14 dB",format:"WAV â OGG / platform format",title:"Music Loops â Seamless Playback & Loudness Matching",desc:"Game music almost always loops. The primary mastering challenge beyond loudness is ensuring seamless loop points â the transition from the end of the file back to the beginning must be inaudible. Any level, phase, or spectral mismatch at the loop boundary creates a click or pop on every cycle.",keyConsiderations:["Match loop start and end points in level and spectral content","Render reverb/delay tails inside the loop or truncate cleanly at the boundary","Target consistent LUFS across all music states (exploration, combat, menu)","Preserve dynamic range â use less limiting than streaming masters","Test the loop in the game engine, not just the DAW"],middleware:"Wwise / FMOD handle loop scheduling â deliver seamless WAV files"},{id:"sfx",label:"SFX / One-shots",icon:"ð¥",color:b,lufsTarget:"Peak â3 to â6 dBFS",truePeak:"â1 dBTP",crestFactor:"12â20 dB (preserve transients)",format:"WAV â platform encoding",title:"Sound Effects â Transient Integrity & Normalized Assets",desc:"SFX are one-shot events â impacts, explosions, footsteps, pickups, UI clicks. Unlike music, they're evaluated by peak level rather than
1integrated loudness. The most important mastering principle for SFX is preserving transient attack. Over-compressed impact sounds lose their punch entirely.",keyConsiderations:["Peak-normalize to â3 to â6 dBFS â let middleware handle bus mixing","Preserve transient attack â do not over-compress impacts and hits","Ensure consistent peak levels within each SFX category (all weapon hits similar)","Keep true peak at â1 dBTP to prevent clipping in the game mix","Short, percussive sounds need minimal processing â don't add what isn't needed"],middleware:"FMOD / Wwise apply bus compression â deliver dynamic source files"},{id:"ambience",label:"Ambience",icon:"ð²",color:u,lufsTarget:"â20 to â28 LUFS",truePeak:"â1 dBTP",crestFactor:"Variable â content dependent",format:"WAV â OGG / streaming format",title:"Ambience â Background Loops & Spatial Audio Beds",desc:"Ambience loops create the acoustic space of a game environment â forest, dungeon, city, underwater. They're usually the quietest layer in the game mix, sitting below music and SFX. The challenge is creating seamless loops that don't fatigue the listener over extended play sessions while maintaining natural dynamic variation.",keyConsiderations:["Master significantly quieter than music â â20 to â28 LUFS is common","Loop boundaries require even more care than music â any click is jarring in a quiet environment","Avoid static, monotonous content â include subtle variation to prevent listener fatigue","Consider spatial positioning â mono ambiences are positioned in 3D; stereo can feel flat in spatial audio","Extended loops (60+ seconds) work better than short repeating patterns"],middleware:"Often streamed from disk rather than loaded into memory â optimize file size"},{id:"vo",label:"VO / Dialogue",icon:"ð£",color:y,lufsTarget:"â18 to â23 LUFS",truePeak:"â3 dBTP",crestFactor:"6â10 dB",format:"WAV â platform encoding",title:"Voice-Over & Dialogue â Intelligibility Across Devices",desc:"Game VO includes character dialogue, narration, tutorial voice, and enemy vocalizations. The primary mastering goal is intelligibility â listeners must understand every word across TV speakers, headphones, and phone speakers. Emotional delivery must be preserved: over-compression makes every character sound identical and flat.",keyConsiderations:["Target â18 to â23 LUFS â consistent with broadcast speech standards","Use a de-esser to control sibilance before compression","Apply subtle compression to even out levels, not to make it loud","Ensure consistent loudness across all lines in a scene â mismatched VO is immediately noticeable","Test intelligibility on TV speakers, headphones, and phone speakers"],middleware:"Route through a dedicated dialogue bus â separate from music and SFX"},{id:"ui",label:"UI Sounds",icon:"ð±",color:T,lufsTarget:"Peak â6 to â12 dBFS",truePeak:"â1 dBTP",crestFactor:"High â short, punchy",format:"WAV â platform encoding",title:"UI Sounds â Subtle, Consistent, Non-Fatiguing",desc:"UI sounds â button clicks, menu transitions, notification chimes, selection confirmations â are heard repeatedly throughout a session. They must be subtle enough to not distract from gameplay while being present enough to provide clear feedback. UI sounds that are too loud or too harsh are among the most common complaints in game audio reviews.",keyConsiderations:["Significantly quieter than game SFX â â6 to â12 dBFS peak is typical","Avoid harsh high-frequency content â UI sounds heard hundreds of times become fatiguing","Match tonal qual
1ity across the entire UI sound set â consistency is more important than individual quality","Test at low volume levels â UI sounds are often used while the user has turned the volume down","Consider notification sounds on mobile: they may play when the phone is on vibrate/silent"],middleware:"Often on a dedicated UI bus with its own volume control in settings"}];function I(){const[i,a]=F.useState("music"),t=z.find(n=>n.id===i);return e.jsxs("div",{children:[e.jsx("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginBottom:20},children:z.map(n=>e.jsxs("button",{onClick:()=>a(n.id),style:{background:i===n.id?`${n.color}18`:"transparent",border:`1px solid ${i===n.id?n.color:m}`,color:i===n.id?n.color:"#9aa0ad",padding:"8px 16px",borderRadius:6,fontSize:10,fontFamily:s,cursor:"pointer",transition:"all 0.15s",display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{children:n.icon}),e.jsx("span",{style:{fontWeight:i===n.id?700:400},children:n.label})]},n.id))}),t&&e.jsxs("div",{children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:10,marginBottom:16},className:"ga-spec-grid",children:[{label:"Loudness Target",val:t.lufsTarget},{label:"True Peak",val:t.truePeak},{label:"Crest Factor",val:t.crestFactor},{label:"Source Format",val:t.format.split(" â ")[0]}].map(({label:n,val:c})=>e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${t.color}22`,borderRadius:7,padding:"10px 12px"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:5},children:n}),e.jsx("div",{style:{fontFamily:s,fontSize:11,fontWeight:700,color:t.color,lineHeight:1.3},children:c})]},n))}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16,marginBottom:12},className:"ga-asset-detail-grid",children:[e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${t.color}33`,borderLeft:`3px solid ${t.color}`,borderRadius:8,padding:"16px 18px"},children:[e.jsx("div",{style:{fontFamily:g,fontSize:15,fontWeight:700,color:"#e8e8f0",marginBottom:10},children:t.title}),e.jsx("p",{style:{fontSize:13,color:"#8888a0",lineHeight:1.7,margin:"0 0 12px"},children:t.desc}),e.jsxs("div",{style:{fontFamily:s,fontSize:9,color:`${t.color}88`,background:`${t.color}0a`,border:`1px solid ${t.color}22`,borderRadius:4,padding:"6px 10px",lineHeight:1.5},children:["â³ ",t.middleware]})]}),e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${m}`,borderRadius:8,padding:"16px 18px"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:8,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:12},children:"Key mastering considerations"}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:8},children:t.keyConsiderations.map((n,c)=>e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"flex-start"},children:[e.jsx("div",{style:{color:t.color,fontSize:10,flexShrink:0,marginTop:2},children:"â"}),e.jsx("div",{style:{fontSize:12,color:"#8888a0",lineHeight:1.5},children:n})]},c))})]})]})]}),e.jsx("p",{style:{marginTop:6,fontSize:11,color:"#333348",fontFamily:s},children:"Click any asset type to see its loudness target, mastering considerations, and middleware notes."})]})}const S=[{id:"explore",label:"Exploration",sub:"Ambient / calm",icon:"ðº",color:u,lufs:-18,lra:"10â14 LU",desc:"The baseline state â what the player hears most of the time. Typically the quietest and most dynamic of the music states, with space for ambient detail and melodic content. The exploration theme sets the emotional tone of the environment.",transitions:["tension","combat","menu"],tip:"This is your loudness reference point. All other states should be matched relative to this layer."},{id:"tension",label:"Tension / Stealth",sub:"Low energy",icon:"ð",color:b,lufs:-20,lra:"12â16 LU",desc:"A slightly quieter, more sparse state â often used for stealth sections or when enemies are nearby but not yet in combat. Must feel tense without being so sparse that the silence feels unintentional. The transition from tension to combat must feel like an escalation.",transitions:["explore","combat"],tip:"Tension states are often quieter than exploration. Match carefully â a sudden jump in loudness at the tensionâcombat transition is fine; explorationâtension should feel like a pull-back."},{id:"combat",label:"Combat",sub:"High energy",icon:"â",color:P,lufs:-14,lra:"5â8 LU",desc:"The most intense state â higher loudness, denser arrangement, less dynamic range. The jump in energy from exploration to combat should feel impactful. However, if combat music is too much louder than exploration music, every transition becomes jarring. A 2â4 LU difference is typically the maximum comfortable jump.",transitions:["explore","victory","tension"],tip:"Don't exceed 3â4 LU above your exploration state. The energy should come from arrangement density and tempo, not just raw loudness."},{id:"victory",label:"Victory / Fanfare",sub:"Short stinger",icon:"ð",color:p,lufs:-12,lra:"4â7 LU",desc:"A short, punchy stinger that plays on enemy defeat or level completion. Usually brief (2â8 seconds) and energetic. Typically the loudest element in the music system, but because it's so short, its integrated LUFS is less relevant than its peak impact. Should feel like a reward.",transitions:["explore","combat"],tip:"Fanfare stingers are evaluated by peak impact, not integrated loudness. Keep true peak headroom at â1 dBTP and let the energy speak for itself."},{id:"menu",label:"Menu / UI",sub:"Frontend music",icon:"ð",color:y,lufs:-16,lra:"8â12 LU",desc:"Main menu and frontend music often plays before audio settings are configured â the player hasn't set the
1ir preferred volume yet. Menu music should be at a comfortable default level â not aggressively loud, not inaudibly quiet. This is frequently the first audio impression of the game.",transitions:["explore"],tip:"Menu music plays before the player sets volume preferences. Err toward moderate loudness â the player will adjust. Starting too loud is a worse first impression than starting too quiet."}];function R(){const[i,a]=F.useState("explore"),t=S.find(o=>o.id===i),n={explore:{x:200,y:120},tension:{x:80,y:220},combat:{x:320,y:220},victory:{x:320,y:340},menu:{x:80,y:340}};return e.jsxs("div",{children:[e.jsx("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:16},children:S.map(o=>e.jsxs("button",{onClick:()=>a(o.id),style:{background:i===o.id?`${o.color}18`:"transparent",border:`1px solid ${i===o.id?o.color:m}`,color:i===o.id?o.color:"#9aa0ad",padding:"6px 12px",borderRadius:5,fontSize:10,fontFamily:s,cursor:"pointer",transition:"all 0.15s",display:"flex",alignItems:"center",gap:5},children:[e.jsx("span",{children:o.icon}),e.jsx("span",{style:{fontWeight:i===o.id?700:400},children:o.label})]},o.id))}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:20,alignItems:"start"},className:"ga-state-grid",children:[e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${m}`,borderRadius:8,padding:12},children:[e.jsx("div",{style:{fontFamily:s,fontSize:9,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:10},children:"Music state transitions"}),e.jsxs("svg",{viewBox:"0 0 420 420",style:{width:"100%",height:"auto"},children:[S.map(o=>o.transitions.map(l=>{const d=n[o.id],f=n[l];if(!f)return null;const h=i===o.id||i===l;return e.jsx("line",{x1:d.x,y1:d.y,x2:f.x,y2:f.y,stroke:h?`${S.find(j=>j.id===o.id).color}44`:"#1a1d28",strokeWidth:h?2:1,strokeDasharray:h?"none":"4 3"},`${o.id}-${l}`)})),S.map(o=>{var h;const l=n[o.id],d=i===o.id,f=(h=t==null?void 0:t.transitions)==null?void 0:h.includes(o.id);return e.jsxs("g",{onClick:()=>a(o.id),style:{cursor:"pointer"},children:[e.jsx("circle",{cx:l.x,cy:l.y,r:d?42:36,fill:d?`${o.color}18`:`${o.color}08`,stroke:d?o.color:f?`${o.color}55`:"#1a1d28",strokeWidth:d?2:1,style:{transition:"all 0.2s"}}),e.jsx("text",{x:l.x,y:l.y-8,textAnchor:"middle",fontSize:16,children:o.icon}),e.jsx("text",{x:l.x,y:l.y+8,textAnchor:"middle",fontSize:9,fill:d?o.color:f?`${o.color}88`:"#6a6f7c",fontFamily:s,fontWeight:d?"700":"400",style:{transition:"fill 0.2s"},children:o.label}),e.jsxs("text",{x:l.x,y:l.y+20,textAnchor:"middle",fontSize:8,fill:d?`${o.color}88`:"#333348",fontFamily:s,children:[o.lufs," LUFS"]})]},o.id)})]})]}),t&&e.jsxs("div",{style:{background:"#07080f",border:`1px solid ${t.color}33`,borderLeft:`3px solid ${t.color}`,borderRadius:8,padding:"16px 18px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10},children:[e.jsx("span",{style:{fontSize:20},children:t.icon}),e.jsxs("div",{children:[e.jsx("div",{style:{fontFamily:g,fontSize:16,fontWeight:700,color:"#e8e8f0"},children:t.label}),e.jsx("div",{style:{fontFamily:s,fontSize:8,color:`${t.color}88`,textTransform:"uppercase",letterSpacing:"0.1em"},children:t.sub})]})]}),e.jsxs("div",{style:{display:"flex",gap:10,marginBottom:12},children:[e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:5,padding:"6px 10px",textAlign:"center"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:3},children:"Target"}),e.jsxs("div",{style:{fontFamily:s,fontSize:13,fontWeight:700,color:t.color},children:[t.lufs," LUFS"]})]}),e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:5,padding:"6px 10px",textAlign:"center"},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:3},children:"LRA"}),e.jsx("div",{style:{fontFamily:s,fontSize:12,fontWeight:700,color:"#e8e8f0"},children:t.lra})]}),e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:5,padding:"6px 10px",flex:1},children:[e.jsx("div",{style:{fontFamily:s,fontSize:7,color:"#9aa0ad",textTransform:"uppercase",letterSpacing:"0.1em",marginBottom:3},children:"Transitions to"}),e.jsx("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:t.transitions.map(o=>{const l=S.find(d=>d.id===o);return l?e.jsxs("span",{style:{fontFamily:s,fontSize:8,color:l.color,background:`${l.color}12`,padding:"1px 6px",borderRadius:3},children:[l.icon," ",l.label]},o):null})})]})]}),e.jsx("p",{style:{fontSize:12,color:"#8888a0",lineHeight:1.65,margin:"0 0 12px"},children:t.desc}),e.jsxs("div",{style:{fontFamily:s,fontSize:9,color:p,background:`${p}0d`,border:`1px solid ${p}22`,borderRadius:4,padding:"6px 10px",lineHeight:1.6},children:["â³ ",t.tip]})]})]}),e.jsx("p",{style:{marginTop:10,fontSize:11,color:"#333348",fontFamily:s},children:"Click any state to see its loudness target, LRA, and mastering notes. Lines show possible transitions â mismatched loudness between connected states causes jarring jumps."})]})}function E(){const i=[{color:P,icon:"ð",title:"Mismatching loudne
1ss between music states",desc:"Combat music that's 8 LU louder than exploration music doesn't sound exciting â it sounds like someone turned the volume up. Every state transition becomes a level jump. Loudness matching across adaptive music states is the most impactful single mastering decision in game audio."},{color:b,icon:"ð",title:"Not testing loop points in the game engine",desc:"A loop that sounds seamless in the DAW can click, pop, or phase-shift in the game engine due to how the engine handles sample interpolation at loop boundaries. Always import the loop into the actual game engine and test it â don't sign off on loops from the DAW alone."},{color:y,icon:"ð¥",title:"Over-compressing SFX and killing transients",desc:"Impact sounds â explosions, hits, footsteps â communicate physical weight through their transient attack. A heavily compressed impact sound doesn't feel heavy; it feels flat. SFX should be normalized by peak level, not loudness â and the dynamics should be preserved."},{color:T,icon:"ð£",title:"Inconsistent VO loudness across characters and scenes",desc:"Different recording sessions, different microphone placements, different talent voice levels â VO assets in games are rarely captured in a single consistent pass. Without matching loudness across every line, dialogue scenes feel uneven and unprofessional. Process each line individually to a consistent integrated LUFS target."},{color:p,icon:"ð±",title:"Mastering only for speakers, not headphones",desc:"A significant portion of game audio is experienced through headphones â especially on Switch, mobile, and PC. Audio that's spectrally balanced on monitors can be harsh or boomy through headphones. Test every major asset category through headphones before final delivery."},{color:u,icon:"ð¦",title:"Delivering pre-encoded lossy files as source assets",desc:"Game engines and middleware encode audio to platform formats during the build pipeline. Delivering an OGG or MP3 file as a source asset means the build process re-encodes an already-lossy file â stacking compression artifacts with each generation. Always deliver 24-bit WAV source files."}];return e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:16},className:"ga-mistakes-grid",children:i.map((a,t)=>e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:10,padding:"20px",borderLeft:`3px solid ${a.color}44`},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[e.jsx("span",{style:{fontSize:20},children:a.icon}),e.jsx("div",{style:{fontFamily:g,fontSize:14,fontWeight:700,color:"#e8e8f0",lineHeight:1.3},children:a.title})]}),e.jsx("p",{style:{fontSize:13,color:"#8888a0",lineHeight:1.65,margin:0},children:a.desc})]},t))})}function G(){const i=[{icon:"ð",color:y,title:"Loudness Analyzer",sub:"Free",desc:"Instant integrated LUFS, true peak, LRA, and dynamic range for any game audio asset â music loops, SFX, ambience, VO. Verify loudness consistency across your asset library before importing to the game engine.",link:"/",cta:"Analyze your assets â"},{icon:"ð¦",color:"#60a5fa",title:"Multi-Asset Analysis",sub:"Premium",desc:"Analyze up to 24 files simultaneously. Check loudness consistency across all music states, or verify an entire SFX category in one pass â catch outliers before they cause mix issues in the game.",link:"/album",cta:"Try multi-file QC â"},{icon:"ð",color:T,title:"A/B Comparison",sub:"Premium",desc:"Level-matched switching between two audio files. Compare exploration vs combat music loudness, or verify that a revised asset matches the original before replacing it in the build.",link:"/compare",cta:"Try A/B â"},{icon:"ð¿",color:b,title:"Codec Preview",sub:"Premium",desc:"Simulate OGG Vorbis and AAC encoding on your source WAV files. Hear and see codec artifacts before they reach the game engine â particularly relevant for music and ambience content.",link:"/premium",cta:"See premium â"},{icon:"ð",color:u,title:"Genre Reference Curves",sub:"Premium",desc:"Compare your game music spectral balance against 30+ reference curves from commercial releases. Useful for game c
1omposers checking tonal balance against genre norms.",link:"/premium",cta:"See premium â"},{icon:"ð",color:"#fc3c44",title:"Platform Delivery Specs",sub:"Free",desc:"Full technical delivery specifications for every major streaming and distribution platform alongside game platform loudness guidelines â in one place, always current.",link:"/mastering-for-streaming-platforms",cta:"Browse specs â"}];return e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:20},className:"ga-tool-cards",children:i.map(a=>e.jsx(w,{to:a.link,style:{textDecoration:"none"},children:e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:10,padding:"24px 20px",transition:"border-color 0.15s, transform 0.15s",height:"100%",boxSizing:"border-box",display:"flex",flexDirection:"column",gap:10},onMouseEnter:t=>{t.currentTarget.style.borderColor=`${a.color}66`,t.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:t=>{t.currentTarget.style.borderColor=m,t.currentTarget.style.transform="none"},children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsx("span",{style:{fontSize:26},children:a.icon}),e.jsx("span",{style:{fontFamily:s,fontSize:8,textTransform:"uppercase",letterSpacing:"0.12em",color:a.sub==="Free"?u:`${a.color}88`,background:a.sub==="Free"?`${u}15`:`${a.color}12`,border:`1px solid ${a.sub==="Free"?`${u}33`:`${a.color}22`}`,padding:"2px 7px",borderRadius:4},children:a.sub})]}),e.jsx("div",{style:{fontFamily:g,fontSize:16,fontWeight:700,color:"#e8e8f0"},children:a.title}),e.jsx("div",{style:{fontSize:13,color:"#8888a0",lineHeight:1.65,flex:1},children:a.desc}),e.jsx("div",{style:{fontFamily:s,fontSize:11,color:a.color,marginTop:4},children:a.cta})]})},a.title))})}function q(){const[i,a]=F.useState(null),t=[{q:"What LUFS should game music be mastered to?",a:"It depends on the platform and the game's audio design. PC/Steam games typically target â14 to â18 LUFS for in-game music. PS5 aligns to â23 LUFS and Xbox to â24 LUFS. The more important question is consistency across your asset library â if your combat music is significantly louder than your exploration music, every state transition will be jarring regardless of absolute level."},{q:"How do I master a seamless music loop?",a:"The loop start and end points must match in level, spectral content, and phase. Avoid time-based effects (reverb, delay) that create tails extending past the loop point â either render them within the loop, or truncate cleanly. Apply processing identically to the whole file, not just sections. Always test the actual loop playback in the game engine â not just the DAW â before final delivery."},{q:"Should I use integrated LUFS or peak normalization for SFX?",a:"Peak normalization for SFX â typically to â3 to â6 dBFS. Integrated LUFS is less relevant for short one-shot sounds because the measurement window is too brief to be meaningful. The key metric for SFX is true peak headroom (keep it at â1 dBTP) and preserving the dynamic character of the transient. The game engine's audio middleware handles mixing levels at runtime."},{q:"Does Wwise or FMOD normalize loudness automatically?",a:"Both Wwise and FMOD can apply normalization and volume management at the bus level during runtime mixing. However, this is a post-processing step â you still need consistent source asset loudness to give the middleware predictable material to work with. Wildly inconsistent source loudness means the middleware is fighting itself trying to compensate. Deliver consistent source files and let the middleware handle fine-tuning."},{q:"What loudness target should game VO use?",a:"â18 to â23 LUFS integrated is the standard range for game VO, consistent with broadcast speech standards. The primary goal is intelligibility and consistency across all lines â different characters, different scenes, different recording sessions. Ensure every line reaches the same integrated LUFS target so dialogue scenes play back evenly."},{q:"Should game audio be mastered differently for mobile vs console?",a:"The loudness targets differ (mobile typically â14 to â16 LUFS; PS5 â23 LUFS), and you need to account for the playback environment. Mobile games are often heard through phone speakers with strong proximity effects, or through earbuds in noisy environments. Console games are typically heard through TV speakers or quality headphones. Test on representative devices for each platform â the same mix can sound very different across these environments."},{q:"Can mastering.to analyze short SFX files?",a:"Yes. mastering.to analyzes any audio file regardless of duration. For very short SFX (under 1 second), integrated LUFS may not be the most meaningful metric â but true peak, dynamic range, and the waveform visualization are all still useful for verifying headroom and transient integrity. Drop any game audio asset for instant analysis."},{q:"What's the difference between AT9, XMA2, and OGG for game audio?",a:"AT9 (ATRAC9) is Sony's proprietary codec used natively on PlayStation. XMA2 is Microsoft's Xbox Audio codec. OGG Vorbis is the most widely used open-source lossy format across PC game engines. In practice, you deliver 24-bit WAV source files and the game engine or build pipeline encodes to the platform-specific format. You should never hand-encode to AT9 or XMA2 yourself â the platform SDK handles this during the build."}];return e.jsxs("div",{children:[e.jsxs("div",{style:{marginBottom:20},children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.18em",color:`${y}55`,fontFamily:s,marginBottom:10},children:"Common Questions"}),e.jsx("h2",{style:{fontFamily:g,fontSize:26,fontWeight:700,color:"#e8e8f0",lineHeight:1.2,margin:0},children:"Game audio mastering FAQ"})]}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2},children:t.map((n,c)=>e.jsxs("div",{style:{background:x,border:`1px solid ${m}`,borderRadius:8,overflow:"hidden"},children:[e.jsxs("button",{onClick:()=>a(i===c?null:c),style:{width:"100%",display:"flex",justifyContent:"space-between",alignItems:"center",padding:"14px 18px",background:"none",border:"none",cursor:"pointer",textAlign:"left",gap:12},children:[e.jsx("span",{style:{fontSize:14,color:i===c?"#e8e8f0":"#c0c0d0",fontFamily:g,fontWeight:500,lineHeight:1.4},children:n.q}),e.jsx("span",{style:{color:i===c?y:"#333348",fontSize:18,flexShrink:0,display:"block",transform:i===c?"rotate(45deg)":"none",transition:"transform 0.2s"},children:"+"})]}),i===c&&e.jsx("div",{style:{padding:"0 18px 16px",fontSize:13,color:"#8888a0",lineHeight:1.7,borderTop:`1px solid ${m}`},children:e.jsx("div",{style:{paddingTop:14},children:n.a})})]},c))})]})}function H(){return e.jsxs("div",{style:{background:`linear-gradient(135deg, ${x} 0%, #0d0f1a 100%)`,border:`1px solid ${p}22`,borderRadius:12,padding:"32px 28px",display:"grid",gridTemplateColumns:"1fr auto",gap:24,alignItems:"center"},className:"ga-premium-cta",children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.18em",color:`${p}55`,fontFamily:s,marginBottom:10},children:"mastering.to Premium"}),e.jsx("h2",{style:{fontFamily:g,fontSize:22,fontWeight:700,color:"#e8e8f0",lineHeight:1.2,margin:"0 0 10px"},children:"Multi-asset QC and deeper analysis for game audio"}),e.jsx("p",{style:{fontSize:13,color:"#666678",lineHeight:1.65,margin:"0 0 16px",maxWidth:520},children:"The free analyzer handles per-asset LUFS, true peak, and dynamic range. Premium adds simultaneous multi-file analysis across up to 24 assets â verify loudness consistency across an entire music state set or SFX category in one pass. Plus A/B comparison, codec simulation, and clipping analysis."}),e.jsx("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:["Multi-asset analysis â 24 files","A/B comparison with level match","Codec preview â OGG & AAC","Clipping analysis","Visualization tools","Genre reference curves"].map((i,a)=>e.jsxs("div",{style:{fontFamily:s,fontSize:9,color:u,background:`${u}12`,border:`1px solid ${u}22`,padding:"3px 10px",borderRadius:4,letterSpacing:"0.06em"},children:["â ",i]},a))})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10,alignItems:"flex-end",minWidth:120},children:[e.jsx(w,{to:"/premium",style:{display:"block",padding:"12px 22px",background:`linear-gradient(110deg, ${p}, #65a30d)`,borderRadius:7,color:"#06070b",fontFamily:s,fontSize:11,fontWeight:700,letterSpacing:"0.08em",textDecoration:"none",textAlign:"center",whiteSpace:"nowrap",textTransform:"uppercase"},children:"View Premium â"}),e.jsx("div",{style:{fontFamily:s,fontSize:9,color:"#333348",textAlign:"center"},children:"$9.99/mo · $89.99/yr · $179 lifetime"})]})]})}function N(){return e.jsx("div",{style:{position:"relative",overflow:"hidden",borderBottom:`1px solid ${m}`,margin:"0 -24px 40px",padding:"56px 24px 48px"},children:e.jsxs("div",{style:{maxWidth:1200,margin:"0 auto"},children:[e.jsx("style",{children:` 2 @keyframes ga-gradient { 3 0% { background-position: 0% 50%; } 4 50% { background-position: 100% 50%; } 5 100% { background-position: 0% 50%; } 6 } 7 .ga-cta-btn { 8 display: inline-flex; align-items: center; gap: 8px; 9 padding: 13px 28px; 10 background: linear-gradient(110deg, #84cc16, #65a30d, #a3e635, #84cc16); 11 background-size: 300% 300%; 12 animation: ga-gradient 5s ease infinite; 13 border-radius: 8px; color: #06070b; 14 font-family: 'JetBrains Mono', monospace; font-size: 11px; 15 font-weight: 700; letter-spacing: 0.07em; 16 text-transform: uppercase; text-decoration: none; 17 box-shadow: 0 0 28px #84cc1633, 0 2px 12px #00000055; 18 transition: box-shadow 0.3s, transform 0.2s; 19 } 20 .ga-cta-btn:hover { box-shadow: 0 0 48px #84cc1655; transform: translateY(-2px); } 21 .ga-ghost-btn { 22 display: inline-flex; align-items: center; gap: 7px; 23 padding: 12px 22px; border: 1px solid #1e2130; border-radius: 8px; 24 background: transparent; color: #666680; 25 font-family: 'JetBrains Mono', monospace; font-size: 11px; 26 font-weight: 500; letter-spacing: 0.05em; text-decoration: none; 27 transition: border-color 0.2s, color 0.2s, transform 0.2s; 28 } 29 .ga-ghost-btn:hover { border-color: #84cc1633; color: #84cc16; transform: translateY(-2px); } 30 @media (max-width: 760px) { 31 .ga-hero-grid { grid-template-columns: 1fr !important; } 32 .ga-hero-img { display: none !important; } 33 .ga-tool-cards { grid-template-columns: 1fr !important; }
34 .ga-mistakes-grid { grid-template-columns: 1fr !important; } 35 .ga-state-grid { grid-template-columns: 1fr !important; } 36 .ga-spec-grid { grid-template-columns: repeat(2, 1fr) !important; } 37 .ga-asset-detail-grid { grid-template-columns: 1fr !important; } 38 .ga-premium-cta { grid-template-columns: 1fr !important; } 39 } 40 @media (min-width: 761px) and (max-width: 960px) { 41 .ga-tool-cards { grid-template-columns: repeat(2, 1fr) !important; } 42 .ga-mistakes-grid { grid-template-columns: 1fr !important; } 43 } 44 `}),e.jsx("div",{style:{position:"absolute",top:"30%",left:"55%",width:500,height:500,background:"radial-gradient(ellipse, #84cc1606 0%, transparent 65%)",transform:"translate(-50%, -50%)",pointerEvents:"none"}}),e.jsxs("div",{className:"ga-hero-grid",style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:40,alignItems:"center"},children:[e.jsxs("div",{children:[e.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:6,background:`${p}10`,border:`1px solid ${p}22`,borderRadius:20,padding:"4px 12px",marginBottom:20},children:[e.jsx("div",{style:{width:5,height:5,borderRadius:"50%",background:p}}),e.jsx("span",{style:{fontFamily:s,fontSize:9,color:`${p}99`,letterSpacing:"0.15em",textTransform:"uppercase"},children:"Loops · SFX · VO · Adaptive music · Platform QC"})]}),e.jsxs("h1",{style:{fontFamily:g,fontSize:"clamp(30px, 4.5vw, 46px)",fontWeight:800,color:"#e8e8f0",lineHeight:1.1,letterSpacing:"-0.025em",margin:"0 0 18px"},children:["Mastering for",e.jsx("br",{}),e.jsx("span",{style:{background:`linear-gradient(110deg, ${p}, #a3e635)`,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Game Audio"})]}),e.jsx("p",{style:{fontSize:15,color:"#666678",lineHeight:1.7,margin:"0 0 28px",maxWidth:480},children:"Game audio mastering isn't one problem â it's five. Music loops that must repeat seamlessly. SFX that need transient integrity, not integrated loudness. Adaptive music states that must match across transitions. VO that must stay intelligible across TV speakers and earbuds. And every asset verified against platform specs before it hits the build. mastering.to handles the analysis â free, in your browser, nothing uploaded."}),e.jsxs("div",{style:{display:"flex",gap:12,flexWrap:"wrap"},children:[e.jsx(w,{to:"/",className:"ga-cta-btn",children:"Analyze your game audio â"}),e.jsx(w,{to:"/premium",className:"ga-ghost-btn",children:"Explore premium tools"})]}),e.jsx("div",{style:{display:"flex",gap:24,marginTop:28,flexWrap:"wrap"},children:[{val:"5",lbl:"Asset types covered"},{val:"6",lbl:"Game platforms"},{val:"Free",lbl:"Per-asset analysis"}].map(({val:i,lbl:a})=>e.jsxs("div",{children:[e.jsx("div",{style:{fontFamily:g,fontSize:20,fontWeight:700,color:"#e8e8f0",lineHeight:1},children:i}),e.jsx("div",{style:{fontFamily:s,fontSize:9,color:"#333348",textTransform:"uppercase",letterSpacing:"0.12em",marginTop:4},children:a})]},a))})]}),e.jsxs("div",{className:"ga-hero-img",style:{display:"flex",justifyContent:"center",alignItems:"center",position:"relative"},children:[e.jsx("div",{style:{position:"absolute",inset:"10%",background:"radial-gradient(ellipse, #84cc1610 0%, transparent 70%)",borderRadius:"50%",pointerEvents:"none"}}),e.jsx("img",{src:"/mockup-phone-dual.png",alt:"mastering.to analyzer for game audio assets showing LUFS and platform compliance",style:{width:"100%",maxWidth:520,height:"auto",position:"relative",mixBlendMode:"lighten"}})]})]})]})})}function K(){const i=C(),{analysis:a,analyzing:t,progress:n,fileName:c,error:r}=i;return e.jsxs(e.Fragment,{children:[e.jsx(O,{}),e.jsx(N,{}),e.jsxs("div",{style:{paddingBottom:100},children:[e.jsx(X,{}),e.jsxs("section",{style:{marginBottom:48},children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.18em",color:`${y}55`,fontFamily:s,marginBottom:10},children:"The fundamentals"}),e.jsx("h2",{style:{fontFamily:g,fontSize:26,fontWeight:700,color:"#e8e8f0",lineHeight:1.2,margin:"0 0 16px"},children:"Why game audio mastering is unlike any other format"}),["Every other audio format covered on this site â streaming music, film, podcasts, vinyl â has one thing in common: the listener experiences a linear sequence of audio from start to finish. Game audio is fundamentally different. It's interactive, non-linear, and reactive. Mu
44sic transitions between states in response to what the player does. SFX fire as discrete events at unpredictable times. VO lines play in response to choices made hours apart. The audio mix is assembled in real time, by the game engine, from hundreds of individual assets mastered and delivered separately.","This changes what mastering means. A music loop that sounds fine in isolation can be jarring if its loudness doesn't match the state it transitions from. A SFX one-shot with excellent integrated LUFS can still clip in the game mix if its transient peak exceeds the bus headroom. VO that sounds balanced in the recording session can vary wildly in perceived loudness across different characters recorded months apart. The game engine and audio middleware (Wwise, FMOD) do some of this work at runtime â but they can only work with the source material you give them.","mastering.to gives you the per-asset technical measurements that make a consistent game audio library possible. Drop any asset â a 4-second footstep loop, a 90-second combat theme, a VO line â and get instant LUFS, true peak, LRA, dynamic range, and stereo analysis. Free, in your browser, nothing uploaded. Then use the platform standards and asset type guides on this page to understand what those numbers mean for your specific context."].map((o,l)=>e.jsx("p",{style:{fontSize:14,color:"#8888a0",lineHeight:1.8,margin:"0 0 16px",paddingLeft:14,borderLeft:l===0?`3px solid ${p}44`:"3px solid transparent"},children:o},l))]}),e.jsx(A,{eyebrow:"Interactive diagram",heading:"Game platform audio standards",desc:"Steam, PlayStation 5, Xbox Series, Nintendo Switch, iOS, and Android each have different loudness targets, normalization behaviors, and delivery formats. Click any platform to see its full spec and practical notes.",children:e.jsx(D,{})}),e.jsxs("section",{style:{marginBottom:48},children:[e.jsxs("div",{style:{fontSize:10,textTransform:"uppercase",letterSpacing:"0.15em",color:"#9aa0ad",fontFamily:s,marginBottom:14,display:"flex",alignItems:"center",gap:8},children:[e.jsx("div",{style:{width:12,height:1,background:`${p}66`}}),"Analyze Your Game Audio Asset â Free",e.jsx("div",{style:{flex:1,height:1,background:m}})]}
44),!a&&!t&&e.jsx(U,{analyzer:i}),t&&e.jsx(W,{progress:n,fileName:c}),r&&e.jsx(B,{error:r}),a&&e.jsx(M,{analysis:a,fileName:c,onReset:i.reset,platforms:$,formatTime:V,precodedBuffers:i.precodedBuffers})]}),e.jsx(A,{eyebrow:"Interactive diagram",heading:"Audio asset type guide",desc:"Music loops, SFX, ambience, VO, and UI sounds all require different loudness targets and mastering approaches. Click any asset type to see its spec, key considerations, and middleware notes.",children:e.jsx(I,{})}),e.jsx(L,{eyebrow:"What goes wrong",heading:"Common game audio mastering mistakes",subhead:"These are the errors that produce inconsistent mixes, jarring state transitions, and failed platform QC â all preventable with the right analysis workflow.",children:e.jsx(E,{})}),e.jsx(A,{eyebrow:"Interactive diagram",heading:"Adaptive music loudness â state matching",desc:"Game music transitions between states in response to gameplay. Every state must be loudness-matched to every other state it can transition to. Click any state to see its loudness target, LRA, and mastering notes.",children:e.jsx(R,{})}),e.jsx(L,{eyebrow:"The toolkit",heading:"Tools for game audio QC",subhead:"Free per-asset analysis for any game audio file. Premium adds simultaneous multi-asset analysis, A/B comparison, and codec simulation â for full library-level QC.",children:e.jsx(G,{})}),e.jsx("div",{style:{marginBottom:48},children:e.jsx(H,{})}),e.jsx("section",{style:{marginBottom:48},children:e.jsx(q,{})}),e.jsxs("div",{style:{borderTop:`1px solid ${m}`,paddingTop:32},children:[e.jsx("div",{style:{fontSize:9,textTransform:"uppercase",letterSpacing:"0.15em",color:"#333348",fontFamily:s,marginBottom:16},children:"Explore mastering.to"}),e.jsx("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[{to:"/audio-mastering",label:"Audio Mastering"},{to:"/mastering-for-streaming-platforms",label:"Platform Specs"},{to:"/mastering-for-music-producers",label:"Mastering for Producers"},{to:"/audio-mastering-for-film",label:"Mastering for Film & TV"},{to:"/mastering-for-indie-artists",label:"Mastering for Indie Artists"},{to:"/compare",label:"A/B Comparison"},{to:"/album",label:"Multi-File Analysis"},{to:"/premium",label:"Premium"}].map(({to:o,label:l})=>e.jsx(w,{to:o,style:{fontFamily:s,fontSize:10,color:"#6a6f7c",textDecoration:"none",padding:"5px 12px",border:`1px solid ${m}`,borderRadius:5,transition:"border-color 0.15s, color 0.15s"},onMouseEnter:d=>{d.currentTarget.style.color=y,d.currentTarget.style.borderColor=`${y}44`},onMouseLeave:d=>{d.currentTarget.style.color="#6a6f7c",d.currentTarget.style.borderColor=m},children:l},o))})]})]})]})}export{K as default};
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.