@jjlmoya/utils-games-development 1.50.0 → 1.52.0

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 (61) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +8 -1
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/audioLoopPointFinder/audio-loop-point-finder.css +322 -0
  7. package/src/tool/audioLoopPointFinder/audio-player.ts +84 -0
  8. package/src/tool/audioLoopPointFinder/bibliography.astro +6 -0
  9. package/src/tool/audioLoopPointFinder/bibliography.ts +16 -0
  10. package/src/tool/audioLoopPointFinder/client.ts +262 -0
  11. package/src/tool/audioLoopPointFinder/component.astro +147 -0
  12. package/src/tool/audioLoopPointFinder/dom-utils.ts +55 -0
  13. package/src/tool/audioLoopPointFinder/entry.ts +27 -0
  14. package/src/tool/audioLoopPointFinder/i18n/de.ts +211 -0
  15. package/src/tool/audioLoopPointFinder/i18n/en.ts +211 -0
  16. package/src/tool/audioLoopPointFinder/i18n/es.ts +211 -0
  17. package/src/tool/audioLoopPointFinder/i18n/fr.ts +211 -0
  18. package/src/tool/audioLoopPointFinder/i18n/id.ts +211 -0
  19. package/src/tool/audioLoopPointFinder/i18n/it.ts +211 -0
  20. package/src/tool/audioLoopPointFinder/i18n/ja.ts +211 -0
  21. package/src/tool/audioLoopPointFinder/i18n/ko.ts +211 -0
  22. package/src/tool/audioLoopPointFinder/i18n/nl.ts +211 -0
  23. package/src/tool/audioLoopPointFinder/i18n/pl.ts +211 -0
  24. package/src/tool/audioLoopPointFinder/i18n/pt.ts +211 -0
  25. package/src/tool/audioLoopPointFinder/i18n/ru.ts +211 -0
  26. package/src/tool/audioLoopPointFinder/i18n/sv.ts +211 -0
  27. package/src/tool/audioLoopPointFinder/i18n/tr.ts +211 -0
  28. package/src/tool/audioLoopPointFinder/i18n/zh.ts +211 -0
  29. package/src/tool/audioLoopPointFinder/index.ts +11 -0
  30. package/src/tool/audioLoopPointFinder/logic.test.ts +72 -0
  31. package/src/tool/audioLoopPointFinder/logic.ts +214 -0
  32. package/src/tool/audioLoopPointFinder/metadata-parser.ts +94 -0
  33. package/src/tool/audioLoopPointFinder/seo.astro +15 -0
  34. package/src/tool/audioLoopPointFinder/ui.ts +42 -0
  35. package/src/tool/audioLoopPointFinder/waveform-renderer.ts +53 -0
  36. package/src/tool/saveFileEditor/bibliography.astro +6 -0
  37. package/src/tool/saveFileEditor/bibliography.ts +12 -0
  38. package/src/tool/saveFileEditor/component.astro +351 -0
  39. package/src/tool/saveFileEditor/entry.ts +28 -0
  40. package/src/tool/saveFileEditor/game-save-file-editor.css +250 -0
  41. package/src/tool/saveFileEditor/i18n/de.ts +182 -0
  42. package/src/tool/saveFileEditor/i18n/en.ts +182 -0
  43. package/src/tool/saveFileEditor/i18n/es.ts +182 -0
  44. package/src/tool/saveFileEditor/i18n/fr.ts +182 -0
  45. package/src/tool/saveFileEditor/i18n/id.ts +182 -0
  46. package/src/tool/saveFileEditor/i18n/it.ts +182 -0
  47. package/src/tool/saveFileEditor/i18n/ja.ts +182 -0
  48. package/src/tool/saveFileEditor/i18n/ko.ts +182 -0
  49. package/src/tool/saveFileEditor/i18n/nl.ts +182 -0
  50. package/src/tool/saveFileEditor/i18n/pl.ts +182 -0
  51. package/src/tool/saveFileEditor/i18n/pt.ts +182 -0
  52. package/src/tool/saveFileEditor/i18n/ru.ts +182 -0
  53. package/src/tool/saveFileEditor/i18n/sv.ts +182 -0
  54. package/src/tool/saveFileEditor/i18n/tr.ts +182 -0
  55. package/src/tool/saveFileEditor/i18n/zh.ts +182 -0
  56. package/src/tool/saveFileEditor/index.ts +11 -0
  57. package/src/tool/saveFileEditor/logic.test.ts +69 -0
  58. package/src/tool/saveFileEditor/logic.ts +139 -0
  59. package/src/tool/saveFileEditor/seo.astro +15 -0
  60. package/src/tool/saveFileEditor/ui.ts +24 -0
  61. package/src/tools.ts +5 -0
