@jjlmoya/utils-games-development 1.54.0 → 1.56.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 (65) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +7 -1
  3. package/src/index.ts +2 -0
  4. package/src/tests/contrast_legibility.test.ts +291 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/itchioGameTester/itchio-game-tester.css +3 -3
  8. package/src/tool/localizationSanitizer/localization-sanitizer.css +17 -15
  9. package/src/tool/pixelArtPaletteSwapper/app-client.ts +229 -0
  10. package/src/tool/pixelArtPaletteSwapper/bibliography.astro +6 -0
  11. package/src/tool/pixelArtPaletteSwapper/bibliography.ts +16 -0
  12. package/src/tool/pixelArtPaletteSwapper/component.astro +153 -0
  13. package/src/tool/pixelArtPaletteSwapper/entry.ts +28 -0
  14. package/src/tool/pixelArtPaletteSwapper/i18n/de.ts +233 -0
  15. package/src/tool/pixelArtPaletteSwapper/i18n/en.ts +233 -0
  16. package/src/tool/pixelArtPaletteSwapper/i18n/es.ts +233 -0
  17. package/src/tool/pixelArtPaletteSwapper/i18n/fr.ts +233 -0
  18. package/src/tool/pixelArtPaletteSwapper/i18n/id.ts +233 -0
  19. package/src/tool/pixelArtPaletteSwapper/i18n/it.ts +233 -0
  20. package/src/tool/pixelArtPaletteSwapper/i18n/ja.ts +225 -0
  21. package/src/tool/pixelArtPaletteSwapper/i18n/ko.ts +225 -0
  22. package/src/tool/pixelArtPaletteSwapper/i18n/nl.ts +233 -0
  23. package/src/tool/pixelArtPaletteSwapper/i18n/pl.ts +233 -0
  24. package/src/tool/pixelArtPaletteSwapper/i18n/pt.ts +233 -0
  25. package/src/tool/pixelArtPaletteSwapper/i18n/ru.ts +233 -0
  26. package/src/tool/pixelArtPaletteSwapper/i18n/sv.ts +233 -0
  27. package/src/tool/pixelArtPaletteSwapper/i18n/tr.ts +233 -0
  28. package/src/tool/pixelArtPaletteSwapper/i18n/zh.ts +225 -0
  29. package/src/tool/pixelArtPaletteSwapper/index.ts +12 -0
  30. package/src/tool/pixelArtPaletteSwapper/logic.test.ts +43 -0
  31. package/src/tool/pixelArtPaletteSwapper/logic.ts +171 -0
  32. package/src/tool/pixelArtPaletteSwapper/pixel-art-palette-swapper.css +728 -0
  33. package/src/tool/pixelArtPaletteSwapper/seo.astro +15 -0
  34. package/src/tool/pixelArtPaletteSwapper/ui.ts +35 -0
  35. package/src/tool/retroSfxGenerator/bibliography.astro +6 -0
  36. package/src/tool/retroSfxGenerator/bibliography.ts +16 -0
  37. package/src/tool/retroSfxGenerator/client.ts +263 -0
  38. package/src/tool/retroSfxGenerator/component.astro +146 -0
  39. package/src/tool/retroSfxGenerator/entry.ts +27 -0
  40. package/src/tool/retroSfxGenerator/i18n/de.ts +211 -0
  41. package/src/tool/retroSfxGenerator/i18n/en.ts +224 -0
  42. package/src/tool/retroSfxGenerator/i18n/es.ts +211 -0
  43. package/src/tool/retroSfxGenerator/i18n/fr.ts +211 -0
  44. package/src/tool/retroSfxGenerator/i18n/id.ts +211 -0
  45. package/src/tool/retroSfxGenerator/i18n/it.ts +211 -0
  46. package/src/tool/retroSfxGenerator/i18n/ja.ts +211 -0
  47. package/src/tool/retroSfxGenerator/i18n/ko.ts +211 -0
  48. package/src/tool/retroSfxGenerator/i18n/nl.ts +211 -0
  49. package/src/tool/retroSfxGenerator/i18n/pl.ts +211 -0
  50. package/src/tool/retroSfxGenerator/i18n/pt.ts +211 -0
  51. package/src/tool/retroSfxGenerator/i18n/ru.ts +211 -0
  52. package/src/tool/retroSfxGenerator/i18n/sv.ts +211 -0
  53. package/src/tool/retroSfxGenerator/i18n/tr.ts +211 -0
  54. package/src/tool/retroSfxGenerator/i18n/zh.ts +211 -0
  55. package/src/tool/retroSfxGenerator/index.ts +11 -0
  56. package/src/tool/retroSfxGenerator/logic.test.ts +61 -0
  57. package/src/tool/retroSfxGenerator/logic.ts +214 -0
  58. package/src/tool/retroSfxGenerator/retro-sfx-generator.css +435 -0
  59. package/src/tool/retroSfxGenerator/seo.astro +15 -0
  60. package/src/tool/retroSfxGenerator/ui.ts +41 -0
  61. package/src/tool/saveFileEditor/game-save-file-editor.css +5 -5
  62. package/src/tool/spriteSheetPacker/sprite-sheet-packer.css +5 -5
  63. package/src/tool/steamBbcodeTranslator/steam-bbcode-translator.css +8 -8
  64. package/src/tool/steamCapsuleGenerator/steam-capsule-generator.css +6 -6
  65. package/src/tools.ts +4 -0
@@ -0,0 +1,211 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { RetroSfxGeneratorUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<RetroSfxGeneratorUI> = {
6
+ slug: 'retro-soundeffekt-generator',
7
+ title: 'Retro Soundeffekt Generator fuer Spiele',
8
+ description: 'Erstellen Sie kurze Retro-Spielsoundeffekte im Browser mit Vorlagen, Wellenformsteuerung, Oszilloskop und WAV-Export.',
9
+ ui: {
10
+ waveformLabel: 'Wellenform',
11
+ waveformSquare: 'Rechteck',
12
+ waveformSawtooth: 'Saegezahn',
13
+ waveformSine: 'Sinus',
14
+ waveformTriangle: 'Dreieck',
15
+ waveformNoise: 'Rauschen',
16
+ presetLabel: 'Schnell-Soundbank',
17
+ presetExplosion: 'Explosion',
18
+ presetLaser: 'Laser',
19
+ presetJump: 'Sprung',
20
+ presetCoin: 'Muenze',
21
+ presetPowerUp: 'Power-up',
22
+ frequencyLabel: 'Startfrequenz',
23
+ frequencyEndLabel: 'Endfrequenz',
24
+ durationLabel: 'Laenge',
25
+ decayLabel: 'Ablauf',
26
+ sweepLabel: 'Tonhoehen-Sweep',
27
+ vibratoLabel: 'Vibrato',
28
+ lowpassLabel: 'Tiefpass',
29
+ highpassLabel: 'Hochpass',
30
+ noiseMixLabel: 'Rausch-Mix',
31
+ toneSection: 'Ton',
32
+ dynamicsSection: 'Dynamik',
33
+ filterSection: 'Textur',
34
+ playButton: 'Sound abspielen',
35
+ stopButton: 'Stopp',
36
+ downloadButton: 'WAV herunterladen',
37
+ randomizeButton: 'Zufall',
38
+ resetButton: 'Zuruecksetzen',
39
+ waveformPreviewLabel: 'Echtzeit-Wellenform',
40
+ generatedLabel: 'Generiert',
41
+ statusReady: 'Bereit zum Anhoeren',
42
+ statusPlaying: 'Wird im Browser abgespielt',
43
+ statusStopped: 'Wiedergabe gestoppt',
44
+ statusDownloaded: 'WAV heruntergeladen',
45
+ statusAudioBlocked: 'Wiedergabe erfordert ein audiofaehiges Browser-Tab',
46
+ statusGenerating: 'Sound wird gerendert',
47
+ presetHint: 'Waehlen Sie einen Startpunkt und formen Sie das Signal mit den Reglern.',
48
+ monoWavHint: '44.1 kHz · 16-Bit Mono-WAV',
49
+ },
50
+ seo: [
51
+ {
52
+ type: 'title',
53
+ level: 2,
54
+ text: 'Erstellen Sie Game-Audio waehrend eines Jams direkt im Browser',
55
+ },
56
+ {
57
+ type: 'paragraph',
58
+ html: 'Ein guter Spielsoundeffekt muss eine Aktion sofort vermitteln. Ein ansteigender Ton signalisiert einen Sprung oder ein Power-up, waehrend ein abfallender Sweep einen Laser darstellt. Dieser Generator verwandelt Arcade-Muster in bearbeitbare Audiosignale.',
59
+ },
60
+ {
61
+ type: 'stats',
62
+ columns: 4,
63
+ items: [
64
+ { label: 'Sound-Presets', value: '5 Startmuster' },
65
+ { label: 'Oszillatoren', value: '5 Wellenformen' },
66
+ { label: 'Exportformat', value: '16-Bit PCM WAV' },
67
+ { label: 'Verarbeitung', value: 'Im Browser' },
68
+ ],
69
+ },
70
+ {
71
+ type: 'title',
72
+ level: 2,
73
+ text: 'Was die Regler steuern',
74
+ },
75
+ {
76
+ type: 'comparative',
77
+ columns: 2,
78
+ items: [
79
+ {
80
+ title: 'Tonhoehe und Bewegung',
81
+ description: 'Die Tonregler bestimmen die Identitaet des Sounds.',
82
+ points: [
83
+ 'Die Startfrequenz legt die Anfangstonhoehe fest',
84
+ 'Der Sweep bewegt die Frequenz zum Endwert',
85
+ 'Vibrato fuegt periodische Schwankungen hinzu',
86
+ 'Wellenformen erzeugen unterschiedliche Klangfarben',
87
+ ],
88
+ },
89
+ {
90
+ title: 'Form und Textur',
91
+ description: 'Dynamik- und Filterregler bestimmen das Ausklingen.',
92
+ points: [
93
+ 'Die Laenge bestimmt die Gesamtdauer des Effekts',
94
+ 'Decay steuert das Abklingen der Amplitude',
95
+ 'Tiefpassfilter daempfen hohe Frequenzen',
96
+ 'Hochpassfilter entfernen tiefe Frequenzen',
97
+ ],
98
+ },
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'Praktische Rezepte fuer Spielevent-Sounds',
105
+ },
106
+ {
107
+ type: 'table',
108
+ headers: ['Event', 'Nützliches Preset', 'Erster Anpassungsschritt'],
109
+ rows: [
110
+ ['Explosion', 'Rauschen mit tiefer Frequenz', 'Laenge erhoehen und Tiefpass senken fuer mehr Druck'],
111
+ ['Laser', 'Saegezahn mit abfallendem Sweep', 'Dauer verkuerzen fuer schaerferen Anschlag'],
112
+ ['Sprung', 'Rechteck mit ansteigendem Sweep', 'Decay verringern, um Aufwaertsbegegung klarer zu hoeren'],
113
+ ['Muenze', 'Rechteck mit kurzem Anstieg', 'Startfrequenz erhoehen fuer hellen Aufklaub-Sound'],
114
+ ['Power-up', 'Dreieck mit langem Anstieg', 'Vibrato hinzufuegen fuer dynamischen Klang'],
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ level: 2,
120
+ text: 'Warum WAV das ideale Jam-Format ist',
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'WAV ist ein universelles Format fuer Prototypen, da es von allen gängigen Game-Engines unterstützt wird. Die Datei wird lokal ohne Serververbindung erzeugt.',
125
+ },
126
+ {
127
+ type: 'tip',
128
+ title: 'Bei gewuenschter Lautstaerke testen',
129
+ html: 'Ein einzeln spektakulaerer Sound kann im Spiel anstrengend wirken. Testen Sie den Sound direkt im Spielkontext.',
130
+ },
131
+ ],
132
+ faqTitle: 'Haeufig gestellte Fragen',
133
+ faq: [
134
+ {
135
+ question: 'Werden meine Sounds hochgeladen?',
136
+ answer: 'Nein. Synthese und WAV-Kodierung erfolgen vollstaendig im Browser.',
137
+ },
138
+ {
139
+ question: 'Kann ich die Sounds kommerziell nutzen?',
140
+ answer: 'Die Audiodateien sind fuer Prototypen und Game Jams gedacht.',
141
+ },
142
+ {
143
+ question: 'Wie funktioniert der Tonhoehen-Sweep?',
144
+ answer: 'Der Regler errechnet proportional die Endfrequenz ausgehend vom Startton.',
145
+ },
146
+ {
147
+ question: 'Was tun bei fehlender Audioausgabe?',
148
+ answer: 'Pruefen Sie die Browsereinstellungen fuer Soundwiedergabe.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Preset waehlen',
154
+ text: 'Waehlen Sie Explosion, Laser, Sprung, Muenze oder Power-up.',
155
+ },
156
+ {
157
+ name: 'Signal formen',
158
+ text: 'Passen Sie Wellenform, Tonhoehe, Dauer und Filter an.',
159
+ },
160
+ {
161
+ name: 'Sound testen',
162
+ text: 'Klicken Sie auf Sound abspielen fuer eine Live-Hörprobe.',
163
+ },
164
+ {
165
+ name: 'WAV herunterladen',
166
+ text: 'Klicken Sie auf WAV herunterladen, um die Datei zu speichern.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Retro Soundeffekt Generator fuer Spiele',
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: 'Werden meine Sounds hochgeladen?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'Nein. Synthese und WAV-Kodierung erfolgen vollstaendig im Browser.',
192
+ },
193
+ },
194
+ ],
195
+ },
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'HowTo',
199
+ name: 'Erstellen eines Retro-Spielsoundeffekts',
200
+ step: [
201
+ {
202
+ '@type': 'HowToStep',
203
+ name: 'Preset waehlen',
204
+ text: 'Waehlen Sie ein Sound-Preset.',
205
+ },
206
+ ],
207
+ },
208
+ ],
209
+ bibliographyTitle: 'Referenzen',
210
+ bibliography: bibliographyEntries,
211
+ };
@@ -0,0 +1,224 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { RetroSfxGeneratorUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<RetroSfxGeneratorUI> = {
6
+ slug: 'retro-sfx-generator',
7
+ title: 'Retro Sound Effect Generator for Games',
8
+ description: 'Create short retro game sound effects in your browser with instant presets, waveform controls, a live oscilloscope, and one-click WAV export.',
9
+ ui: {
10
+ waveformLabel: 'Waveform',
11
+ waveformSquare: 'Square',
12
+ waveformSawtooth: 'Sawtooth',
13
+ waveformSine: 'Sine',
14
+ waveformTriangle: 'Triangle',
15
+ waveformNoise: 'Noise',
16
+ presetLabel: 'Quick sound bank',
17
+ presetExplosion: 'Explosion',
18
+ presetLaser: 'Laser',
19
+ presetJump: 'Jump',
20
+ presetCoin: 'Coin',
21
+ presetPowerUp: 'Power-up',
22
+ frequencyLabel: 'Start frequency',
23
+ frequencyEndLabel: 'End frequency',
24
+ durationLabel: 'Length',
25
+ decayLabel: 'Decay',
26
+ sweepLabel: 'Pitch sweep',
27
+ vibratoLabel: 'Vibrato',
28
+ lowpassLabel: 'Low-pass',
29
+ highpassLabel: 'High-pass',
30
+ noiseMixLabel: 'Noise mix',
31
+ toneSection: 'Tone',
32
+ dynamicsSection: 'Dynamics',
33
+ filterSection: 'Texture',
34
+ playButton: 'Play sound',
35
+ stopButton: 'Stop',
36
+ downloadButton: 'Download WAV',
37
+ randomizeButton: 'Randomize',
38
+ resetButton: 'Reset',
39
+ waveformPreviewLabel: 'Live waveform',
40
+ generatedLabel: 'Generated',
41
+ statusReady: 'Ready to audition',
42
+ statusPlaying: 'Playing in your browser',
43
+ statusStopped: 'Playback stopped',
44
+ statusDownloaded: 'WAV downloaded',
45
+ statusAudioBlocked: 'Playback needs an audio-enabled browser tab',
46
+ statusGenerating: 'Rendering sound',
47
+ presetHint: 'Choose a starting point, then shape the signal with the controls below.',
48
+ monoWavHint: '44.1 kHz · 16-bit mono WAV',
49
+ },
50
+ seo: [
51
+ {
52
+ type: 'title',
53
+ level: 2,
54
+ text: 'Make Game Audio During a Jam Without Leaving the Browser',
55
+ },
56
+ {
57
+ type: 'paragraph',
58
+ html: 'A good game sound effect needs to communicate an action quickly. A bright pitch rise can read as a jump or power-up, a fast downward sweep can feel like a laser or falling object, and a noisy decaying burst can suggest an explosion. This generator turns those familiar arcade patterns into editable browser audio. Pick a preset, listen immediately, and adjust the signal while the waveform preview shows how the sound changes over time.',
59
+ },
60
+ {
61
+ type: 'stats',
62
+ columns: 4,
63
+ items: [
64
+ { label: 'Sound presets', value: '5 starting patterns' },
65
+ { label: 'Oscillator choices', value: '5 waveform shapes' },
66
+ { label: 'Export format', value: '16-bit PCM WAV' },
67
+ { label: 'Processing', value: 'Browser-based' },
68
+ ],
69
+ },
70
+ {
71
+ type: 'title',
72
+ level: 2,
73
+ text: 'What the Controls Change',
74
+ },
75
+ {
76
+ type: 'comparative',
77
+ columns: 2,
78
+ items: [
79
+ {
80
+ title: 'Pitch and movement',
81
+ description: 'The tone controls define the identity of the sound.',
82
+ points: [
83
+ 'Start frequency sets the initial pitch of the oscillator',
84
+ 'Pitch sweep moves toward a calculated end frequency',
85
+ 'Vibrato adds a gentle periodic pitch movement',
86
+ 'Square, sawtooth, sine, triangle, and noise create different harmonic textures',
87
+ ],
88
+ },
89
+ {
90
+ title: 'Shape and texture',
91
+ description: 'The dynamics and texture controls define how the sound lands.',
92
+ points: [
93
+ 'Length controls the time available for the effect to speak',
94
+ 'Decay makes the amplitude fall away faster or more gradually',
95
+ 'Low-pass filtering softens bright high frequencies',
96
+ 'High-pass filtering removes some low-frequency weight and noise mix adds grit',
97
+ ],
98
+ },
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'A Practical Recipe for Common Game Events',
105
+ },
106
+ {
107
+ type: 'table',
108
+ headers: ['Event', 'Useful starting point', 'First adjustment to try'],
109
+ rows: [
110
+ ['Explosion', 'Noise with a low pitch', 'Increase length and lower the low-pass filter for a heavier burst'],
111
+ ['Laser', 'Sawtooth with a falling sweep', 'Shorten the length and raise the high-pass filter for a sharper attack'],
112
+ ['Jump', 'Square with a rising sweep', 'Reduce decay to keep the upward motion audible'],
113
+ ['Coin', 'Square with a short rising sweep', 'Raise the start frequency for a brighter pickup sound'],
114
+ ['Power-up', 'Triangle with a long rising sweep', 'Add a little vibrato for a more animated result'],
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ level: 2,
120
+ text: 'Why WAV Is a Useful Jam Export',
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'WAV is a practical handoff format for a prototype because it is easy to import into common game engines, audio editors, and asset pipelines without requiring a particular compression library. This tool writes a small mono PCM WAV file in memory and downloads it directly. The generated file is intentionally short and uncompressed; after the game loop works, you can decide whether the final build should use a compressed format such as Ogg Vorbis or another platform-specific asset format.',
125
+ },
126
+ {
127
+ type: 'tip',
128
+ title: 'Listen at the intended game volume',
129
+ html: 'A sound that feels exciting in isolation can become tiring when triggered many times per second. Test the downloaded WAV in the game, leave headroom for music and ambience, and keep repeated UI or pickup sounds short enough that they do not smear into one another.',
130
+ },
131
+ ],
132
+ faqTitle: 'Frequently Asked Questions',
133
+ faq: [
134
+ {
135
+ question: 'Does the generator upload my sounds?',
136
+ answer: 'No. The synthesis, preview, and WAV encoding happen in the browser session. Nothing needs to be sent to a server to create or download the file.',
137
+ },
138
+ {
139
+ question: 'Can I use the downloaded sounds in my game?',
140
+ answer: 'The generated audio is designed as a starting asset for prototypes and game-jam projects. Check the rules of your project or event, and review the final sound in the context of your own game before shipping.',
141
+ },
142
+ {
143
+ question: 'Why does the pitch sweep change the end frequency?',
144
+ answer: 'The sweep slider maps a negative value to a falling frequency and a positive value to a rising frequency. The interface recalculates the end frequency from the starting pitch so the motion remains proportional when you retune a sound.',
145
+ },
146
+ {
147
+ question: 'What should I do if there is no sound?',
148
+ answer: 'Make sure the browser tab is allowed to play audio and click Play sound again. Browsers commonly require a user gesture before an audio context can start.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Choose a sound pattern',
154
+ text: 'Select Explosion, Laser, Jump, Coin, or Power-up from the quick sound bank.',
155
+ },
156
+ {
157
+ name: 'Shape the signal',
158
+ text: 'Adjust the waveform, pitch, sweep, length, decay, vibrato, and texture sliders while watching the live waveform.',
159
+ },
160
+ {
161
+ name: 'Audition the result',
162
+ text: 'Click Play sound to hear the current parameters through the browser audio output.',
163
+ },
164
+ {
165
+ name: 'Download a WAV',
166
+ text: 'Click Download WAV to save the current sound as a 44.1 kHz, 16-bit mono PCM file for your prototype.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Retro Sound Effect Generator for Games',
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: 'Does the generator upload my sounds?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'No. The synthesis, preview, and WAV encoding happen in the browser session.',
192
+ },
193
+ },
194
+ {
195
+ '@type': 'Question',
196
+ name: 'Can I use the downloaded sounds in my game?',
197
+ acceptedAnswer: {
198
+ '@type': 'Answer',
199
+ text: 'The generated audio is designed as a starting asset for prototypes and game-jam projects.',
200
+ },
201
+ },
202
+ ],
203
+ },
204
+ {
205
+ '@context': 'https://schema.org',
206
+ '@type': 'HowTo',
207
+ name: 'How to create a retro game sound effect',
208
+ step: [
209
+ {
210
+ '@type': 'HowToStep',
211
+ name: 'Choose a sound pattern',
212
+ text: 'Select a quick sound bank preset.',
213
+ },
214
+ {
215
+ '@type': 'HowToStep',
216
+ name: 'Shape and export',
217
+ text: 'Adjust the controls, preview the result, and download a WAV file.',
218
+ },
219
+ ],
220
+ },
221
+ ],
222
+ bibliographyTitle: 'References and Further Reading',
223
+ bibliography: bibliographyEntries,
224
+ };
@@ -0,0 +1,211 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { RetroSfxGeneratorUI } from '../ui';
3
+ import { bibliographyEntries } from '../bibliography';
4
+
5
+ export const content: ToolLocaleContent<RetroSfxGeneratorUI> = {
6
+ slug: 'generador-efectos-sonido-retro',
7
+ title: 'Generador de Efectos de Sonido Retro para Juegos',
8
+ description: 'Crea efectos de sonido retro cortos para juegos en tu navegador con preajustes inmediatos, controles de onda, osciloscopio en vivo y exportacion WAV.',
9
+ ui: {
10
+ waveformLabel: 'Forma de onda',
11
+ waveformSquare: 'Cuadrada',
12
+ waveformSawtooth: 'Diente de sierra',
13
+ waveformSine: 'Senoidal',
14
+ waveformTriangle: 'Triangular',
15
+ waveformNoise: 'Ruido',
16
+ presetLabel: 'Banco de sonidos rapidos',
17
+ presetExplosion: 'Explosion',
18
+ presetLaser: 'Laser',
19
+ presetJump: 'Salto',
20
+ presetCoin: 'Moneda',
21
+ presetPowerUp: 'Potenciador',
22
+ frequencyLabel: 'Frecuencia inicial',
23
+ frequencyEndLabel: 'Frecuencia final',
24
+ durationLabel: 'Duracion',
25
+ decayLabel: 'Decaimiento',
26
+ sweepLabel: 'Barrido de tono',
27
+ vibratoLabel: 'Vibrato',
28
+ lowpassLabel: 'Paso bajo',
29
+ highpassLabel: 'Paso alto',
30
+ noiseMixLabel: 'Mezcla de ruido',
31
+ toneSection: 'Tono',
32
+ dynamicsSection: 'Dinamica',
33
+ filterSection: 'Textura',
34
+ playButton: 'Reproducir sonido',
35
+ stopButton: 'Detener',
36
+ downloadButton: 'Descargar WAV',
37
+ randomizeButton: 'Aleatorio',
38
+ resetButton: 'Restablecer',
39
+ waveformPreviewLabel: 'Forma de onda en vivo',
40
+ generatedLabel: 'Generado',
41
+ statusReady: 'Listo para escuchar',
42
+ statusPlaying: 'Reproduciendo en tu navegador',
43
+ statusStopped: 'Reproduccion detenida',
44
+ statusDownloaded: 'WAV descargado',
45
+ statusAudioBlocked: 'La reproduccion requiere una pestana de navegador con audio habilitado',
46
+ statusGenerating: 'Renderizando sonido',
47
+ presetHint: 'Elige un punto de partida y luego moldea la senal con los controles inferiores.',
48
+ monoWavHint: '44.1 kHz · WAV mono de 16 bits',
49
+ },
50
+ seo: [
51
+ {
52
+ type: 'title',
53
+ level: 2,
54
+ text: 'Crea audio para juegos en una Game Jam sin salir del navegador',
55
+ },
56
+ {
57
+ type: 'paragraph',
58
+ html: 'Un buen efecto de sonido para juegos debe comunicar una accion de forma inmediata. Una subida de tono brillante evoca un salto o un potenciador, un barrido descendente rapido sugiere un laser o un objeto al caer, y una ráfaga ruidosa con decaimiento simula una explosion. Este generador convierte estos patrones arcade en audio editable en el navegador. Selecciona un preajuste, escucha al instante y ajusta la senal observando la vista previa de la onda.',
59
+ },
60
+ {
61
+ type: 'stats',
62
+ columns: 4,
63
+ items: [
64
+ { label: 'Preajustes de sonido', value: '5 patrones iniciales' },
65
+ { label: 'Opciones de oscilador', value: '5 formas de onda' },
66
+ { label: 'Formato de exportacion', value: 'WAV PCM de 16 bits' },
67
+ { label: 'Procesamiento', value: 'En navegador' },
68
+ ],
69
+ },
70
+ {
71
+ type: 'title',
72
+ level: 2,
73
+ text: 'Que modifica cada control',
74
+ },
75
+ {
76
+ type: 'comparative',
77
+ columns: 2,
78
+ items: [
79
+ {
80
+ title: 'Tono y movimiento',
81
+ description: 'Los controles de tono definen la identidad del sonido.',
82
+ points: [
83
+ 'La frecuencia inicial define el tono de partida del oscilador',
84
+ 'El barrido de tono desplaza la frecuencia hacia un valor final calculado',
85
+ 'El vibrato añade una fluctuacion periodica de tono suave',
86
+ 'Las ondas cuadrada, diente de sierra, senoidal, triangular y ruido crean texturas armónicas distintas',
87
+ ],
88
+ },
89
+ {
90
+ title: 'Forma y textura',
91
+ description: 'Los controles de dinamica y textura determinan como finaliza el sonido.',
92
+ points: [
93
+ 'La duracion controla el tiempo total de emision del efecto',
94
+ 'El decaimiento hace que la amplitud disminuya mas rapido o de forma gradual',
95
+ 'El filtro paso bajo suaviza frecuencias altas agudas',
96
+ 'El filtro paso alto elimina frecuencias graves y la mezcla de ruido aporta textura rugosa',
97
+ ],
98
+ },
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'Receta practica para eventos habituales de juego',
105
+ },
106
+ {
107
+ type: 'table',
108
+ headers: ['Evento', 'Punto de partida util', 'Primer ajuste recomendado'],
109
+ rows: [
110
+ ['Explosion', 'Ruido con tono bajo', 'Aumentar la duracion y bajar el filtro paso bajo para una ráfaga mas pesada'],
111
+ ['Laser', 'Diente de sierra con barrido descendente', 'Acortar la duracion y subir el filtro paso alto para un ataque mas afilado'],
112
+ ['Salto', 'Cuadrada con barrido ascendente', 'Reducir el decaimiento para mantener audible la subida de tono'],
113
+ ['Moneda', 'Cuadrada con barrido ascendente corto', 'Elevar la frecuencia inicial para obtener un sonido de recogida brillante'],
114
+ ['Potenciador', 'Triangular con barrido ascendente largo', 'Añadir un poco de vibrato para dar mas movimiento'],
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
+ level: 2,
120
+ text: 'Por que WAV es un formato util en jams',
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'El formato WAV es ideal para prototipos porque se importa facilmente en motores de videojuegos, editores de audio y pipelines sin requerir librerias de descompresion especificas. Esta herramienta genera un archivo WAV PCM mono de 16 bits en memoria y lo descarga directamente. El archivo generado es corto y sin compresion; una vez probado en el juego, se puede convertir a formatos comprimidos como Ogg Vorbis.',
125
+ },
126
+ {
127
+ type: 'tip',
128
+ title: 'Escucha al volumen real del juego',
129
+ html: 'Un sonido impresionante en solitario puede resultar fatigante si se activa repetidamente por segundo. Pruebalo dentro del motor del juego y deja suficiente margen dinamico para la musica.',
130
+ },
131
+ ],
132
+ faqTitle: 'Preguntas frecuentes',
133
+ faq: [
134
+ {
135
+ question: '¿El generador sube mis sonidos a un servidor?',
136
+ answer: 'No. La sintesis, la vista previa y la codificacion WAV se realizan integramente en el navegador.',
137
+ },
138
+ {
139
+ question: '¿Puedo usar los sonidos descargados en mi juego comercial?',
140
+ answer: 'El audio generado esta pensado como recurso inicial para prototipos y proyectos de game jams. Revisa las reglas de tu proyecto antes de la publicacion final.',
141
+ },
142
+ {
143
+ question: '¿Por que el barrido de tono cambia la frecuencia final?',
144
+ answer: 'El control deslizante asigna valores negativos a barridos descendentes y positivos a ascendentes, calculando de forma proporcional el tono final.',
145
+ },
146
+ {
147
+ question: '¿Que hago si no escucho ningun sonido?',
148
+ answer: 'Asegurate de que la pestaña del navegador tenga permiso de audio y vuelve a hacer clic en Reproducir sonido.',
149
+ },
150
+ ],
151
+ howTo: [
152
+ {
153
+ name: 'Selecciona un patron de sonido',
154
+ text: 'Elige Explosion, Laser, Salto, Moneda o Potenciador en el banco rapido.',
155
+ },
156
+ {
157
+ name: 'Moldea la senal',
158
+ text: 'Ajusta los controles de forma de onda, tono, barrido, duracion, decaimiento y textura.',
159
+ },
160
+ {
161
+ name: 'Escucha el resultado',
162
+ text: 'Haz clic en Reproducir sonido para comprobar la sintesis en vivo.',
163
+ },
164
+ {
165
+ name: 'Descarga el archivo WAV',
166
+ text: 'Haz clic en Descargar WAV para obtener un archivo PCM mono de 44.1 kHz y 16 bits.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'Generador de Efectos de Sonido Retro 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: '¿El generador sube mis sonidos a un servidor?',
189
+ acceptedAnswer: {
190
+ '@type': 'Answer',
191
+ text: 'No. La sintesis, la vista previa y la codificacion WAV se realizan en el navegador.',
192
+ },
193
+ },
194
+ ],
195
+ },
196
+ {
197
+ '@context': 'https://schema.org',
198
+ '@type': 'HowTo',
199
+ name: 'Cómo crear un efecto de sonido retro para juegos',
200
+ step: [
201
+ {
202
+ '@type': 'HowToStep',
203
+ name: 'Selecciona un patrón de sonido',
204
+ text: 'Elige un preajuste rápido.',
205
+ },
206
+ ],
207
+ },
208
+ ],
209
+ bibliographyTitle: 'Referencias y lecturas recomendadas',
210
+ bibliography: bibliographyEntries,
211
+ };