@@ -0,0 +1,211 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { AudioLoopPointFinderUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
6
+ slug: 'spiel-audio-loop-punkt-finder',
7
+ title: 'Spiel Audio Loop Punkt Finder und Metadaten Injektor',
8
+ description: 'Finden Sie präzise Audio-Loop-Punkte, richten Sie sie an Nulldurchgängen aus und exportieren Sie WAV-Dateien mit LOOPSTART- und LOOPEND-Metadaten.',
9
+ ui: {
10
+ title: 'Spiel Audio Loop Punkt Finder',
11
+ subtitle: 'Interaktiver Wellenform Analyzer, Nulldurchgangs Detector und WAV Metadaten Tagger',
12
+ dropzoneTitle: 'Audiodatei hier ablegen oder zum Durchsuchen klicken',
13
+ dropzoneSubtitle: 'Unterstützt WAV, OGG, MP3 und FLAC Audiodateien',
14
+ dropzoneButton: 'Audiodatei Auswählen',
15
+ audioInfoTitle: 'Eigenschaften der Tonspur',
16
+ durationLabel: 'Dauer',
17
+ sampleRateLabel: 'Abtastrate',
18
+ channelsLabel: 'Audiokanäle',
19
+ totalSamplesLabel: 'Gesamtzahl der Samples',
20
+ loopControlsTitle: 'Loop-Region Konfiguration',
21
+ loopStartLabel: 'Loop-Start Marker',
22
+ loopEndLabel: 'Loop-Ende Marker',
23
+ loopDurationLabel: 'Loop Dauer',
24
+ zeroCrossingLabel: 'Nulldurchgangsausrichtung',
25
+ snapZeroCrossingButton: 'Marker am Nächsten Nulldurchgang Ausrichten',
26
+ playLoopButton: 'Nahtlosen Loop Vorschauen',
27
+ pauseLoopButton: 'Wiedergabe Pausieren',
28
+ stopLoopButton: 'Wiedergabe Stoppen',
29
+ exportWavButton: 'WAV mit Loop-Metadaten Exportieren',
30
+ sampleUnitLabel: 'Samples',
31
+ secondUnitLabel: 'Sekunden',
32
+ zoomLabel: 'Wellenform Zoom',
33
+ zoomInButton: 'Vergrößern',
34
+ zoomOutButton: 'Verkleinern',
35
+ resetZoomButton: 'Ansicht Zurücksetzen',
36
+ noFileSelected: 'Noch keine Audiodatei geladen',
37
+ invalidAudioFile: 'Audiodatei konnte nicht dekodiert werden',
38
+ presetsTitle: 'Schnell-Presets',
39
+ presetFullTrack: 'Ganze Spur Loopen',
40
+ presetIntroCut: '10% Intro Überspringen',
41
+ presetMiddleLoop: 'Mittlerer 50% Bereich',
42
+ statusLooping: 'Loop-Wiedergabe Aktiv',
43
+ statusPaused: 'Wiedergabe Pausiert',
44
+ statusReady: 'Audio Geladen und Bereit',
45
+ statusLoaded: 'Tonspur erfolgreich geladen',
46
+ statusDecodeError: 'Fehler beim Dekodieren der Audiodatei',
47
+ statusSnapped: 'Marker an Nulldurchgängen ausgerichtet',
48
+ statusStopped: 'Wiedergabe gestoppt',
49
+ statusExported: 'WAV-Datei mit Loop-Metadaten exportiert',
50
+ },
51
+ seo: [
52
+ {
53
+ type: 'title',
54
+ level: 2,
55
+ text: 'Nahtlose Spiel-Audio-Loops und Sample-Ausrichtung',
56
+ },
57
+ {
58
+ type: 'paragraph',
59
+ html: 'Für eine kontinuierliche Hintergrundmusik in Videospielen ist eine exakte Sample-Ausrichtung an den Loop-Grenzen erforderlich. Moderne Game-Engines wie Unity, Godot, Unreal Engine, FMOD und Wwise nutzen eingebettete Loop-Metadaten wie LOOPSTART und LOOPEND direkt aus den WAV-Headern.',
60
+ },
61
+ {
62
+ type: 'stats',
63
+ columns: 4,
64
+ items: [
65
+ { label: 'Abtastraten-Präzision', value: '44.1 kHz / 48 kHz' },
66
+ { label: 'Nulldurchgangs-Schwelle', value: '0.00 Amplitude' },
67
+ { label: 'Metadaten-Standard', value: 'RIFF smpl und INFO' },
68
+ { label: 'Klick-Reduzierung', value: '100% Phasen-Ausgerichtet' },
69
+ ],
70
+ },
71
+ {
72
+ type: 'title',
73
+ level: 2,
74
+ text: 'Nulldurchgänge zur Klick Reduzierung Nutzen',
75
+ },
76
+ {
77
+ type: 'tip',
78
+ title: 'Nulldurchgangs Strategie',
79
+ html: 'Richten Sie Loop-Start- und Loop-Ende-Marker immer an positiven Nulldurchgängen aus. Dies verhindert Knackgeräusche und Lautsprecherausschläge beim Loopen.',
80
+ },
81
+ {
82
+ type: 'title',
83
+ level: 2,
84
+ text: 'Vergleich der Metadaten Kompatibilität',
85
+ },
86
+ {
87
+ type: 'comparative',
88
+ columns: 2,
89
+ items: [
90
+ {
91
+ title: 'RIFF smpl Chunk Marker',
92
+ description: 'Standard Binär Metadaten im WAV Header',
93
+ points: [
94
+ 'Unterstützt von Godot, FMOD, Wwise und GameMaker',
95
+ 'Exakte Sample Präzision ohne Drift',
96
+ 'Bündelt Loops direkt in der WAV Datei',
97
+ 'Verhindert Klicks mit Nulldurchgangsausrichtung',
98
+ ],
99
+ },
100
+ {
101
+ title: 'Manuelles Audio Schneiden',
102
+ description: 'Trennen von Intro und Loop in separate Dateien',
103
+ points: [
104
+ 'Genutzt von einfachen Medienplayern',
105
+ 'Anfällig für Milisekunden-Lücken',
106
+ 'Erfordert mehrere Dateien im Projekt',
107
+ 'Hohes Klick-Risiko an den Übergängen',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ level: 2,
115
+ text: 'Standard Abtastraten Übersicht',
116
+ },
117
+ {
118
+ type: 'table',
119
+ headers: ['Abtastrate', 'Samples pro Sekunde', 'Empfohlener Einsatzbereich', 'Zeitauflösung'],
120
+ rows: [
121
+ ['44,100 Hz', '44,100', 'Standard CD Qualität Soundtrack', '0.0226 ms pro Sample'],
122
+ ['48,000 Hz', '48,000', 'Moderne Desktop und Konsolenspiele', '0.0208 ms pro Sample'],
123
+ ['96,000 Hz', '96,000', 'High Definition Master Audio', '0.0104 ms pro Sample'],
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ level: 2,
129
+ text: 'Automatische Metadaten-Injektion auf Byte-Ebene',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Beim Exportieren von Tonspuren aus diesem Tool werden neue Metadatenstrukturen direkt in den RIFF-Header der ausgegebenen WAV-Binärdatei eingebettet. Die Anwendung erstellt sowohl einen Standard-Sample-Chunk als auch einen LIST-INFO-Chunk mit Text-Tags.',
134
+ },
135
+ ],
136
+ faqTitle: 'Häufig gestellte Fragen',
137
+ faq: [
138
+ {
139
+ question: 'Was sind LOOPSTART- und LOOPEND-Metadaten-Tags?',
140
+ answer: 'LOOPSTART und LOOPEND sind Metadatenfelder, die in absoluten Sample-Anzahlen gemessen werden. Game-Engines springen damit direkt vom Ende zum Anfang zurück.',
141
+ },
142
+ {
143
+ question: 'Warum entstehen hörbare Klicks an Loop-Punkten?',
144
+ answer: 'Klicks entstehen, wenn die Wellenform am Ende nicht mit der Amplitude oder Phase am Anfang übereinstimmt.',
145
+ },
146
+ {
147
+ question: 'Wird meine originale Audiodatei hochgeladen?',
148
+ answer: 'Nein. Die gesamte Verarbeitung erfolgt lokal im Speicher Ihres Browsers.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Audiodatei Laden',
154
+ text: 'Ziehen Sie Ihre Musikdatei per Drag and Drop oder wählen Sie eine WAV-, OGG-, MP3- oder FLAC-Datei aus.',
155
+ },
156
+ {
157
+ name: 'Loop-Marker Positionieren',
158
+ text: 'Nutzen Sie die Wellenformansicht oder die numerische Eingabe zur Feinjustierung der Marker.',
159
+ },
160
+ {
161
+ name: 'An Nulldurchgängen Ausrichten',
162
+ text: 'Klicken Sie auf die Schaltfläche zur Nulldurchgangsausrichtung.',
163
+ },
164
+ {
165
+ name: 'Vorschauen und Exportieren',
166
+ text: 'Hören Sie den nahtlosen Loop an und exportieren Sie die WAV-Datei mit Metadaten.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Spiel Audio Loop Punkt Finder',
174
+ applicationCategory: 'MultimediaApplication',
175
+ operatingSystem: 'Any',
176
+ offers: {
177
+ '@type': 'Offer',
178
+ price: '0',
179
+ priceCurrency: 'EUR',
180
+ },
181
+ },
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'FAQPage',
185
+ mainEntity: [
186
+ {
187
+ '@type': 'Question',
188
+ name: 'Was sind LOOPSTART- und LOOPEND-Metadaten-Tags?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'LOOPSTART und LOOPEND sind Metadatenfelder, die in absoluten Sample-Anzahlen gemessen werden.',
192
+ },
193
+ },
194
+ ],
195
+ },
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'HowTo',
199
+ name: 'So finden und injizieren Sie Audio-Loop-Punkte',
200
+ step: [
201
+ {
202
+ '@type': 'HowToStep',
203
+ name: 'Audiodatei Laden',
204
+ text: 'Ziehen Sie Ihre Musikdatei per Drag and Drop oder wählen Sie eine Audiodatei aus.',
205
+ },
206
+ ],
207
+ },
208
+ ],
209
+ bibliographyTitle: 'Referenzen und Weiterführende Literatur',
210
+ bibliography: bibliographyEntries,
211
+ };
@@ -0,0 +1,211 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { AudioLoopPointFinderUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
6
+ slug: 'audio-loop-point-finder',
7
+ title: 'Game Audio Loop Point Finder and Metadata Injector',
8
+ description: 'Locate precise audio loop points, snap to zero crossings to eliminate clicks, and export WAV files embedded with LOOPSTART and LOOPEND metadata chunks for game engines.',
9
+ ui: {
10
+ title: 'Game Audio Loop Point Finder',
11
+ subtitle: 'Interactive waveform analyzer, zero crossing detector, and WAV loop metadata tagger',
12
+ dropzoneTitle: 'Drop audio file here or click to browse',
13
+ dropzoneSubtitle: 'Supports WAV, OGG, MP3, and FLAC uncompressed or encoded audio tracks',
14
+ dropzoneButton: 'Select Audio File',
15
+ audioInfoTitle: 'Audio Track Properties',
16
+ durationLabel: 'Duration',
17
+ sampleRateLabel: 'Sample Rate',
18
+ channelsLabel: 'Audio Channels',
19
+ totalSamplesLabel: 'Total Sample Count',
20
+ loopControlsTitle: 'Loop Region Configuration',
21
+ loopStartLabel: 'Loop Start Marker',
22
+ loopEndLabel: 'Loop End Marker',
23
+ loopDurationLabel: 'Loop Duration',
24
+ zeroCrossingLabel: 'Zero Crossing Snap',
25
+ snapZeroCrossingButton: 'Snap Markers to Nearest Zero Crossing',
26
+ playLoopButton: 'Preview Seamless Loop',
27
+ pauseLoopButton: 'Pause Playback',
28
+ stopLoopButton: 'Stop Playback',
29
+ exportWavButton: 'Export WAV with Loop Metadata',
30
+ sampleUnitLabel: 'Samples',
31
+ secondUnitLabel: 'Seconds',
32
+ zoomLabel: 'Waveform Zoom',
33
+ zoomInButton: 'Zoom In',
34
+ zoomOutButton: 'Zoom Out',
35
+ resetZoomButton: 'Reset View',
36
+ noFileSelected: 'No audio file loaded yet',
37
+ invalidAudioFile: 'Failed to decode audio file',
38
+ presetsTitle: 'Quick Marker Presets',
39
+ presetFullTrack: 'Full Track Loop',
40
+ presetIntroCut: 'Skip 10% Intro',
41
+ presetMiddleLoop: 'Center 50% Section',
42
+ statusLooping: 'Looping Playback Active',
43
+ statusPaused: 'Playback Paused',
44
+ statusReady: 'Audio Loaded and Ready',
45
+ statusLoaded: 'Audio track loaded successfully',
46
+ statusDecodeError: 'Error decoding audio file',
47
+ statusSnapped: 'Markers snapped to zero-crossing points',
48
+ statusStopped: 'Playback stopped',
49
+ statusExported: 'WAV file exported with embedded loop tags',
50
+ },
51
+ seo: [
52
+ {
53
+ type: 'title',
54
+ level: 2,
55
+ text: 'Seamless Game Audio Looping and Sample Alignment',
56
+ },
57
+ {
58
+ type: 'paragraph',
59
+ html: 'Achieving continuous background audio playback in video games requires exact sample alignment at loop boundaries. Unlike standard media players that simply restart audio playback from the beginning of a file, modern game engines such as Unity, Godot, Unreal Engine, FMOD, and Wwise utilize embedded loop metadata points. By reading standard metadata chunks like LOOPSTART and LOOPEND directly from WAV headers, game engines smoothly wrap playback from the end marker back to the start marker without interrupting the acoustic timeline. Setting loop markers manually without waveform inspection frequently introduces audible pops, phase distortion, or acoustic clicks caused by waveform amplitude discontinuities at the loop point boundary.',
60
+ },
61
+ {
62
+ type: 'stats',
63
+ columns: 4,
64
+ items: [
65
+ { label: 'Sample Rate Precision', value: '44.1 kHz / 48 kHz' },
66
+ { label: 'Zero Crossing Threshold', value: '0.00 Amplitude' },
67
+ { label: 'Metadata Chunk Standard', value: 'RIFF smpl and INFO' },
68
+ { label: 'Click Reduction', value: '100% Phase Matched' },
69
+ ],
70
+ },
71
+ {
72
+ type: 'title',
73
+ level: 2,
74
+ text: 'Finding Natural Zero Crossings',
75
+ },
76
+ {
77
+ type: 'tip',
78
+ title: 'Zero Crossing Strategy for Click Reduction',
79
+ html: 'Always align both loop start and loop end markers at positive-going zero crossing points where the acoustic waveform transitions from negative amplitude values to positive amplitude values. Matching both amplitude zero and waveform slope direction eliminates speaker cone displacement jumps, preventing unwanted analog popping sounds during continuous playback.',
80
+ },
81
+ {
82
+ type: 'title',
83
+ level: 2,
84
+ text: 'Game Engine Metadata Compatibility Breakdown',
85
+ },
86
+ {
87
+ type: 'comparative',
88
+ columns: 2,
89
+ items: [
90
+ {
91
+ title: 'RIFF smpl Chunk Marker',
92
+ description: 'Standard binary sample loop metadata embedded in WAV header',
93
+ points: [
94
+ 'Supported natively by Godot, FMOD, Wwise, and GameMaker',
95
+ 'Provides exact sample frame precision without temporal drift',
96
+ 'Bundles loop cues directly inside a single compact WAV master asset',
97
+ 'Eliminates acoustic phase pops when combined with zero-crossing snap',
98
+ ],
99
+ },
100
+ {
101
+ title: 'Manual Audio Slicing',
102
+ description: 'Cutting intro and loop sections into separate audio file assets',
103
+ points: [
104
+ 'Used by generic basic media players lacking metadata parsing',
105
+ 'Subject to lossy millisecond timing approximations and gaps',
106
+ 'Requires managing multiple audio clip files across project folders',
107
+ 'Presents high risk of phase popping at boundary transition points',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ level: 2,
115
+ text: 'Standard Audio Sample Rate Reference Table',
116
+ },
117
+ {
118
+ type: 'table',
119
+ headers: ['Standard Sample Rate', 'Samples per Second', 'Recommended Usage Domain', 'Time Resolution'],
120
+ rows: [
121
+ ['44,100 Hz', '44,100', 'Standard CD Quality Game Soundtrack', '0.0226 ms per sample'],
122
+ ['48,000 Hz', '48,000', 'Modern Desktop and Console Games', '0.0208 ms per sample'],
123
+ ['96,000 Hz', '96,000', 'High Definition Master Audio Assets', '0.0104 ms per sample'],
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ level: 2,
129
+ text: 'Automated Byte Level Metadata Injection',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'When exporting audio tracks from this utility, new metadata structures are embedded directly into the RIFF header of the output WAV binary file. The utility constructs both a standard sample chunk containing cue point definitions and a LIST INFO chunk with string comment tags. This dual approach provides cross-compatibility across major game frameworks, DAW software, and middleware sound system engines without requiring third party audio editing installations or complex command line tagging procedures.',
134
+ },
135
+ ],
136
+ faqTitle: 'Frequently Asked Questions',
137
+ faq: [
138
+ {
139
+ question: 'What are LOOPSTART and LOOPEND metadata tags?',
140
+ answer: 'LOOPSTART and LOOPEND are embedded metadata fields measured in absolute sample frame count. Game engines use these numerical indices to jump instantly from the loop end position back to the loop start position while skipping intro sections.',
141
+ },
142
+ {
143
+ question: 'Why do audible clicks occur at audio loop points?',
144
+ answer: 'Audible clicks happen when the audio waveform at the loop end marker does not match the acoustic amplitude level or phase slope of the loop start marker. Snapping both markers to zero crossing points fixes phase misalignment.',
145
+ },
146
+ {
147
+ question: 'Is my original audio file modified or uploaded?',
148
+ answer: 'No. All audio decoding, waveform rendering, zero-crossing detection, real-time looping preview, and WAV file header injection take place entirely inside your browser memory without uploading data to external servers.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Load Audio Track',
154
+ text: 'Drag and drop your game music track or click the upload dropzone to select a WAV, OGG, MP3, or FLAC audio file.',
155
+ },
156
+ {
157
+ name: 'Position Loop Markers',
158
+ text: 'Use the interactive waveform view or sample numerical inputs to position the start and end loop markers around your desired music loop region.',
159
+ },
160
+ {
161
+ name: 'Snap to Zero Crossings',
162
+ text: 'Click the snap zero crossing button to automatically align markers to the nearest point where the audio waveform crosses zero amplitude.',
163
+ },
164
+ {
165
+ name: 'Preview and Export',
166
+ text: 'Click preview loop to audition seamless playback, then click export WAV to download the track with embedded loop metadata.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Game Audio Loop Point Finder',
174
+ applicationCategory: 'MultimediaApplication',
175
+ operatingSystem: 'Any',
176
+ offers: {
177
+ '@type': 'Offer',
178
+ price: '0',
179
+ priceCurrency: 'USD',
180
+ },
181
+ },
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'FAQPage',
185
+ mainEntity: [
186
+ {
187
+ '@type': 'Question',
188
+ name: 'What are LOOPSTART and LOOPEND metadata tags?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'LOOPSTART and LOOPEND are embedded metadata fields measured in absolute sample frame count.',
192
+ },
193
+ },
194
+ ],
195
+ },
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'HowTo',
199
+ name: 'How to Find and Inject Audio Loop Points',
200
+ step: [
201
+ {
202
+ '@type': 'HowToStep',
203
+ name: 'Load Audio Track',
204
+ text: 'Drag and drop your game music track or click the upload dropzone to select an audio file.',
205
+ },
206
+ ],
207
+ },
208
+ ],
209
+ bibliographyTitle: 'References and Further Reading',
210
+ bibliography: bibliographyEntries,
211
+ };
@@ -0,0 +1,211 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { AudioLoopPointFinderUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
6
+ slug: 'buscador-puntos-bucle-audio-juegos',
7
+ title: 'Buscador de Puntos de Bucle e Inyector de Metadatos de Audio',
8
+ description: 'Localice puntos exactos de bucle de audio, ajuste a cruces por cero para eliminar clics y exporte archivos WAV con metadatos LOOPSTART y LOOPEND para motores de juegos.',
9
+ ui: {
10
+ title: 'Buscador de Puntos de Bucle de Audio para Juegos',
11
+ subtitle: 'Analizador interactivo de forma de onda, detector de cruce por cero y etiquetador de metadatos WAV',
12
+ dropzoneTitle: 'Arrastre el archivo de audio aquí o haga clic para buscar',
13
+ dropzoneSubtitle: 'Admite pistas de audio WAV, OGG, MP3 y FLAC sin comprimir o codificadas',
14
+ dropzoneButton: 'Seleccionar Archivo de Audio',
15
+ audioInfoTitle: 'Propiedades de la Pista de Audio',
16
+ durationLabel: 'Duración',
17
+ sampleRateLabel: 'Frecuencia de Muestreo',
18
+ channelsLabel: 'Canales de Audio',
19
+ totalSamplesLabel: 'Conteo Total de Muestras',
20
+ loopControlsTitle: 'Configuración de la Región de Bucle',
21
+ loopStartLabel: 'Marcador de Inicio de Bucle',
22
+ loopEndLabel: 'Marcador de Fin de Bucle',
23
+ loopDurationLabel: 'Duración del Bucle',
24
+ zeroCrossingLabel: 'Ajuste de Cruce por Cero',
25
+ snapZeroCrossingButton: 'Ajustar Marcadores al Cruce por Cero Más Cercano',
26
+ playLoopButton: 'Previsualizar Bucle Sin Costuras',
27
+ pauseLoopButton: 'Pausar Reproducción',
28
+ stopLoopButton: 'Detener Reproducción',
29
+ exportWavButton: 'Exportar WAV con Metadatos de Bucle',
30
+ sampleUnitLabel: 'Muestras',
31
+ secondUnitLabel: 'Segundos',
32
+ zoomLabel: 'Zoom de Forma de Onda',
33
+ zoomInButton: 'Acercar',
34
+ zoomOutButton: 'Alejar',
35
+ resetZoomButton: 'Restablecer Vista',
36
+ noFileSelected: 'Aún no se ha cargado ningún archivo de audio',
37
+ invalidAudioFile: 'Error al decodificar el archivo de audio',
38
+ presetsTitle: 'Ajustes Preestablecidos Rápidos',
39
+ presetFullTrack: 'Bucle de Pista Completa',
40
+ presetIntroCut: 'Omitir 10% de Introducción',
41
+ presetMiddleLoop: 'Sección Central 50%',
42
+ statusLooping: 'Reproducción en Bucle Activa',
43
+ statusPaused: 'Reproducción En Pausa',
44
+ statusReady: 'Audio Cargado y Listo',
45
+ statusLoaded: 'Pista de audio cargada correctamente',
46
+ statusDecodeError: 'Error al decodificar el archivo de audio',
47
+ statusSnapped: 'Marcadores ajustados a puntos de cruce por cero',
48
+ statusStopped: 'Reproducción detenida',
49
+ statusExported: 'Archivo WAV exportado con etiquetas de bucle integradas',
50
+ },
51
+ seo: [
52
+ {
53
+ type: 'title',
54
+ level: 2,
55
+ text: 'Bucle de Audio Continuo y Alineación de Muestras en Videojuegos',
56
+ },
57
+ {
58
+ type: 'paragraph',
59
+ html: 'Lograr una reproducción continua de música de fondo en videojuegos requiere una alineación exacta de muestras en los límites del bucle. A diferencia de los reproductores estándar que simplemente reinician la reproducción desde el principio, los motores de videojuegos modernos como Unity, Godot, Unreal Engine, FMOD y Wwise utilizan puntos de metadatos integrados. Al leer bloques de metadatos estándar como LOOPSTART y LOOPEND directamente desde las cabeceras WAV, los motores pasan sin problemas del marcador final al inicial sin interrumpir la línea acústica. Establecer marcadores manualmente sin inspeccionar la forma de onda introduce chasquidos audibles o distorsiones de fase.',
60
+ },
61
+ {
62
+ type: 'stats',
63
+ columns: 4,
64
+ items: [
65
+ { label: 'Precisión de Muestreo', value: '44.1 kHz / 48 kHz' },
66
+ { label: 'Umbral de Cruce por Cero', value: 'Amplitud 0.00' },
67
+ { label: 'Estándar de Metadatos', value: 'RIFF smpl e INFO' },
68
+ { label: 'Reducción de Clics', value: '100% Fase Alineada' },
69
+ ],
70
+ },
71
+ {
72
+ type: 'title',
73
+ level: 2,
74
+ text: 'Búsqueda de Cruces por Cero Naturales',
75
+ },
76
+ {
77
+ type: 'tip',
78
+ title: 'Estrategia de Cruce por Cero para Eliminación de Clics',
79
+ html: 'Alinee siempre los marcadores de inicio y fin de bucle en puntos de cruce por cero con pendiente positiva donde la forma de onda acústica pasa de valores de amplitud negativos a positivos. Coincidir tanto la amplitud cero como la dirección de pendiente evita desplazamientos bruscos del altavoz.',
80
+ },
81
+ {
82
+ type: 'title',
83
+ level: 2,
84
+ text: 'Desglose de Compatibilidad de Metadatos en Motores de Juegos',
85
+ },
86
+ {
87
+ type: 'comparative',
88
+ columns: 2,
89
+ items: [
90
+ {
91
+ title: 'Marcador de Bloque RIFF smpl',
92
+ description: 'Metadatos binarios estándar integrados en la cabecera WAV',
93
+ points: [
94
+ 'Compatible nativamente con Godot, FMOD, Wwise y GameMaker',
95
+ 'Proporciona precisión exacta por muestra sin deriva temporal',
96
+ 'Empaqueta las marcas de bucle dentro del propio archivo WAV',
97
+ 'Elimina chasquidos acústicos junto con el ajuste por cero',
98
+ ],
99
+ },
100
+ {
101
+ title: 'Corte Manual de Audio',
102
+ description: 'Dividir introducción y bucle en archivos separados',
103
+ points: [
104
+ 'Utilizado por reproductores básicos sin lectura de metadatos',
105
+ 'Sujeto a aproximaciones en milisegundos con pérdidas y pausas',
106
+ 'Requiere gestionar múltiples archivos de audio en el proyecto',
107
+ 'Presenta un alto riesgo de clics en las transiciones',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ level: 2,
115
+ text: 'Tabla de Referencia de Frecuencias de Muestreo Estándar',
116
+ },
117
+ {
118
+ type: 'table',
119
+ headers: ['Frecuencia Estándar', 'Muestras por Segundo', 'Dominio de Uso Recomendado', 'Resolución Temporal'],
120
+ rows: [
121
+ ['44,100 Hz', '44,100', 'Banda Sonora Estándar de Juegos en CD', '0.0226 ms por muestra'],
122
+ ['48,000 Hz', '48,000', 'Juegos Modernos de Escritorio y Consolas', '0.0208 ms por muestra'],
123
+ ['96,000 Hz', '96,000', 'Archivos de Audio Maestro de Alta Definición', '0.0104 ms por muestra'],
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ level: 2,
129
+ text: 'Inyección Automatizada de Metadatos a Nivel de Bytes',
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Al exportar pistas de audio desde esta utilidad, las nuevas estructuras de metadatos se incrustan directamente en la cabecera RIFF del archivo binario WAV de salida. La herramienta construye tanto un bloque de muestra estándar como un bloque LIST INFO con etiquetas de comentarios de texto. Este enfoque proporciona compatibilidad total entre motores de juego y DAW.',
134
+ },
135
+ ],
136
+ faqTitle: 'Preguntas Frecuentes',
137
+ faq: [
138
+ {
139
+ question: '¿Qué son las etiquetas de metadatos LOOPSTART y LOOPEND?',
140
+ answer: 'LOOPSTART y LOOPEND son campos de metadatos medidos en número absoluto de muestras. Los motores de juegos usan estos índices para saltar instantáneamente desde la posición final del bucle de regreso a la posición inicial.',
141
+ },
142
+ {
143
+ question: '¿Por qué ocurren clics audibles en los puntos de bucle?',
144
+ answer: 'Los clics ocurren cuando la forma de onda en el marcador final no coincide con el nivel de amplitud o pendiente de fase del marcador inicial. Ajustar los marcadores a puntos de cruce por cero soluciona este problema.',
145
+ },
146
+ {
147
+ question: '¿Se modifica o sube mi archivo de audio original?',
148
+ answer: 'No. Todo el procesamiento, la decodificación, la detección de cruces por cero y la exportación ocurren localmente en la memoria del navegador.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Cargar Pista de Audio',
154
+ text: 'Arrastre y suelte su pista de música o busque un archivo WAV, OGG, MP3 o FLAC.',
155
+ },
156
+ {
157
+ name: 'Posicionar Marcadores de Bucle',
158
+ text: 'Ajuste la posición de inicio y fin mediante la vista interactiva o las entradas numéricas de muestras.',
159
+ },
160
+ {
161
+ name: 'Ajustar a Cruces por Cero',
162
+ text: 'Haga clic en el botón de ajuste a cruce por cero para alinear los marcadores automáticamente.',
163
+ },
164
+ {
165
+ name: 'Previsualizar y Exportar',
166
+ text: 'Escuche la reproducción fluida y exporte el archivo WAV con metadatos incrustados.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Buscador de Puntos de Bucle de Audio para Juegos',
174
+ applicationCategory: 'MultimediaApplication',
175
+ operatingSystem: 'Any',
176
+ offers: {
177
+ '@type': 'Offer',
178
+ price: '0',
179
+ priceCurrency: 'EUR',
180
+ },
181
+ },
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'FAQPage',
185
+ mainEntity: [
186
+ {
187
+ '@type': 'Question',
188
+ name: '¿Qué son las etiquetas de metadatos LOOPSTART y LOOPEND?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'LOOPSTART y LOOPEND son campos de metadatos medidos en número absoluto de muestras.',
192
+ },
193
+ },
194
+ ],
195
+ },
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'HowTo',
199
+ name: 'Cómo Buscar e Inyectar Puntos de Bucle de Audio',
200
+ step: [
201
+ {
202
+ '@type': 'HowToStep',
203
+ name: 'Cargar Pista de Audio',
204
+ text: 'Arrastre y suelte su pista de música o busque un archivo de audio.',
205
+ },
206
+ ],
207
+ },
208
+ ],
209
+ bibliographyTitle: 'Referencias y Lecturas Adicionales',
210
+ bibliography: bibliographyEntries,
211
+ };